目前,还在维护的跨端小程序框架主要有 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小程序
两者都有较为完善的文档,taro 文档 UI 设计较 uniapp 偏现代化,支持深色模式,问题反馈主要由QQ群、微信群、GIthub Issue组成,
项目
下面以一个简单的页面编译到微信小程序为例
使用的依赖包有unplugin-auto-import、unplugin-vue-components、unocss、pinia、unocss - presetIcons、vueuse/core
编译结果如下:
框架 | 编译框架 | 编译速度(取10次平均值) | 默认构建产物 | 构建时长 |
---|---|---|---|---|
Taro 3.4 | webpack v4 | 12.108s | 481kb | 15.629s |
Taro 3.5 beta | webpack v5 | 6.585s | 266kb | 12.024s |
Uniapp 3.0 alpha | vite v2.9 | 1.817s | 79kb | 5.7s |
Taro 3.5
Taro 3.5相比上个版本 3.4,提升很明显,几乎提高了一半的性能,但目前处于公开测试期间,老项目升级的话有一定成本。Taro 3.5 构建时默认使用 terser
,虽然它现在支持使用 esbuild
,但打包esnext
目标后体积增大 33% 左右,换成es2015
、es2016
后,与esnext
变化不大
优点:开发和真机效果一样、Typescript 类型声明完善
缺点:热更新无效(需要手动刷新)、Composition API 无效、beta 版本刚发布
Uniapp 3.0
Uniapp 3.0 处于内部测试有很长一段时间了,相对来说,几乎各项数据都比 taro 要好,但仍然有需要考虑的地方,uniapp 从编译速度来看几乎可以说是无感知,但这并不是最终消耗的时间,如果是web端,可以做到实时更新,但小程序需要等微信开发者工具编译完成,这个时间也需要5 - 10秒。uniapp 使用 vite(rollup)打包后仅79kb,这意味着在2M的限制下使用 uniapp 进行开发,可以开发更多的功能,但是在项目不大的情况下,通过分包可以忽略这个特性
优点:编译速度快,构建产物体积小
缺点:开发和真机效果不一致(canvas 动态设置宽高,CSS样式)、频繁出现FSWatcher
错误导致需要重新编译、Typescript 类型声明支持很差
总结
综上所述,带来差异的根本原因是 vite(rollup) 和 webpack 的打包方式不同,vite 旨在成为下一代前端开发与构建工具,而实际上是否使用和 vite 类似的打包方案,已经成为区分是不是下一代前端项目的标准了,vite 的出现也让越来越多的框架工具开始考虑支持脱离框架本身了。
评论 (0)