我眼中的“微信小程序”

最近几天微信不声不响地推送了“微信小程序”,仅仅一天之后就有了破解版。前端圈里铺天盖地的都是这个话题。

我尝试了一下,做了个小demo,由于太小,几乎就是跟着文档刷了一遍而已。所以就不放出截图代码了。

这篇主要说一下我眼中的“微信小程序”

学习 Vue

写代码的时候很明显能感觉到有 vue 的影子。

每个page分到一个文件夹里面,这个文件夹含有至少三个文件:.wxml, .wxss, .js 还有一个可选的.json分别对应的是 DOM 结构, 样式,控制器,配置文件

完完全全就是vue的template语法的拆解版。

这样做的好处是结构特别的清晰,不像jsx一样,不用什么都写.jsx里面,学习成本就变得很低了。

控制器里面也是有些模仿的意思吧。

Page({
data: {
},
onLoad: function(options){
}
})

其实讲道理没什么模仿吧,毕竟js就是这么写的

融合 React

我很明显地在函数中看到了这样的语法:

this.setData({
foo: 'bar'
})

语法上还是很像的,对吧?

「微信小程序」剖析(二):框架原理 在桌面浏览器上运行的尝试 这篇文章后面有一段讲的是数据变动渲染什么的。说的比较含糊,没看太懂

绑定事件上也比较像react对吧,不过我比较偏爱的是 vue 的语法,很优雅

<button @click="handle">click me</button>

还有点儿 Angular2 的味道

只是在页面文件分成几个部分的时候我嗅到了一些Angular2的味道,把dom和style分开,放到自己当前文件夹里。

好吧,这个理由似乎有点儿勉强 :smile:

特点

我在写代码的时候,感受到的一个最大的特点就是:简单,真的不需要太多的概念,不需要很复杂的工程就能在微信这么一个可能是全世界最大的流量入口做一个可用的小程序。是不是很激动。

每个页面对应一个文件夹,文件夹里一套微信规定好的东西。页面只要填充上微信做好的组件就可以跑起来了,而且还带支付功能!

它所带来的几个特性:

学习成本很低,整个模式对于初学者是很友好的,只要了解了 pattern 就能写代码了,也不用写 native。

也不用像 Angular2, React 那样要先学很多概念才能干活。

我甚至想,微信小程序的简单程度可能直逼 jQuery。

所以培训应该会很容易搞,公司招人也不需要太高的要求了,拉进公司学半天就行了。

微信流量巨大。我之前说过,它可能是全球最大的流量入口了。

关于这一点我想说,微信用户量大总所周知。不仅量大,微信的用户粘度非常强,用户也非常活跃,走在路上很容易看到各种人走两步就刷一下朋友圈,我觉得 Instagram 还没有这么强吧。

流量入口很容易带来高收益,再加上微信支付。我想很多中小型公司,尤其是电商这些的。会很快跟进。

阿里地位岌岌可危。

做出的产品写一遍就能跨平台了。包括没什么产品支持的 windows phone 平台

缺点

简单是好事,也是坏事。

微信小应用实在太简单了。甚至连组件化都没有!

也就是说,所有页面要写一些重复的工作才能看起来是一样的。

复杂的表单,强交互的场景把controller写几千行也是很正常的吧。

更没有组件通信。当然了,毕竟连组件都没有。

有好有坏吧,加上组件要考虑的事情就会变得更多,难度自然就上来了。

而且我看的 demo 代码几乎没有用到 ES2015+ 的特性,不过别担心,babel都能转。

不过暂时没有看到 module 是怎么处理的。

就像上面说的,一个文件写几千行?

我对代码略有洁癖,表示不能接受。

首先是苹果的审核,会不会不允许微信这么干,IOS 这么一个大平台如果说不同意那这个项目基本就GG了。

对于这个问题我是持乐观态度的。我猜想这个项目进行之前就已经和苹果那边有商量了。而且腾讯的能量还是相当大的,苹果就算不想支持,在博弈之后可能还得慎重考虑。

然后是微信的审核是否过关?

我想微信是都想让大家过的,只是。。。广电总局这样的部门在国内力量似乎很强大嘛。

还有就是那种“屠龙宝刀,点击就送”的应用,会不会很容易放过?

我其实很想做微信小程序玩玩的,只是担心会不会只开放给企业用户。

我认为个人开发者才是最勇猛,最激进,最热爱技术的那批人。

我希望能够尽量让更多的人都来开发。

这个问题其实我也是持乐观态度的。

微信可能不愿意开源出来,但是他们肯定很想让所有人都用。

比较尴尬的一点是,微信小程序并不能取代客户端。

一个非常重要的点是功能太弱。很多功能还是需要独立客户端来做的。

另一个,谁甘心并且完全放心把流量入口完全交给其他人呢?说不定一个乱七八糟的政策就能搞死一个产品。

我的态度

我觉得微信小程序是一个非常棒的消息,它可以更简单地做一些轻应用。也会更好玩。

轻应用,交互简单中小企业的可以快速来一套。并尝试重心转移到这里。

重型应用可以让现有的前端花几天撸一个页面,就做展示就好了,别想做很多功能了。

微信小应用可以说一定程度上又推了一把火热的前端。可能会带更多的人踏入前端的大坑了。

然而冷静一点。多少年了,我们一直追寻的跨平台真的能够在微信小程序上得到一定程度的实现吗?

我相信前端一定会越来越好。加油~