GraphQL + React React + 微信小程序+ Taro+ Taro-ui

用 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 原文,安装使用请遵循项目开源协议。