又是一年四月天,距离上次发布跨端开发框架深度横评已过去整整一年。
这一年,小程序在用户规模及商业化方面都取得了极大的成功。微信小程序日活超过3亿,支付宝、百度、字节跳动小程序的月活也纷纷超过3亿。
对应小程序开发领域,这一年也发生了巨大变化。开发框架从单纯的微信小程序开发,过渡到多端框架成为标配,进一步提升开发效率成为开发者的强烈需求。
这一年 mpvue
停止更新,Taro
开始探索 taro next
,uni-app
产品和生态持续完善,微信新推出了支持H5和微信小程序的 kbone
框架…
去年的深度横评中很多老将已经退出江湖,一些新秀吸引眼球,因此,是时候来一波2020版的新横评了。
评测目标筛选
跨端框架是一个重投入工作,在各框架的1年多的比拼中,很多框架因为投入不足而逐渐被开发者放弃,uni-app
和taro
依靠持续的大力度投入,成为了市场主流。
taro
在稳定版的基础之上,最近也推出了 taro next
,这2个版本差异较大,本次会分别评测。
kbone
框架虽面世不久,但毕竟是微信官方发布,关注的人不少,故本次将 kbone
加入评测目标。
所以,本次评测的对象(按发布时间排序):
- 微信原生开发
- taro,京东凹凸实验室出品,官网地址:https://taro.jd.com/
- uni-app,DCloud出品,官网地址:https://uniapp.dcloud.net.cn
- kbone,腾讯微信团队出品,官网地址:https://wechat-miniprogram.github.io/kbone/docs/
本次评测除了运行性能等实测数据外,尽可能得通过框架官网及github、掘金、腾讯课堂等三方社区公开采集数据,希望给大家一个综合全面的评估依据。
功能实现
taro
和 uni-app
是比较典型的多端框架,发布到各个端均可。而 kbone
只支持微信小程序和H5。
taro
和 uni-app
均将常用接口及组件封装了成了跨端API和跨端组件,组件规范沿用微信小程序的规范,部分平台特有API,这两个框架亦有应对方案:
taro
和 uni-app
可以不受限的调用各家小程序平台所有的API及组件。
kbone
沿用web
的开发习惯,使用html
标签及js api
;涉及微信特有api时,可通过process.env.isMiniprogram
判断环境,然后编写微信原生代码。对于html
中没有标签可替代的微信内置组件(如swiper
),需要使用 wx-component
标签或者使用 wx-
前缀,这样的内置组件会被包裹一层自定义组件,带来相应的性能开销。
除了接口、组件之外,我们以微信小程序为例,找几个典型能力对比框架支持度:
框架 | taro | uni-app | kbone |
---|---|---|---|
微信自定义组件 | ⭕️ | ⭕️ | ⭕️ |
三方插件 | ⭕️ | ⭕️ | ❌ |
分包加载 | ⭕️ | ⭕️ | ⭕️ |
sitemap | ⭕️ | ⭕️ | ⭕️ |
wxs | ❌ | ⭕️ | ❌ |
云开发 | ⭕️ | ⭕️ | ⭕️ |
补充说明:
- 如果在 Taro 项目引用了小程序原生的第三方组件,那么该项目将不再具备多端转换的能力,例如,如果使用了微信小程序的第三方组件,那么项目只能转换成微信小程序,转义成其他平台会失效,详见taro官网
- uni-app 中使用微信自定义组件的话,支持编译发行到App/H5/微信小程序/QQ小程序4个平台,详见uni-app官网
- taro 不支持 wxs 的依据:#2959
- kbone 不支持微信三方插件的依据:#58;不支持wxs的依据:#129
- 云开发在微信平台,三个框架都支持,但 taro/kbone仅支持微信小程序平台,uni-app支持
App/H5/小程序
所有平台使用云开发,详见下方serverless/云开发
章节。
wxs
是提升性能体验的重要利器,除了微信小程序的wxs
外,还有支付宝的SJS
、百度的Filter
,这些高级技术 uni-app
均完善支持。参考:谜之wxs,uni-app如何用它大幅提升性能
从如上功能对比来看:微信原生 ~ uni-app > taro > kbone