如何评价 9 月 21 日开始内测的「微信小程序」?

相关问题: 如何评价微信公众平台? 如何评价「微信小程序」1 月 9 日的发布? 现在,应用号暂定名为小程序,进行内测。 小程序是一种不需要下载安装即可使用的应用,它实现了应用“触手可及”的梦想,用户扫一扫或者搜一下即可打开应用。也体现了“用完即走”的理念,用户不用关心是否安装太多应用的问题。应用将无处不在,随时可用,但又无需安装卸载。 本次内测采用邀请制,其内容客户端暂时对用户不可见。之后小程序会全面开…
关注者
12579
被浏览
645153
微信小程序这个东西的出现早有苗头:在客户端/浏览器集成一个运行环境,用js去驱动native ui,这个事情腾讯QQ浏览器早就做过。

这种做法我认为它有反 web 反开放的嫌疑。

Web 是最开放最容易被解析被索引的技术,网站的内容可以被用户随意选取和分享,可以被搜索引擎收录,甚至在网站已经死亡之后其内容仍然能存活在 archive.org 这种数字档案馆里。

而 App 则自给自足,很难去解析去索引,如果一个 App 死了,它的用户和内容就会流失。

如果市场上越来越多的部分都被 App 占据,每一个 App 都是封闭的王国,互联网会越来越封闭,搜索引擎也将毫无用武之地。

正是看到这种趋势, Google 急得像热锅上的蚂蚁。现在 Google 正在大力推广的 PWA 技术,就是以 HTML 为主, JS 渐进增强的 Web App 方案,在保证内容开放性(discoverable) 的同时又具有 App-like 的体验。关于这一点,可以看看 Google 的介绍: developers.google.com/w

从这一点来说,我是对微信小程序这种技术是有反感的,虽然它确实大大扩展了 JS 的业务范围。

但在现实中,它又确实有可取之处,微信的巨大用户量、轻型应用的可传播性、相对较好的性能和一致性的用户体验,时时刻刻吸引着应用开发者来使用这种技术。

时代的洪流浩浩荡荡,我们每个人都只能顺势而为。

====

虽然微信这一次的代码和文档质量都还不错,小程序的特性也令人印象深刻,却也并非完美。

以下吐槽一下微信小程序目前的一些问题。
  1. Android 下,input 组件中输入文字,切换键盘显示/不显示状态,文字会错位。
  2. Android 下 Canvas demo 刚开始动画时丢帧。而且大部分涉及动画的组件,如 swiper/progress 等,都有丢帧的现象(骁龙650 啊,不应该啊
  3. 在 scroll-view 上用手指滑一下然后松开,界面发生滚动,但手指松开后会错误地触发 click 。
  4. getApp() 、Page() 等框架函数没有放在命名空间下。
  5. tabBar 分割线只能用黑白两种颜色,且图标不支持 svg 。
  6. HexColor 只支持 RGB,不支持 alpha。
  7. swiper 组件的 indicate dots 好丑,也没法定制 - -
  8. API 不如 Vue.js 优雅。
  9. 赶工的痕迹还是挺明显的,比如 <map> 组件,我传进去参数了,显示出来的地图上也打点了,但是用户在地图上操作的行为呢?没有事件传出来,业务代码没法获取到用户操作。
  10. IDE 没有实现 live reload ,在 IDE 里需要手动刷新,在手机上需要反复扫码。
  11. 不开放编译和打包过程,没有集成 babel 支持。
  12. 不会将引用的 npm 包打包到项目里,需要自己另想办法。
  13. 好像没有提供远程调试?反正我没找到真机调试打断点的地方。
  14. 没有提供真正的退出小程序的功能,无论是返回键还是菜单中的“离开”,都只是睡眠和隐藏而已。
  15. 没有提供删除小程序本地缓存的功能,改了后台配置之后用户端的没有更新,我只好 root 之后进 /data 分区手动删除缓存文件。
  16. 文档中有一些锚点链接点了没反应,比如配置里的 tabBar。
  17. wx.request() 这个 API 的限制非常严格,比 Web 里的 http request 限制严格得多。
  18. wxml 是写死在源码里的,那么如何在运行时动态生成页面结构?
  19. 似乎没有 webview 组件。
  20. js 和 wxml 的引入是方式是不一样的,js 用 require() ,wxml 用 <import>/<include> 。这就很尴尬了,既不能像 vue 那样整个 .vue 文件作为组件一块引入,又不能像 react 那样,一切皆是hyperscript 。在微信小程序里把 wxml + js 组件化会非常麻烦。
  21. 文档里说了“规定屏幕宽为750rpx”,我试了之后发现不是,此处应有黑人问号脸。
  22. 在 wxss 规则里写 vw 单位会各种bug,现在还没找出规律。但在 wxml 元素的 style 属性里用 vw 单位又是ok的。黑人问号脸。
  23. 小程序与小程序之间如何跳转?
  24. 占位,慢慢修改

个人观点:

总的来说,亮点有,但在 Android 上暂时还并未表现出来秒杀 Web App 的特点;开发不算复杂,但开发体验有待改进;性能不算太差,也并非极好,自由度和表现力离 Web 尚有一些差距;微信小程序捆绑的 js 框架降低了新手入门的门槛,但增加了业务迁移的成本;bug极多。

微信小程序尚且是一个新玩意,亮点和缺点共存。而由于微信的封闭性,这种技术并不能完全替代 Web App 。在手机性能越来越高、Web 技术进化越来越快的今天,微信小程序到底能在多大程度上挑战 Web 的地位,还有待观察。

对于开发者,个人建议是不要太着急上火,把玩一下即可,继续观望也无妨。

如果你的业务严重依赖微信、希望在用户体验上精益求精、在客户端技术上探索一些未来的可能性,那么你可以尝试一下这个技术,用在一些新的、轻型的业务上,做一个快速试错,看看后续的结果再决定是不是增加投入。

但要在仓促之间把已经成熟的业务搬到一个新的技术平台上,恐怕不是一件容易的事情,也没有多大必要。