小程序框架--实例对比

2,642 阅读5分钟

前言

前一段时间为了开发新的微信小程序项目,对开源的几大小程序框架进行了调研,汇总了几大框架的相关资料,根据材料对比分析了几大框架优缺点,但是缺少几大框架的对比实例,最近又做了几个各大框架demo对比,本文主要介绍一下各大框架对微信小程序的兼容性和一些性能数据的对比。

实例

微信原生

小程序包大小:22.868 字节

微信基础库版本:2.6.2 (以下框架相同)

测试数据记录:

内存 页面切换耗时 启动耗时 初次渲染耗时 再次渲染耗时 数据缓存
252m 146ms 1163ms 26ms 94ms 0B
244m 606ms 1293ms 38ms 60ms 0B
256m 159ms 1293ms 26ms 131ms 0B
235m 708ms 1403ms 49ms 58ms 0B
245m 571ms 1163ms 32ms 56ms 0B

Wepy

小程序包大小:131,957 字节

wepy版本:1.6.0

测试数据记录:

内存 页面切换耗时 启动耗时 初次渲染耗时 再次渲染耗时 数据缓存
253m 436ms 1049ms 29ms 35ms 0B
259m 542ms 1340ms 33ms 61ms 0B
267m 466ms 1113ms 22ms 37ms 0B
260m 447ms 1160ms 22ms 50ms 0B
254m 459ms 1036ms 30ms 40ms 0B

使用过程遇到的坑:

1、wepy官网提供的2.x的模板启动报错(无力吐槽-。-)

2、数据绑定方式,需要使用this.$apply()才能生效

this.dateList = dateList
this.$apply()

3、style样式添加变量的方式,1.x的文档没有相关介绍,试了半天方法才正确

style="width: {{dayW}}px;height:20px"

Mpvue

小程序包大小:197,601 字节

mpvue版本:2.0.6

测试数据记录:

内存 页面切换耗时 启动耗时 初次渲染耗时 再次渲染耗时 数据缓存
225m 247ms 896ms 24ms 62ms 0B
239m 253ms 910ms 22ms 58ms 0B
235m 446ms 1591ms 27ms 62ms 0B
237m 269ms 979ms 21ms 60ms 0B
243m 270ms 908ms 23ms 57ms 0B

使用过程遇到的坑:

1、mpvue的官方使用度很低了,百度搜索的第一页没有官网地址-。-

2、mpvue的官方文档没有目录,修改模板的时候查相关资料还得全局搜索,很不方便

3、mpvue的模板和原生的区别很大,完全采用的vue的v-bind等相关语法,如果对vue不熟悉的不好进行修改

Taro

小程序包大小:167,080 字节

taro版本:1.3.2

测试数据记录:

内存 页面切换耗时 启动耗时 初次渲染耗时 再次渲染耗时 数据缓存
246m 231ms 718ms 16ms 224ms 0B
241m 297ms 1007ms 19ms 246ms 0B
246m 256ms 868ms 16ms 288ms 0B
242m 227ms 829ms 17ms 224ms 0B
237m 231ms 869ms 17ms 229ms 0B

使用过程遇到的坑:

1、类class的方法前几个单词不要是render,否则会按render()函数处理,不返回JSX对象会报错

uni-app

小程序包大小:292,831 字节

uni-app版本:2.0.0

测试数据记录:

内存 页面切换耗时 启动耗时 初次渲染耗时 再次渲染耗时 数据缓存
239m 440ms 987ms 34ms 178ms 34B
237m 529ms 1365ms 34ms 182ms 34B
232m 531ms 1133ms 39ms 183ms 34B
236m 487ms 1154ms 32ms 178ms 34B
239m 486ms 1051ms 33ms 190ms 34B

使用过程遇到的坑:

1、官方文档给出的入门指南大部分都是结合HBuildX使用的方法,缺少命令式相关介绍

chameleon

小程序包大小:671,702 字节

chameleon版本:1.0.3

测试数据记录:

内存 页面切换耗时 启动耗时 初次渲染耗时 再次渲染耗时 数据缓存
223m 550ms 1043ms 46ms 60ms 0B
231m 597ms 1326ms 36ms 60ms 0B
225m 631ms 1338ms 37ms 58ms 0B
237m 658ms 1289ms 47ms 68ms 0B
245m 611ms 1241ms 35ms 66ms 0B

使用过程遇到的坑:

1、简单复制的代码存在样式问题,相关开发插件比较少

数据汇总 (平均值)

框架 包大小 内存 页面切换耗时 启动耗时 初次渲染耗时 再次渲染耗时 数据缓存
taro 167,080 字节 242m 248ms 858ms 17ms 242ms 0B
mpvue 197,601 字节 236m 297ms 1057m 23m 60m 0B
uni-app 292,831 字节 237m 495ms 1138ms 34ms 182ms 34B
wepy 131,957 字节 259m 470ms 1140m 27m 45m 0B
chameleon 671,702 字节 232m 609ms 1247ms 40ms 62ms 0B
原生 22.868 字节 246m 438ms 1263ms 34ms 80ms 0B

就包大小而言:原生 < wepy < taro < mpvue < uni-app < chameleon

就微信小程序的性能而言:优化后的原生代码 > taro > mpvue > uni-app > wepy > chamelon > 未优化过的原生代码

总结

各大框架就性能而言比原生的代码要好一些,这是因为各大框架本身都做了一些性能优化,如this.setData重复值不会重复渲染等

本文只是简单写了一个日历式的页面代码,汇总了各框架对微信小程序的性能数据进行了对比,大家在使用各大框架的时候可以根据自己的业务需求去选择框架,如若微信小程序是主要业务方向,个人建议选择原生或者taro

实例对比代码地址:

github.com/cuiyibao/fr…

本文实例代码参考文章:

juejin.cn/post/684490…