从去年年初微信小程序推出已经经过了一年多时间,小程序在开发者的圈子里也是经过了大起大落,刚推出的时候大家对小程序充满了期待,但是老实说第一版的小程序还是差强人意,远远没有达到大家的预期,这里的预期包括小程序体验上的预期,也包括小程序对于开发者的预期。在使用上初版小程序还是存在不少卡顿的现象,而且第一批上线的小程序功能都太简单,虽然小程序推行的是“极致精简,用完即走”,但是如果一个产品的功能是缺失的精简,那么还没到用完,用户已经走了。初版小程序对于开发者也不是很友好,从IDE到功能组件都还不够完善,还是存在了很多缺失,基本的调试功能都存在bug,而且对于小程序的大小也有严格的要求,不能超过1M!!!在如今的社会不能超过1M什么概念,让我想起了红白机的游戏大小。。。在现在的前端开发中随随便便的一个高清图片可能都超过1M,这样的限制也是为了保证用户的体验,在第一次打开的时候能够以最快速度呈现给用户,让用户感知不到下载的过程,开发者也渐渐接受了大小限制,但是因为1M实在是太小了,导致前期的小程序功能都非常弱,让用户还是无法脱离原生APP直接使用小程序,所以很多用户都是去微信里体验了一把小程序后发现功能不全,满足不了日常需求,就又用回原生app了。微信也意识到了这个问题,将小程序的大小限制扩大到了2M,并且升级了很多组件,让我们不再需要太多的自定义组件,也使得我们的代码量越来越少,所以从去年年底开始又起了一波小程序,这波小程序的更新使得大家重新认识了小程序,大家发现现在的小程序真的可以替代目前绝大部分app了,核心功能都是齐备的,而且真的做到了用完即走,对于一些低频的app完全可以使用小程序替代,甚至一些类似共享单车这样的app,因为本身功能就比较单一,也完全可以用小程序替代,从我的体验来看,小程序除了启动稍慢,但是已经可以做到完美体验了,进去之后在网络好的情况下,各种页面秒开,因为这样的优质体验,我也卸载了一堆低频的原生app,这也萌发了我原先写原生app和后台的开发者学习小程序的热情。
小程序学起来还是比较简单的,之前有过一定的html、js基础的同学看两天基本就能上手,编程这门手艺其实是互通的,只要了解了基本语法,各种架构、设计模式都是一样的,对于有基础的同学学起来也是非常快的,之前我一直比较抵触编写js,觉得这种类型随意定义的脚本语言,是一种不严谨的语言,连python都要停止对2.X版本的兼容了,为什么还要用那么low的语言,但是h5的各种快速发展,每年都在啪啪打脸,让我不得不开始重视起js,看来是要好好掌握这门手艺了,因为以我十几年的编程经验,我感觉到了原生app将像当年C/S一样在未来3,5年内没落下去,所以笔者也不能免俗的将h5开发放入自己的技术栈中,小程序的runtime其实也是一个类似web解析和运行引擎,所以当你学习小程序的时候会发现,小程序不管从工程结构还是代码都和h5非常像,尤其是和目前主流的一些js 的MVVM框架,可以说简直就是换了一些关键字和名字,所以对于使用过vue.js和react的同学来说,完全没有任何障碍就能熟练使用小程序进行开发。
开发小程序大家势必会有个疑问就是,小程序如何能够实现复用,复用有几个层面的含义,一方面是小程序本身组件复用,微信也提供了完善的自定义组件和模块导出功能,满足基础的复用;另一方面是小程序和现有H5的复用,目前很多公司采用的复用方式是视图层用小程序重新也一次,逻辑层的代码复用原有H5代码中的js模块,这就能够做到逻辑层的代码复用,但是这么做的缺点是只是实现了一定程度的复用,而且逻辑层的复用说起来简单,但是实际复用过程中还存在很多其他的问题,最后的结果可能是真正能复用的模块其实并不多,很多开发经验不是很丰富的公司,最后可能出现的局面就是除了原有的native团队、h5团队又多了一个小程序团队。
目前各大互联网公司也都在h5代码和小程序代码复用方面作出努力,这里推荐下美团近期开源的mpvue (https://github.com/Meituan-Dianping/mpvue),mpvue是一个使用 Vue.js开发小程序的前端框架。框架基于 Vue.js 核心,mpvue 修改了 Vue.js 的 runtime 和 compiler 实现,使其可以运行在小程序环境中,从而为小程序开发引入了整套 Vue.js开发体验。mpvue对于使用vue.js开发前端H5的团队来说基本可以做到视图层、逻辑层的无缝复用。
Vue.js 和小程序都是典型的逻辑视图层框架,逻辑层和视图层之间的工作方式为:数据变更驱动视图更新;视图交互触发事件,事件响应函数修改数据再次触发视图更新,如图1所示。
image鉴于 Vue.js 和小程序一致的工作原理,美团将小程序的功能托管给 Vue.js,在正确的时机将数据变更同步到小程序,从而达到开发小程序的目的。这样,可以将精力聚焦在 Vue.js 上,参照 Vue.js 编写与之对应的小程序代码,小程序负责视图层展示,所有业务逻辑收敛到 Vue.js 中,Vue.js 数据变更后同步到小程序,如图2所示。如此一来,就获得了以 Vue.js 的方式开发小程序的能力。
image通过使用mpvue能够相对低成本的在vue.js和小程序之间实现高度代码复用,大大降低了开发成本,基本可以做到用原先h5开发团队短时间完成小程序的开发,关键能够做到高度代码一致性和复用。
上面絮絮叨叨那么多,总结下来就是我看好微信的流量导入和小程序的发展,做为IT从业者,任何一个可能对行业产生变革的技术我们都不能错过,一旦错过可能将会失去未来。
网友评论