昨天(2016-09-22)凌晨,当我正准备把手机放到床铺底下充电,然后好好睡觉的时候,突然看到了朋友圈里这么一张图:
“看起来好像很厉害的样子”,我想。于是我顺手打开了搜索引擎,输入了“微信小程序”几个字,果不其然,微信深夜防毒,媒体们大多数都还没反应过来,只有少部分的媒体 做了一些微小的报道。后来也流出了一些所谓的官方介绍,链接遍地都是我就不贴了,只在这里摘录一些我认为比较重要的东西:
Q: 小程序是什么?它有着怎样的动能?
A: 小程序是一种不需要下载安装即可使用的应用,它实现了应用扫一扫或者搜一下即可打开应用。也体现了“用完即走”的理念,用户不用关心是否安装太多应用的问题。应用将无处不在,随时可用,但又无需安装卸载。
我一看,心想也不过如此。我们平日里使用 / 开发的各种 RIA (Rich Internet Applications) ,各种所谓的 Web Apps , 甚至是各种微信公众号 / 服务号不都是这种套路么,这个“小程序”跟上面的这些妖艳贱货貌似也没有什么不一样。但是看到下面有这么一段:
最后,据了解,目前微信应用号主要给开发者以组件和API的形式开放了如下服务以及支撑能力:
- …(无关紧要,略过)
- 文件操作能力
- 网络:上传下载能力、WebSocket
- 数据:数据缓存能力
- 位置:获取位置、查看位置
- 设备:网络状态、系统信息、重力感应、罗盘
- 界面:设置导航条、导航、动画、绘图等等
- 开放接口:登录,包括签名加密,用户信息、微信支付、模板消息
看到底下这些东西,本来一脸瞌睡的我一下子打了个激灵。文件操作虽然确实在前端技术里有小范围的应用,但是由于浏览器中由于安全以及兼容性上的种种限制,所以并没有在我们的生产环境下面广泛使用。包括下面的一些特性也是一样。也就是说,微信小程序虽然也是一个被框在微信的壳子里面,但是这个壳子给我们提供了一些与系统底层(相对于单纯的 Web App 来说)打交道的魔法,让我们的东西有了更强的能力,有了更强的能力,也就意味着更多的可能,我们也就通过 Web 技术就能做一些更加接近 Native 客户端的事情。并且再看最后一条“开放接口”——这意味着我们可以直接利用微信的用户资源,甚至可以直接让用户通过微信钱包给我们付钱。
还有一点虽然腾讯没有明说,但我认为这一点比以上这些都重要:微信在 iOS / Android 上都有客户端,那么小程序一定也是只用开发一次,就可以在所有可以运行微信的平台上运行!而且小程序的核心开发技术不是 Swift 也不是 Java ,而是为我们这些前端狗所熟知的 JavaScript ,这意味着我们不用去买 Mac 和 iPhone 还要每年给库克粑粑交 $99 的保护费,也不用苦哈哈地翻墙下 ADT / Android Studio 并且冒着把电脑搞爆炸的危险把 Android 的一套环境搭建好还要面对无数种型号的安卓机做适配,我们只需要一个微信开发者的权限和开发工具,再加上我们不能更熟悉的前端开发工具链,就能开发一个到处都能运行的“小程序”,还能调用微信的各种开放接口!简直比传统的 Native 开发不知道高到哪里去了!于是在各种(前端)开发者社区刮起来了一股“我学小程序我自豪”的风,各种抢先的资源,文章和教程让人应接不暇,各个博主也都为它使出洪荒之力,共享出自己拥有的资料和研究的心得,其热闹程度甚至比前段时间 Google 发布 AngularJS 2 正式版时更甚。
不过,有些想搞大新闻的媒体开始鼓吹类似“JS 的时代已来,iOS / Android 开发者或成最大输家”的论调,然后把 Native 开发者批判一番。事实真的是这样吗?有了小程序,我们真的就可以跟 Native App 说拜拜了?小程序相比于传统的 Web App 来说,虽然是多了一些之前没有的能力,但是毕竟条件是还是太受限——比如说在小程序里你并不能在锁屏界面上显示一些什么东西,而且就目前流出的开发文档来看,貌似连推送通知的权限都没有。其次,这毕竟也是腾讯粑粑的地盘,也不能让你为所欲为,比如小应用虽然使用 Web 技术开发,但是人家的发布流程仍然是我们很熟悉的 App Store / Play Store 的那一套理论——我们得把开发的应用打包提交,然后经过腾讯粑粑的审核,我们的小程序才能最终通过微信和用户见面,并且这样相对于 Native App 又多了一个进入的层级。并且从目前所流出的设计规范文档来看,各种条条框框也实在是太多(比如首屏页面除了 Logo 以外的东西都不能修改啦,下拉刷新的文案是固定的啦等等)。从某些方面来看,说小程序的设计师 / 开发者是在“戴着脚镣跳舞”也不为过。并且套了个微信的壳子,相对性能上也不会很好,目测处理稍微密集一些的数据都会显得困难,更不用说写一些在千元机上跑都卡的不行的 3D 游戏了。所以如果你还是认为小程序的问世是所有 Native App 的末日的话,那我只能说你还是 too simple, sometimes naive 了。
那么现在综合看来,我觉得微信小程序的应用场景的应该大致是这样:
- 需要快速开发 / 迭代的项目,并且时间、经费和人员都有限(JavaScript 即可开发,接口统一,全平台适应)
- 需要快速积累用户和变现(安装成本低,有支付接口)
- 不需要频繁使用,甚至可能只用一次,用过即焚
- 不需要太多资源和权限
这些需求,我左看右看,怎么看都觉得这些应用场景都深深地戳中了一种人的痛点,而且我觉得这种人,一定是希望快速推出一个不太复杂的产品并且希望尽量多的人来用,并且没有太多的钱和资源。什么样的人是这样呢?我想应该是那些刚开始创业的人和团队。这么一个东西可以说简直是为他们量身打造的,他们可以用小程序快速并且不用花费太多代价地实现和验证的想法,并且积累一批原始的用户。但是我相信,等到他们的用户一旦发展到一定规模,那他们肯定也不会满足于此,也会将自己的应用逐渐地 Native 化。而且,估计也会有很多类似智能家居和 P2P 平台之类的东西会嗅到这股味道吧(笑)。
P.S. 除了这些做生意的,或许还会欢呼雀跃的还有像我们这些“学生开发者”。我们只需要用 JavaScript 就能构建一个全平台都能用的“小程序”,并且还有微信这个大靠山给我们解决了用户管理的问题,岂不美哉?不说了,我得赶快去琢磨一下微信小程序版的长大校园通校园通了。在我们还没琢磨出小程序版校园通之前,先搞个安卓版的长大校园通用着也是极好的。
P.P.S 虽然我们不能说 Native App 将死,但是前端技术这股“黑恶势力”的崛起倒已经是真的势不可挡了。如果你们想进一步了解这股“黑恶势力”的发家史以及他们马上要扩张的地盘,可以在这里看到我之前做过的一次分享,如果你身在长大,并且恰好也希望来和我们这股“黑恶势力”“狼狈为奸”的话,长大在线 Web 组在这里也非常大家的加入。虽然我们这次招新报名结束了,但是下学期我们还是会招新的,时间应该就是在下个学期初。欢迎你来哟~