wepy vs mpvue
数据流管理
相比传统的小程序框架,这个一直是我们作为资深开发者比较期望去解决的,在 Web 开发中,随着 Flux、Redux、Vuex 等多个数据流工具出现,我们也期望在业务复杂的小程序中使用。
WePY 默认支持 Redux,在脚手架生成项目的时候可以内置
Mpvue 作为 Vue 的移植版本,当然支持 Vuex,同样在脚手架生成项目的时候可以内置
组件化
如果你和我们一样,经历了从无到有的小程序业务开发,建议阅读【小程序的组件化开发】章节,进行官方语法的组件库开发(从基础库 1.6.3 开始,官方提供了组件化解决方案)。
- WePY 类似 Vue 实现了单文件组件,最大的差别是文件后缀 .wpy,只是写法上会有差异,具体可以查看【主流框架使用案例 1:WePY】章节,学习起来有一定成本,不过也会很快适应:
export default class Index extends wepy.page {}
- Mpvue 作为 Vue 的移植版本,支持单文件组件,template、script 和 style 都在一个 .vue 文件中,和 vue 的写法类似,所以对 Vue 开发熟悉的同学会比较适应。
工程化
所有的小程序开发依赖官方提供的开发者工具。开发者工具简单直观,对调试小程序很有帮助,现在也支持腾讯云(目前我们还没有使用,但是对新的一些开发者还是有帮助的),可以申请测试报告查看小程序在真实的移动设备上运行性能和运行效果,但是它本身没有类似前端工程化中的概念和工具。
- wepy 内置了构建,通过 wepy init 命令初始化项目,大致流程如下:
- wepy-cli 会判断模版是在远程仓库还是在本地,如果在本地则会立即跳到第 3 步,反之继续进行。
- 会从远程仓库下载模版,并保存到本地。
- 询问开发者 Project name 等问题,依据开发者的回答,创建项目。
- mpvue 沿用了 vue 中推崇的 webpack 作为构建工具,但同时提供了一些自己的插件以及配置文件的一些修改,比如:
- 不再需要 html-webpack-plugin
- 基于 webpack-dev-middleware 修改成 webpack-dev-middleware-hard-disk
- 最大的变化是基于 webpack-loader 修改成 mpvue-loader
- 但是配置方式还是类似,分环境配置文件,最终都会编译成小程序支持的目录结构和文件后缀。
综合比较
对比\框架 | 微信小程序 | mpvue | wepy |
---|---|---|---|
语法规范 | 小程序开发规范 | vue.js | 类vue.js |
标签集合 | 小程序 | htm l + 小程序 | 小程序 |
样式规范 | wxss | sass,less,postcss | sass,less,styus |
组件化 | 基础库@2.2.3自定义组件 | vue规范 | 自定义组件规范 |
多段复用 | 不可复用 | 支持h5 | 支持h5 |
自动构建 | 无自动构建 | webpack | 框架内置 |
上手成本 | 全新学习 | vue 学习 | vue 和 wepy |
数据管理 | 不支持 | vuex | redux |
选型的个人看法
先说结论:选择 mpvue。
wepy vs mpvue。
理由:
工程化原生开发因为不带工程化,诸如NPM包(未来会引入)、ES7、图片压缩、PostCss、pug、ESLint等等不能用。如果自己要搭工程化,不如直接使用wepy或mpvue。mpvue和wepy都可以和小程序原生开发混写。参考mpvue-echart,参考wepy。而问题在于wepy没有引入webpack(wepy@2.0.x依然没有引入),以上说的这些东西都要造轮子(作者造或自己造)。没有引入 Webpack 是一个重大的硬伤。社区维护的成熟 Webpack 显然更稳定,轮子更多。
维护wepy 也是社区维护的,是官方的?其实 wepy 的主要开发者只有作者一人,附上一个contrubutors链接。另外被官方招安了也是后来的事,再说腾讯要有精力帮着一起维护好 wepy,为什么不花精力在小程序原生开发上呢?再来看看 mpvue,是美团一个前端小组维护的。
学习成本Vue 的学习曲线比较平缓。mpvue 是 Vue的子集。所以 mpvue 的学习成本会低于 wepy。尤其是之前技术栈有学过用过 Vue 的。
未来规划mpvue 已经支持 web 和小程序。因为 mpvue 基于AST,所以未来可以支持支付宝小程序和快应用。他们也是有这样的规划。
请在需求池下面自己找
坑两者都有各自的坑。但是我觉得有一些wepy的坑是没法容忍的。比如repeat组建里面用computed得到的列表全是同一套数据而且1.x是没法解决的。wepy和mpvue我都开发过完整小程序的体验下,我觉得wepy的坑更多,而且wepy有些坑碍于架构设计没办法解决。