前后端分离状态下,如何搭建微信公众号网页的本地开发环境?

26,875次阅读
没有评论

共计 1132 个字符,预计需要花费 3 分钟才能阅读完成。

需求分析

进行微信公众号网页开发的时候,微信平台一般有如下几个要求:

  1. 必须是 https 协议
  2. 通过验证的可信域名

开发过程中一般有如下几个需求:

  1. 本地开发,正常调用微信 API,实时调试。
  2. 和正常浏览器一样的开发体验。

开发环境配置

1. 基础设置

构建工具都自带了 web 服务器,但是对于配置 https 以及自定义域名不是很友好。所以一般通过反向代理来实现自定义域名以及 https:

假设开发服务器地址为:http://192.168.2.3:8081,通过 Nginx 进行反向代理,Nginx 配置如下:

location / {proxy_pass http://192.168.2.3:8081;}

将指定域名解析到局域网 IP 或者 127.0.0.1,然后绑定到本地 Nginx 站点,这样就可以通过 Nginx 绑定的指定域名访问开发服务器了。

然后把这个域名添加到微信公众号的可信域名,同时在 Nginx 配置好 https。

此时已经可以在微信开发者工具内,正常访问开发环境,并调用微信 js Api。

2. 问题解决

通过反向代理服务器访问后,会导致用于实时刷新的 websocket 无法正常链接,所以我还需要对开发服务器的 websocket 进行反向代理。

为了避免和上一个反向代理配置产生冲突,我们需要对 websocket 的访问地址进行一些调整,vite 配置为例:

server: {
        host: "0.0.0.0",
        port: 8081,
        hmr: {
            path: "/ws",
            /* 指定客户端热重载的端口 */
            clientPort : 443
        }
}

上面将 websocket 地址调整到了 ws 目录,所以可以在 Nginx 内新增一个配置块进行反向代理:

location /ws {
     proxy_pass http://192.168.2.3:8081;
     proxy_http_version 1.1;
     proxy_read_timeout 3600s;
     proxy_send_timeout 300s;
     proxy_set_header Upgrade $http_upgrade;
     proxy_set_header Connection "upgrade";
}

Ok,大功告成!尝试一下你会发现微信公众号网页开发原来也可以如此丝滑!

本地开发环境对于 jssdk 权限注入需要的参数,可以通过服务端接口来获取。

vite 开发环境的所有代码都是通过 main.js 展开的,可以在服务端页面指定完整 URL 直接引入这个 js,最终效果跟开发环境是一致的,同时还结合了服务端

3. 手机端访问

将手机(wifi)和用于开发的电脑连接到同一个局域网,将指定域名解析到你本地的局域网 IP,一切准备妥当之后,可以直接在手机微信端访问本地开发环境的服务器地址。

相关拓展

同样的企业微信开发也可以通过同样的方法来实现上述需求!

    正文完
     0
    Yojack
    版权声明:本篇文章由 Yojack 于2023-02-17发表,共计1132字。
    转载说明:
    1 本网站名称:优杰开发笔记
    2 本站永久网址:https://yojack.cn
    3 本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行删除处理。
    4 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
    5 本站所有内容均可转载及分享, 但请注明出处
    6 我们始终尊重原创作者的版权,所有文章在发布时,均尽可能注明出处与作者。
    7 站长邮箱:laylwenl@gmail.com
    评论(没有评论)