前言:
目前我们开发小程序,如果在只考虑性能的情况下,最优的还是选择原生小程序,但是如果考虑多端一套代码的话,原生小程序就无法满足需求,目前还在持续更新并效果比较优秀的有 taro 与 uni-app 。
介绍:
自 2017-1-9
小程序诞生以来,历经多年的迭代升级,上线小程序现在非常多,成为继 Web、iOS、Android 之后,第四大主流开发技术
框架选型:官方入口
原生小程序优点:
官方支持,性能开发最好
原生小程序的不足之处:
- 原生开发对 Node、预编译器、webpack 支持不好,影响开发效率和工程构建流程
- 微信定义了一个不伦不类的语法,不如正经学 vue、react,学会了全端通用,而不是只为微信小程序
- vue/react 生态里有太多周边工具,可以提高开发效率,比如 ide、校验器、三方库。。。
- 微信那个 ide 和专业编辑器相比实在不好用
框架方面:Taro 和 Uniapp 对比
框架 | 版本 | Issues(open) | 总提交 |
---|---|---|---|
Taro 3.4.x | 3.4.11 | 825 | 8076 |
Taro 3.5.x | 3.5.0-beta.2 | 825 | 8310 |
Uniapp 3.x | 3.0.0-alpha | 955 | 9699 |
taro 和 uniapp 均支持
H5
、微信小程序
、支付宝小程序
、QQ 小程序
、百度小程序
、字节跳动小程序
、钉钉小程序
、京东小程序
、飞书小程序
、快手小程序
、Android
、iOS
、快应用
,taro 额外支持鸿蒙 OS
,uniapp 额外支持360小程序
相比上个版本 3.4,提升很明显,几乎提高了一半的性能,但目前处于公开测试期间,老项目升级的话有一定成本。Taro 3.5 构建时默认使用 terser
,虽然它现在支持使用 esbuild
,但打包esnext
目标后体积增大 33% 左右,换成es2015
、es2016
后,与esnext
变化不大
优点:开发和真机效果一样、Typescript 类型声明完善
缺点:热更新无效(需要手动刷新)、Composition API 无效、beta 版本刚发布
处于内部测试有很长一段时间了,相对来说,几乎各项数据都比 taro 要好,但仍然有需要考虑的地方,uniapp 从编译速度来看几乎可以说是无感知,但这并不是最终消耗的时间,如果是web端,可以做到实时更新,但小程序需要等微信开发者工具编译完成,这个时间也需要5 - 10秒。uniapp 使用 vite(rollup)打包后仅79kb,这意味着在2M的限制下使用 uniapp 进行开发,可以开发更多的功能,但是在项目不大的情况下,通过分包可以忽略这个特性
优点:编译速度快,构建产物体积小
缺点:开发和真机效果不一致(canvas 动态设置宽高,CSS样式)、频繁出现FSWatcher
错误导致需要重新编译、Typescript 类型声明支持很差
总结:
Taro:react 基础的适合使用
uni-app: vue基础适合使用