> 重申下 `wx-open` 的意义:仅作为官方开源版本的一种本地化部署方案。三方平台开放的接口越来越多,每个用户用到的接口和使用场景也不太相同,推荐的二次开发方式『利用`wx-open`项目提供的 `token` 接入其他三方接口』。前端单独部署原理是用 `NGINX` 把自己业务系统 `API` 相关路由的转发到其他端口。
### 前端源码
> 如果想在一个系统中完成其他前端页面,可以下载下面这个版本
[Github-wx-open-frontend](https://github.com/doodolabs/wx-open-frontend)
### 使用方法
> `config.toml` 的 `IS_API` 为 `true`,则 `NGINX` 配置需要调整成下面方式,此时前端项目发布不在需要重启 `API` 服务;如果为 `false`,则项目目录结构必须按照原来的结构(参考 `wx-open` 老版本),但 `client/dist` 目录可以替换成自己 `build` 后的文件。- 下载最新 `wx-open-api.tar.gz` API,修改 `config.toml`,新增 `IS_API=true`,否则会启动失败。
- 如果自己重新发布前端项目,自己只`build`前端代码即可,无需重启接口服务(强烈建议前后端分开部署,要么每次修改代码都得重启`wx-open`)
### Nginx参考
```bash
server {
listen 443 ssl;
server_name wx-open.com;
root /www/wx-open/dist;
ssl_certificate /ssl/xxx_bundle.crt;
ssl_certificate_key /ssl/xxx.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
access_log /var/log/nginx/wx-open.access.log;
error_log /var/log/nginx/wx-open.error.log;
client_max_body_size 200m;
location ~ ^/(wxcomponent|wxcallback)/ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto https; #
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Host $remote_addr;
proxy_pass http://xxx.xxx.xx.xx:8666;
}
}
```
### 二次开发思路
- 首先要把上面的 Go的Api(后面统称wx-open)部署好,主要是让微信平台 `callback`,稳定提供最新的小程序token。比如配置的域名是 `wx-open.com`
- 本地用自己常用的开发语言(随便python/node/go/php/java) 起一个web服务(假设端口 `8668`),在 `nginx` 配置匹配到 `wx-open.com/api/python` 这个`uri`开头的服务都代理到 `8668`
- **方案一** 想用一套前端代码把所有三方平台的接口都接了
- 上面前端代码下载。`fork` 后,自己本地开发即可
- 前端在本地用 `npm run dev` 就可以调试了
- 连老接口用 `wx-open.com`
- 连自己新开发的接口用 `wx-open.com/api/python/xxxx`
- **方案二** 不想维护官方的前端代码,自己其他的业务逻辑都写到别的前端项目。
- 新起一个前端项目,其他开发思路同方案一。优点:新项目可以随便用`Vue`、`React`以及其他UI组件库
> TODO::有问题留言,尽量把问题描述清楚,如果问题解决了也可以把解决方案留言,方便其他小伙伴排查问题,相关文档后续补充
补充下官方原版+云托管的两种开发思路: