我自认为对新技术还是比较有热情的,可对于小程序这个“新技术”,我却完全是被动的。去年9月份的时候,微信小程序开始内测,瞬间引爆朋友圈、知乎等一众分享平台。当时我大概了解了一下,觉得从技术角度上来说没啥新意,也完全没有get到网上那些人激动的点在哪里,于是也就没有花很多精力去深入了解和学习相关知识。到了11月份,我和几个小伙伴去北京参加CSDN 举办的 SDCC,我特意去听了微信专场,滴滴团队的小程序经验分享干货十足,却依然让我觉得这个“新技术”无论是从技术角度还是从用户场景角度,都没什么吸引人的地方。今年1月9日,小程序正式发布,一下子又引爆了一众网络媒体,连我身边很多非IT圈的人都在找我了解讨论小程序的事情。这次我再也坐不住了,毕竟雷布斯说过“只要站在风口猪也能飞起来”,更何况背靠腾讯的张小龙,刮起的很可能是龙卷风。于是我向公司提出申请,注册了一个小程序账号,开始尝试开发一个给公司员工使用的办公助手。接着我就遇到了一些列问题。
程序大小限制
刚刚开始研究不久我就发现,每次预览的时候,微信开发者工具都会提示你编译包的大小是多少。因为微信小程序要求编译包的大小不能超过1MB,1MB大概有多少呢,我给大家举个例子,我们之前用 Vue 开发过一个 OA 系统的手机版,不包括任何第三方依赖,所有代码 zip 压缩之后是400KB。我们的这个手机版 OA 实现了大概 10 个的功能,只有PC版的1/6不到,没有用任何图片资源,所有的图标都是用 font-face 实现的。小程序这个 1MB 的大小限制就注定了你的程序只能是一个简化版,大家可以去看看现在已经上线的微信小程序,如滴滴出行、京东购物、卷皮折扣等等,全都是简化版。
没有消息推送
我们面对的第二个问题就是,微信小程序不能主动进行消息推送。虽说现在很多 app 没事推送各种广告确实挺让人神烦,但是完全不能做任何消息推送也不行啊,毕竟这可是刚性需求。比如我们准备做的 OA 系统,没有消息推送弊端真的非常多,比如,有会议待开,有审批单待签,有论坛帖子@到,所有这些东西都完全无法通知用户了,那么作为一个 OA 系统,连提醒功能都没有,做手机版的意义就已经大打折扣了。同样的,社交类 APP,购物类 APP 都有很多对消息推送存在刚需的场景,小程序里面,这些都实现不了了。
不完善的语法
其实微信小程序的语法和 Vue 是非常相似的,以至于小程序刚刚内测的时候,有人还去知乎上提问说小程序的底层是不是 Vue 实现的。可是,实际看了小程序的开发文档之后你就会发现,小程序的指令实在是太简单了,目前除了数据绑定、条件渲染、列表、模板、事件、引用 之外基本上没有其他的功能了。而反观 Vue 的开发文档,你会发现两者是天壤之别。API 太过繁杂会增加了很多学习成本也不是好事。可是像小程序这么简单的 API,提供的功能肯定是非常有限的,自然也带来了很多开发上的不便。比如,在 Vue 里面,你可以用很多不同的变量往同一个元素上面绑定很多不同的 class,在小程序上就没这么简单了。
没新意的架构
其实没有新意的架构并不能算小程序的缺点,只是模仿优秀者,而且模仿的还很像,这并不是很么坏事。可是,作为腾讯的力推产品,大家自然对它各个方面的期待都更高一些,就好像苹果公司这几年的发布会,虽然也在一只推陈出新,可是毕竟都不是什么划时代的设计或功能,于是大家纷纷表示苹果已经不是原来那个苹果了。对前端开发来说,如果小程序的架构和 Vue、React 都类似,那么我们又为什么要从 Vue 和 React 转来用小程序呢?
不突出的性能
小程序刚刚开始内测的时候,很多人猜测小程序是不是和 ReactNative 以及 Weex 一样把类似 HTML 的各种标签渲染成了手机端原生组件,从而使程序的运行流畅度大大提高。然后目前来看,事实并不是这样,在 Android 手机的开发选项中开启“显示布局边界”之后,你就可以发现,其实小程序说白了还是一个 webview,而且很多人在体验过小程序之后也发现,界面的流畅度和浏览器相比并没有什么明显的提高。
更封闭的体系
小程序的整个体系是封闭的,从代码编辑器到调试环境到运行环境,全都是腾讯出的,而且目前来看全是闭源方案。包括后期的上线审核,可搜索的关键字设置等等方面,全都是腾讯一家说了算,颇有苹果的作风。做过 iOS APP 的同学应该是对苹果的行事风格有体会的,说要下架你的 APP 就下架,招呼都不打,你想去找他沟通,几天没人理你。
上面这些都是我从开发的角度去看小程序的问题。可能很多人会觉得不服,认为光有程序员思维是不行的,很多事情并不仅仅是技术那么简单。那下面我就从运营的角度来说说小程序还有哪些问题。
流量不足
小程序刚刚提出的时候,很多人觉得机会来了,一个很重要的原因就是大家都觉得有微信这个超级流量平台,小程序的流量肯定会非常可观,可是结果大家都看到了。小程序不能在朋友圈分享,只能在聊天场景分享,可是大家回忆一下,一般人在聊天的时候会经常给别人分享 APP 么?另外,小程序没有所谓的应用市场,也就没有排名和榜单,只能搜索,而且除了个别非常知名的 APP 或品牌名称,比如京东,其他的 APP 只能精确搜索。另外,所谓的线下扫描二维码进入小程序,老实说,我想不出来有什么线下场景一定要用户扫描一个二维码进入小程序才能进行下去。如果只是付款,完全可以直接扫码支付,如果是注册会员,完全可以扫码之后只显示一个注册页面。小程序的入口就是这么模糊。
功能太弱
就算有些用户经过重重阻碍,终于扫面二维码进入了小程序,他接着就会发现,小程序的功能由于其编译包大小的限制,往往显得有点力不从心。对比一下京东的原生 APP 和京东的微信小程序,我们不难发现,京东的微信小程序版基本上把京东 APP 里面 80% 的功能都看掉了。如果你是个技术男现在只是想买一条手机数据线,你可能可以在小程序上搜索数据线,查看某条搜索结果的详情,感觉不错就买了。可是如果你要是个妹纸想买条裙子,小程序显然不能满足你反复比较挑选的需求。
微信小程序刚刚推出的时候,有人说微信除了小程序,很多 APP 都可以卸载掉了,还举例说比如天气 APP 和计算器 APP。可在我看来,这两个 APP 都不可能被小程序取代。天气 APP 最重要的就是天气信息的主屏幕提醒,小程序做不到。计算器都是各个手机系统自带的功能,小程序更没有机会。就算手机系统不自带计算器,用户是希望在主屏幕上点一下打开,还是希望先打开微信,然后切换到发现选项卡,再进入小程序栏目,最后选择计算器功能?
“用完即走”
微信小程序提出了一个概念叫“用完即走”。这个想法听起来好像很人性化很替用户着想,可事实上这个需求是非常“小众”的需求,甚至可以说是伪需求。用户只对一些低使用频率,又非用不可的 APP 才有这种需求,比如旅游类 APP。首先旅游类 APP 的使用频率低,用户不太可能每个星期去旅游,另外你不用好像也确实不方便。再比如某些酒店的会员 APP,你在住酒店的时候用它可以带来很多切实的方便和优惠。可大家在深入想想,我们出去旅游的时候,旅游类 APP 是只用一次还是在一小段时间内频繁使用?显然是后者,那我们为什么不在这一小段时间内安装一个旅游的 APP,过了这一段时间之后再删掉?毕竟全功能的 APP 在各个方面来说都更好用。
我觉得,小程序其实从一开始就没有打算去取代现有的原生 APP,它只是对现有 APP 生态的一个补充和完善,可以说是一个面向小众细分市场的产品。同时,对张小龙和腾讯来说,微信小程序可能更是微信对生态圈建设的一次尝试。