小程序开发:用原生还是选框架

原文链接:小程序开发:用原生还是选框架

小程序开发:用原生还是选框架

本文从面向用户、面向开发者两大维度七大细项,对微信原生及主流的wepy、mpvue、taro、uni-app开发框架进行横向对比。

面向用户、面向开发者维度,具体包括:
1. 用户:提供完整的业务实现,并保证高性能体验。
2. 开发者:平缓的学习曲线、现代开发体验(工程化)、高效的社区支持、活跃的开发迭代、多端复用。

1. 用户

1-1. 功能实现: 【出发点:小程序在不断的迭代升级,如果某项业务依赖于最新的小程序 API,但三方框架尚未封装,该怎么办?】

框架 描述
wepy 未对小程序 API 作二次封装,API 依然使用微信原生的,框架与微信小程序是否新增 API 无关
mpvue 支持微信的所有原生组件和 api,无限制。同时框架封装了自己的跨端 API,使用方式类似mpvue.request()
taro 支持微信的所有原生组件和 api,无限制。同时框架封装了自己的跨端 API,使用方式类似Taro.request(),支持 Taro 代码与小程序代码混写(链接),可通过混写的方式调用框架尚未封装的小程序新增 API
uni-app 支持微信的所有原生组件和 api,无限制。在跨端方面,即便仍然使用微信原生的组件和 API,也可以直接跨端编译到 App、H5、以及支付宝百度头条等小程序。但为了管理清晰,推荐使用 uni 封装的 API,类似uni.request()。同时支持条件编译(链接),可在条件编译代码块中,随意调用各个平台新增的 API 及组件

结论:三方框架均可调用所有小程序 API,完成用户的业务需求,这个维度各框架是无差别的。

1-2. 性能

长列表加载到渲染完成
组件通信到渲染完成

结论:微信原生开发手工优化,uni-app>微信原生开发未手工优化,taro > wepy > mpvue

2. 开发者

2-1. 平滑的学习曲线

框架 DSL支持程度描述 学习资料完整度
微信原生 四不像...要学习新语法 文档丰富,API 搜索准确,官方有示例 demo,支持官网上调起微信开发者工具,预览运行效果 ,详见:传送门
wepy 开发风格接近于 Vue.js,属于类 Vue实现,相对微信原生开发算前进了一大步,但相比完整Vue语法还有较大差距,开发时需要单独学习它的规则 文档只有 2 页,没有搜索,组件 API 等文档都直接看微信的文档。没有提供示例 demo,很多配置需要靠猜。详见:传送门
mpvue mpvue支持的 Vue 语法略少 文档较少,但其概念不复杂,组件 API 等文档都直接看微信的文档,学习难度低。问题搜索效果一般。没有提供示例 demo。详见:传送门
uni-app uni-app 则基本支持绝大多数 vue 语法,如filter、复杂 JavaScript 表达式等 基础文档和各种使用专题内容丰富,问题搜索效果较好,示例 demo 功能完备,并发布为 7 端上线。详见:传送门
taro 对于 JSX 的语法支持度,也达到了绝大多数都支持的完善程度 基础文档完整,具体使用问题资源较少,问题搜索效果一般,示例 demo 只包含基础功能,仅发布了微信一端。详见:传送门

备注:mpvue、uni-app 框架基于 Vue.js 核心,通过修改 Vue.js 的 runtime 和 compiler,实现了在小程序端的运行

结论
DSL 语法支持评测:taro,uni-app > mpvue > wepy > 微信原生
学习资料完善度评测:微信原生 > uni-app > mpvue , taro > wepy

2-2. 现代前端开发体验

通过cli的支持程度、开发工具和语法提示库等的对比

结论:开发体验维度,对比结果:uni-app > taro,mpvue > wepy > 微信原生
友情提示:如果你需要工程化能力,那就直接忘了微信原生开发吧

2-3. 社区支持

社区支持

2-4 多端复用

结论:uni-app > taro > mpvue > 原生微信小程序、wepy

ENDING

如果你只开发微信小程序,不做多端,那么使用uni-app、taro是更优的选择,他们相当于 web 世界的 vue 和 react,有了这些工具,不再需要使用原生 wxml 开发。

  • 如果坚持微信原生开发,需要注意手动写优化代码来控制setdata,并且注意其工程化能力非常弱。
  • 如果你是react系,那就用taro。
  • 如果是vue系,那就用uni-app,uni-app在性能、周边生态和开发效率上更有优势。
  • 如果你开发多端,uni-app和taro都可以,可根据自己熟悉的技术栈选择,相对而言uni-app的多端成熟度更高一些。

你可能感兴趣的:(小程序开发:用原生还是选框架)