taro3.x + tailwindcss + zustand微信小程序模板

写在前面

本项目没有适配多端,只是为了微信小程序开发搭建的模板项目。

对其他小程序的适配可以自行比较官方示例仓库添加依赖和代码,除了H5以外的适配都比较简单。

背景

近期有微信小程序开发需求,主管让我们进行技术选型、编写开发指引和规范文档。这里记录一下我们的技术选型过程,并分享一个空的只包含主要依赖工具的模板项目供开发朋友们参考。

技术选型

框架 UI库 样式方案 状态管理
Taro3.x(React18、Webpack5) @antmjs/vantui weapp-tailwindcss zustand

原生 or Taro or uni-app

毫无疑问,对于没有跨端需求的我们,写原生必然是性能和可扩展性最好的方案。uni-app也是大多数人首选的小程序开发框架,对比Taro,其拥有更大的使用用户、更丰富的生态,还有我没测试过,但是社区反馈的更好的性能。但是鉴于我们已经存在使用Taro开发的小程序项目没有出现明显的性能短板,且只有Taro支持React写法,另外主管倾向于不引入新的前端框架增加学习成本。所以我们还是选择了使用Taro搭建项目模板。

Taro官方团队已经推出Taro 4.x,支持了vite编译、开发鸿蒙应用等功能。不过鉴于我们对vite编译带来的性能优化(个人感觉很奇怪,当前小程序都是全量编译后才能在开发者工具上运行的,vite的异步加载js的性能优势该怎么体现出来呢?)和鸿蒙等功能没有硬需求,且Taro团队仍会继续就框架的问题修复和性能优化支持维护一段时间,所以还是倾向于选择相对稳定的3.x版本。

UI组件库

在以往的支付宝小程序开发经历中,发现了该@antmjs/vantui组件库对于Taro(React)的支持较好、组件丰富度也比官方推荐的几个组件库优秀,且维护团队回答问题、解决bug很及时。所以在后续的小程序开发中选择采用该组件库作为小程序模板项目的组件库。

模板代码也是参考AntmJS/pure-project-vantui修改而来,对于H5或其他小程序的适配可以参考该工程。

样式方案

我们PC端项目已经很普遍地在使用tailwindcss,原子化CSS带来的开发爽感本人深有体会,果断选择继续引入tailwindcss,官方已经给出了引入方案:使用 Tailwind CSS | Taro 文档。引入weapp-tailwindcss,并按要求配置即可体验。

状态管理

React项目的状态管理工具五花八门。Taro官方文档介绍的是Redux,个人感觉Redux太重、太繁琐,果断转向选择了广受社区好评的zustand,自己也在项目中使用过,配置方便,引入简单,也可以在React之外使用,方便扩展。参考welives大佬的Taro-React工程搭建 | 学习笔记成功引入了zustand,并扩展了可以通过TaroAPI实现持久化的功能。

代码仓库

大致框架代码可以查看 HyaCiovo/taro-wxapp-template: taro3.6 + react18 + @antmjs/vantui + zustand + tailwindcss 微信小程序模板代码

相关推荐
是大林的林吖6 分钟前
解决 elementui el-cascader组件懒加载时存在选中状态丢失的问题?
前端·javascript·elementui
鹏仔工作室6 分钟前
elemetui中el-date-picker限制开始结束日期只能选择当月
前端·vue.js·elementui
一 乐8 分钟前
个人博客|博客app|基于Springboot+微信小程序的个人博客app系统设计与实现(源码+数据库+文档)
java·前端·数据库·spring boot·后端·小程序·论文
sTone8737517 分钟前
Android Room部件协同使用
android·前端
晴殇i22 分钟前
前端代码规范体系建设与团队落地实践
前端·javascript·面试
用户740546399430923 分钟前
Vite 库模式输出 ESM 格式时的依赖处理方案
前端·vite
开发者小天30 分钟前
React中使用useParams
前端·javascript·react.js
lichong95138 分钟前
Android studio release 包打包配置 build.gradle
android·前端·ide·flutter·android studio·大前端·大前端++
nvvas1 小时前
npm : 无法加载文件 D:\nvm\nodejs\npm.ps1,因为在此系统上禁止运行脚本问题解决
前端·npm·node.js
拉不动的猪1 小时前
浏览器之内置四大多线程API
前端·javascript·浏览器