首次开发小程序,完成了一个简单的功能(半成品),有所思,有所感


始末

2017年1月9日,微信小程序上线,朋友圈里铺天盖地的各种截图,足见其火爆。诸多移动应用大厂纷纷上线各自的小程序版本,笔者所在的D公司也悄悄发布了小程序,看来是在保密情况下开发的,在之前一段时间里自己竟从未听闻。

纸上得来终觉浅,绝知此事要躬行。今天笔者就尝试开发了一个小程序,功能非常简单,见下文。

程序页面与功能

整个小程序包含两个页面,登陆页与功能页。登陆页显示一张欢迎图片和一个输入框,当用户输入正确的文字后,跳转至功能页。功能页提供一个简单的ASCII字符转换功能。

实操

依照官方Demo,新建两个页面目录,布局写入wxml,逻辑写入js

代码过于简单,而且涉及个人隐私,略去不提。着重谈思考与感想。

思考与感想

架构

整体看来,小程序的结构还是很清晰的。

  • 按页面组织,每个页面是一个文件夹
  • 文件夹下,wxml(布局),json(配置),wxss(样式),js(逻辑),自带数据绑定,接近设计模式中的MVVM模式
  • 官方集成登陆、定位、地图、支付、分享、网络请求等基础服务,减少二次开发成本
  • 另一方面,这也限制了开发者对于底层工具的选择,只能寄希望于微信提供的API足够强大与高效,因为你压根也没有别的办法去修改底层服务

开发者工具

目前看来,微信官方提供的开发者工具只是个半成品,由于缺少一些常用功能,使用起来反而会碍手碍脚,拖慢开发速度。建议开发者使用自己习惯的工具进行开发,只使用官方开发工具中的预览&发布功能。

官方开发者工具的一些槽点

  • 快捷键匮乏:打开文件,关闭文件,自动格式化……
  • 无法批量操作文件
  • 无法批量重命名变量
  • 无法全局搜索
  • 不支持Less
  • Wxml标签中不支持键盘展开/收起节点
  • wxml、wxss在sublime等编辑器中无语法高亮
  • 偶尔出现调试面板中只显示Console Sources Network三个标签的bug,重新下载后解决

发布

这是笔者最不喜欢的一点,必须以公司/企业/媒体/政府机关的身份进行认证后,才能发布到线上,完全堵死了个人开发者发布的道路。

一些思考

张小龙的野心很大,当微信占据了8亿手机入口后,这野心开始显露出来————微信不会满足于只做一个通讯软件,它正试图成为一个入口,一个触达使用者生活方方面面的入口。一旦这个生态系统被证明是行之有效的,未来人们手机上可能只会安装一个微信。

对于开发者,尤其是Android/iOS开发者,这并不是一个好消息,他们可能需要改行写js/css了。

支付宝地位受到威胁,阿里恐成最大输家。

以上的一切,都建立在小程序真正跑得够快、够好的基础上,目前看来这是远远不够的,比起原生系统,小程序的体验要下降许多,尤其是Tap/Scroll事件,卡顿非常明显。

附1: ASCII对照表

附2: JavaScript中获取字符的ASCII值,以及将ACSII转换为字符

1
2
3
var x = 'c';
var ascii = c.charCodeAt(); // 99
var y = String.fromCharCode(ascii); // 'c'

======Ending======