小程序开源框架选型及原理介绍

article/2025/11/10 1:16:04

目前比较流行的小程序开源框架有京东的Taro、dclound的uni-app(集成mpvue)、美团的mpvue和腾讯的wepy。下面我们就从各方面对比这4个框架。

选型

社区生态

以下数据通过 Github Statistics 获得

  1. 维护状态

可以看到uni-app和taro近期还有更新,而wepy和mpvue最新提交已经是几个月前。
在这里插入图片描述
2. Star

截止2021年10月27日,整体情况如下图。从图中可以看到,后起之秀uni-app和taro处于领先地位。
在这里插入图片描述

框架Star 数量Star 平均增长量
wepy2156611.93
uni-app3405128.32
mpvue2037215.32
taro2985423.01
  1. Issues

issues可以反应社区的活跃程度。可以看到taro的issue遥遥领先,表明taro社区非常活跃。由于Bug标签是用户自己打上的,相对不是那么准确,但也能看出uni-app反馈bug较多。
在这里插入图片描述

框架Issues 打开/关闭bug标签 打开/关闭
wepy344 / 17819 / 51
uni-app827 / 185524 / 147
mpvue422 / 12643 / 22
taro850 / 70637 / 76

框架能力

tarouni-appmpvuewepy
语法规范nerv、react、vue规范vue规范vue规范类vue规范
模版系统JSX字符串模版字符串模版字符串模版
类型系统业务代码+jsx模版业务代码业务代码业务代码
组件规范小程序组件小程序组件html标签+小程序组件小程序组件
样式规范postcss、sass、less、styluspostcss、sass、less、styluspostcss、sass、lesssass、less、stylus
组件化react、vue组件化vue组件化vue组件化自定义组件化
多端复用复用为H5复用为H5复用为H5复用为H5
自动构建内建构建系统+webpack内建构建系统+webpackwebpack内建构建系统
上手成本熟悉react\vue熟悉vue熟悉vue熟悉vue+wepy
数据流管理reduxvuexvuexredux

针对每个场景,都可以用原生写出性能最佳的代码,但是这样ROI太低。框架的优势在于:书写更有效率的代码、拥有更丰富的生态的同时,拥有不错的性能。

从社区生态和框架能力上来看,Taro是最优秀的。

实现原理

Taro 1/2 (重编译时、轻运行时)

为了实现兼容多个小程序,分为两个阶段:

  • 编译阶段:通过babel转换成指定小程序的模板;

  • 运行阶段:通过运行时框架,负责适配各端的底层能力。
    在这里插入图片描述

这种方案有几个缺点:

  • JSX 太过灵活,适配成本高。(虽然可以引入react的解析,但Taro怎么能用React的东西「狗头」)。
  • 不⽀持 source-map。因为Taro会对源码进行转换,所以source-map无法起作用。(可以在转换过程中处理,但是成本太高,ROI低)
  • 强绑定React DSL,一旦React有新特性,也需要适配。作为开发者只能升级,才能用新特性。
  • 因为需要频繁操作AST,所以编译速度会更慢。

Taro 3.x (轻编译时,重运行时)

借鉴React和Vue等框架设计,在不同平台中实现render需要的相关API。在小程序端模拟实现 DOM、BOM 相关API ,让前端框架直接运行在小程序环境中,从而达到小程序和 H5 统一的目的。而对于生命周期、组件库、API、路由等差异,通过定义统一标准,各端负责各自实现的方式来进行抹平。
在这里插入图片描述

因为架构上的调整,Taro 3 开始不再跟某一 DSL 强绑定,开发更加灵活,编译速度更加快。

版本区别

Taro 1/2Taro 3.x
开发体验强绑定React DSL,且部分JSX语法不支持(需要hack)不受DSL限制
性能应用复杂,页面节点多、大规模数据更新频繁场景下更优上述场景会薄弱一点,但官方说性能差异不明显。而且也提供了预渲染和虚拟列表组件等解决方案
社区支持力度Taro 1/2 继续维护,但是人力相对较少研发重心放在Taro 3,优先落地新特性

参考文档

小程序开发:用原生还是选框架(wepy/mpvue/taro/uni-app)-- 第1季 - DCloud问答

2020年GitHub上最受欢迎小程序框

小程序框架对比(Taro VS uni-app)

小程序开源框架选型-InfoQ

微信小程序开发框架对比 - Taro vs Remax

Github Statistics

Taro Next 的前世今生

Taro原理总结

Taro 版本升级权威指南 | Taro 文档


http://chatgpt.dhexx.cn/article/bHDFFRZb.shtml

相关文章

微信小程序云开发开源项目:在线捐赠功德箱

环境说明 开发工具:微信开发者工具 调试基础库:2.19.2 目录说明 Project ├─cloudfunctions 云函数文件夹 │ ├─payCallback 微信支付回调函数 │ ├─quickstartFunctions │ │ ├─createCollection │ │ ├─get…

开源微信共享记账小程序

开源微信共享记账小程序 jizhang介绍先体验一下?为什么又是一个记账小程序?功能介绍软件架构使用门槛安装教程部分截图项目地址 jizhang 云雀记账 介绍 一款简单的微信共享记账小程序,后端使用的是PHP。 先体验一下? 为什么又…

功能全面的开源小程序商城-CRMEB

前言 在一个月黑风高的搜索小程序开源商城的下午,突然三个火的标志领入眼帘, 没错,就是它, 打开了我对开源小程序,而且功能这么全面的开源小程序商城的认知,我们来认识一下它吧! 功能全面 话…

外卖扫码点餐全开源小程序源码

