用 Taro + Taro-ui + GraphQL 以 React 语法开发微信小程序端
Taro 让作者用 JSX 语法写小程序,GraphQL 与其他端保持一致的技术栈;但 mp 私货多、devtools bug 多,被列为五端中最难
✓ JSX 语法复用前端经验✓ custom-tab-bar 方案较优 ✕ devtools bug 多需重启✕ Taro 新功能文档缺失
方案简介
leaa-miniprogram 是 leaa monorepo 中的微信小程序端,现已拆分为独立仓库(https://github.com/SolidZORO/leaa-miniprogram)。技术栈为 Taro.js + Taro-ui + GraphQL,让作者能够用 React/JSX 语法来开发小程序,与其余各端保持统一的开发语言。作者认为「如果你用 Taro 同时有 custom-tab-bar 这个需求,leaa 可能是目前全 Github 已有方案的最优解」。但小程序端也被作者评为五端中最难的部分:小程序有很多私货,devtools bug 多得出奇,有时修 bug 修半天没好,重启一下 devtools 就好了。由于小程序不是标准 web 语言,HTML 富文本渲染等 web 天然支持的功能需要自己解析,a 链接的行为也完全由开发者决定,与传统 web 应用是两种概念。
亮点与能力
- 使用 Taro.js 以 JSX 语法开发微信小程序
- UI 组件库使用 Taro-ui
- 通过 GraphQL 与后端 API 通信,与其他端技术栈统一
- 实现了 custom-tab-bar 等新特性(文档缺失下自行摸索)
- 支持富文本等内容的自行解析渲染(如 a 链接点击行为由开发者定义)
组成与分工
- Taro.js (Taro):让开发者用 React/JSX 语法开发小程序的核心框架
- Taro-ui:小程序端 UI 组件库
- GraphQL:小程序与 leaa-api 后端通信的查询语言,与 monorepo 其他端一致
- 微信小程序 (mp):目标运行平台,非标准 web 环境,需处理其特有机制
注意事项与常见问题
- 小程序(mp)被作者列为 5 端难度之首:
mp>app>www>api>dashboard - mp 有很多私货,devtools 也 bug 多得出奇,有时修 bug 修半天没好,重启 devtools 就好了
- 用了 Taro 后,很多新功能比如 custom-tab-bar 没跟上,文档都没有,需要自行摸索
- mp 与 monorepo 完全隔离,node_modules 自有一份无法共享,每份体积都很大,yarn install 非常慢、CPU 狂飙
- 由于特殊机制,小程序端没办法与其他端共享 TS 的 interface 和可复用配置
- 作者建议:如果后面重构代码,会把这类「非标准 web 应用」单独放一个 repo
优缺点
- ✓ JSX 语法复用前端经验
- ✓ custom-tab-bar 方案较优
- ✕ devtools bug 多需重启
- ✕ Taro 新功能文档缺失
出处
本方案挖掘自开源项目 SolidZORO/leaa,方案内容与实施命令均来自其 README 原文。
方案出处
SolidZORO/leaa:Leaa is a monorepo restful CMS / Admin built with Nest.js (@nestjsx/crud, node.j 473 star Leaa is a monorepo restful CMS / Admin built with Nest.js (@nestjsx/crud, node.js) and Ant Design.
本方案由真实开源项目挖掘整理,实施命令均来自其 README 原文,安装使用请遵循项目开源协议。