wechat

聊聊微信小程序开发框架及一些心得

2422
16
2018-04-24

这阵子因为某些原因又要开始写小程序了。其实写过小程序的人都知道,原生小程序在开发过程中到处都充斥着傻屌的气息
所以这次实在不想继续原生开发。正好时间不是很紧实际上紧得很,怎奈就是手痒
于是试用了3款算是大厂出品的小程序框架。最近比较有空,来简单写下感想

以下内容基于一个前端菜鸡一周多前的记忆整理而成,如有疏漏望友好指出

WePY

说到小程序的框架,第一反应就是这款腾讯出品的、大概是最老牌的框架。它甚至在小程序正式发布前就更新了好几个版本
应该是目前最早、最多人使用的小程序框架了。首页上各种基于WePY的项目也不少,应该趟过不少坑了
文档里还对微信小程序IDE进行了无情的嘲讽:“开发建议使用第三方成熟IDE或编辑器”
看来是腾讯内部人士也对小程序自带的IDE和原生语法架构十分不满,才搞了个这么个玩意儿
果断用它了。根据入门教程用wepy-cli创建项目十分轻松,直接就能跑起来

但是后来我为什么又弃了呢?主要是因为遇到两个坑,我也不知道是我太菜还是WePY的坑,反正是没找到解决方案。具体是啥坑我也不记得了
而且WePY还封装了一层,使得语法并不是原生Vue,只是很相似。封装还导致了一个问题——比如我在app.wpy里添加一个globalData属性用于存储全局变量,然而你在其他页面用getApp().globalData却取不到之类的,有时候就很烦,但是无能为力,文档虽然详细,但有些点就是没说明,很难受
翻了翻WePY的issues,发现还真不少(当然这里面也有用户量大、项目发布早的原因)。比如组件支持的问题还很多。在某个issues里面,一位项目贡献者说WePY是去年才划入腾讯名下的,而且大部分时候还是只有一个人业余维护,并且2.0大版本更新已经在路上了。就感觉现在写1.x像是49年入国军的感觉,姑且先弃了,看2.0的情况吧

mpvue

美团点评出品的小程序框架,在我经常去的社区V2EX上发帖推广过的,自称旗下数款小程序都正在使用/接入
相比WePY的类Vue语法,mpvue的特色在于拥有完整的Vue开发体验,并且也能够支持Vuex
他们未来是希望可以一套代码可以直接跑在多端:WEB、小程序(微信和支付宝)、Native(借助weex)。听起来有点意思
不过目前而言,这个项目最大的问题在于——可能你点开上面链接时就已经发现了,是的,就是文档太拙计了
相比WePY,文档简陋得简直不像话。好在跟着五分钟上手教程还算跑得起来,一切顺利

不过由于文档实在太拙计,遇到了一些问题无法解决。时间又紧,无法等待开发团队答复乃至修复,只好弃掉。

……

我已经面如死灰已经做好了写原生的准备了
不过,就在这时,我发现了——

Min

美丽集团(就是蘑菇街、美丽说所属集团)旗下Min团队推出的小程序框架+组件库。其口号为“让小程序组件化的开发和使用变得高效、愉悦”
看了下文档,比mpvue稍完善些。姑且试试好了
依然是一次过成功的入门教程。尝试了一下上面提到的globalData,令我惊喜的是它似乎比上面两者在实现上更加纯粹,可以通过getApp().globalData来调用,美滋滋
但是它的文档似乎有些问题,有些可能是忘了更新,有些就直接是硬伤了
比如组件库-选项卡这里第一段示例代码,tab的点击事件onClick是写在methods中的,是不是很Vue的感觉?实际上你这么写是要报错的。实际写法就跟原生那样,必须写在跟data属性同级才行。这大概是忘了更新文档?
比如支持 ES6/7 新特性这一节,示例代码中两个方法居然是用;而不是,作为分隔。这代码能跑起来?
好在解决起来不费时间,小坑而已,动手试试就爬出来了,除此之外就没遇到别的坑了
其他特性跟上述两个框架差不多,可以引入NPM包啦、支持async/await之类。不得不说async真是好东西,再也不用写原生傻屌回调了