介绍: 本系统应用场景是小店或外卖店使用,如快餐店,奶茶店,外卖店等 系统特点: 扫码点餐:常见扫码点餐,吧台扫码,店内餐桌扫码 小票打印:对接三方小票机,打印…

开源小程序商城推荐-支持所有小程序平台

线下商家都在努力的寻求转型,特别是在经过了这段"特殊时期"之后,大家都意识到完成线上线下的连接有多么重要。现在很多电商平台是饱和状态,到处都是红海品类。走线上,获取私域流量非常重要。小程序商城是获取私域流量的…

外卖扫码点餐独立全开源小程序源码+VUE前端

本系统应用场景是小店或外卖店使用,如快餐店,奶茶店,外卖店等 系统特点:扫码点餐:常见扫码点餐,吧台扫,店内餐桌扫吗 小票打印:对接三方小票机,打印小票语音播报 自定…

Github上优秀的开源小程序汇总

Github上优秀的开源小程序汇总 有什么小程序适合个人开发? 工具类的小程序非常适合个人开发,用云开发模式开发成本很低,能够快速上线,唯一的缺点是个人无法接入支付,变现渠道受限,目前只能通过流量主变现。…

分享12个优秀的微信小程序开源项目

欢迎搜索个人微信公众号:楠哥毕设帮 提供个人二开项目源码、部署讲解、论文指导~ 全文概览: wechat-app-mall:微信小程序商城;Vant Weapp:小程序 UI 组件库;iView Weapp:小程序 UI 组件库&…

推荐 4 个开源小程序

Hi~~大家下午好~~ 一个好消息:还有几个小时就要下班了!!!哦耶~ 预祝大家周末愉快~~ 回归正题~本文推荐几个开源微信小程序,这个开源的小程序都是 Recently updated,下载下来部署就能使用的。 本期推荐开源项…

html如何导入css和js文件

html如何导入css和js文件 1.导入js文件 <script type"text/javascript" src"js文件路径"></script>加入上述代码&#xff0c;即可导入js路径指向的js文件 2.导入css文件 在html的head体里加入下面这行代码即可导入css文件 <link rel&q…

页面引入JS的四种方式

最常用的是前面的三种. 行内引入: 内部引入: 需要一个标签<script></script>引入js 注意事项: 外部引入: 创建一个独立的外部 js 文件, 用 <script></> 标签引入. 使用他的src 属性引用对应的Js文件 script标签可以引入多次. 在一个Html 中可以有…

html中的JavaScript

JavaScript ——简介 JavaScript 是目前最流行脚本语言&#xff0c;简称 JS。JavaScript 编写在 HTML 页面中&#xff0c;由浏览器负责解释和执行&#xff0c;JavaScript 通常用来给 HTML 页面增加交互能力。 JS可以给html带来的功能&#xff1a; 为页面增加动画效果 验证表单输…

在 HTML 中引入 vue.js 写页面

突然说要写两个页面&#xff08;只有两个页面&#xff0c;不是一个完整的项目。。&#xff09;&#xff0c;有点懵&#xff0c;不知道从哪下手&#xff0c;而且只对 vue 熟悉那么一丢丢&#xff0c;其他框架不是很熟悉。但是没办法鸭&#xff0c;只能硬着头皮去做了&#xff01…

html 中引入外部 css 、js 文件

1. 引入 css 文件 引入外部 css 文件代码如下&#xff0c;css文件引入代码应放在 <head></head> 中。 <!-- 本地相对路径&#xff0c;" ../ "是上翻一个目录级&#xff0c;样例如下&#xff1a;导入本地 index.css 文件 --> <!-- 目录级的解释…

js_js引入到html文件中

一.变量提升 JavaScript 引擎的工作方式是&#xff0c;先解析代码&#xff0c;获取所有被声明的变 量&#xff0c;然后再一行一行地运行。这造成的结果&#xff0c;就是所有的变量的声 明语句&#xff0c;都会被提升到代码的头部&#xff0c;这就叫做变量提升 &#xff08;hoi…

1.如何在HTML5中引入js文件

在HTML5中引入js文件有两种方式如下&#xff1a; 新建一个html5文件&#xff0c;输入以下代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><!-- 内部js-->…

html引入js文件

html引入js文件 在开发中我们常常会用到全局变量&#xff0c;通过修改public里面的js文件去修改变量&#xff0c;问题是我们怎么在html中引入这个文件&#xff0c;使文件在整个项目中起作用尼&#xff1f; 代码 <script src"<% BASE_URL %>js/config.js"&…

Web前端 | HTML嵌入JS代码的三种方式

✅作者简介&#xff1a;一位材料转码农的选手&#xff0c;希望一起努力&#xff0c;一起进步&#xff01; &#x1f4c3;个人主页&#xff1a;每天都要敲代码的个人主页 &#x1f525;系列专栏&#xff1a;Web前端 目录 一&#xff1a;JavaScript概述 二&#xff1a; HTML嵌入…

如何在HTML网页引入JavaScript

方式一: 在HTML网页内,书写script标签,里面定义js代码 缺点: 1.js代码不能重复使用(不能在其他网页里使用) 2.HTML标签和js代码耦合,不便于后期维护修改 优点: 1.HTML网页和js代码写在一起,便于阅读和测试 小结:在开发环境中使用方式一(编写阶段) 方式二: 1.在外部定义…

C语言分段函数计算

#include <stdio.h> #include <math.h> int main() { float x,y,a;printf("请你输入x的值:\n");scanf("%f",&x);if (x<-300)y-1;if (x>300)y-1;elsey(x*x*x)/log10(x2.6) ;printf("f(%0.03f)%0.03f",x,y);return 0; }