一些心得

如果你跟我一样懒得手动把小程序自带API全部用Promise封装一遍的话,我推荐你试试这个minapp-api-promise
配套的MinUI也提供了一些不错的组件,但奇怪的是缺失了一些基础组件,比如Button之类的。这个可以用微信官方的WeUI小程序版作为补充
不过这里面又有一个坑——WeUI小程序版里的样式居然是完全用px写死的!这就导致跟MinUI搭配使用时,WeUI的组件变得非常小,几乎无法正常使用
解决方案是手动写CSS覆盖WeUI的一些样式里面的尺寸值
……
那多难受啊?我时间很紧的好吗?
我上去就一个.zoom{ zoom:1.8 },并把这个类加在所有WeUI组件上,完美解决

总的来说,目前而言各框架还是不够稳定成熟,明坑暗坑无数,而且编译后的代码几乎不可读。一旦出问题,对于我等菜鸡几乎只能反馈等待官方修复。所以自己玩玩还行,正式的、大点的项目还是算了吧,大家也要注意这个风险
不过,写起代码来是真TM爽,好比本来要你兼容IE6的项目,突然告诉你说Chrome能跑就行一样

昵称
邮箱
网址
bumad2019的头像 2019-04-26 17:22
bumad2019

mpvue,taro,uni-app的坑都踩过,熟悉vue就用uni-app,熟悉react就用taro

嘿嘿嘿的头像 2018-12-28 16:31
嘿嘿嘿

博主之前写什么后端的?

mokeyjay的头像 2018-12-31 22:42
mokeyjay 博主

PHP呀

风流鼠博客的头像 2018-11-29 00:00

看着这能写小程序的博主,厉害到爆的样子,没技术的只有各种羡慕了。网站的配色也非常的好,第一次来,收藏了。

吐太阳的小葵花的头像 2018-06-10 22:39

哈哈,看完都笑出声了。。同样写原生的土著路过。。wepy这玩意儿我用过一个下午,迅速放弃。转投原生+ZanUI。。。

广树的头像 2018-04-26 08:51

一直写小程序原生代码的土著路过……

mokeyjay的头像 2018-04-26 09:28
mokeyjay 博主

为公司写过一个原生小程序,难受的点太多了。所以这次任务直接折腾起来

Sonic853的头像 2018-04-25 14:19

还没试过微信小程序(:з」∠)

mokeyjay的头像 2018-04-25 14:23
mokeyjay 博主

玩玩还行

小白-白的头像 2018-04-25 08:40
小白-白

然后你变成了前后端通吃大佬 嘤嘤嘤

mokeyjay的头像 2018-04-25 09:20
mokeyjay 博主

不不不可能的,分明是变成两边都会都不精通的辣鸡

小白-白的头像 2018-04-25 09:42
小白-白

大佬谦虚了

yoz的头像 2018-04-24 18:30
yoz

基酱你变了

GIUEM的头像 2018-04-24 17:59
GIUEM

哇,我记得你不是后端开发的么,,什么时候转前端了

mokeyjay的头像 2018-04-24 18:02
mokeyjay 博主

因为近几年认识的都是前端大佬,受刺激了……他们都能搞出好多好漂亮的东西我却不行嘤嘤嘤……
主要是这几年前端发展很快,有了很多很有意思的东西。而且写腻了CRUD
也是想趁着年轻多看看其他路子,没必要吊死在后端上

teyra的头像 2019-09-16 10:05
teyra

我就是前端菜鸡,确实前端更新换代太快了。最近想搞微信小程序,又不想用原生,总而言之,框架这东西更有利弊,加油哟!