微信小程序在技术圈里也爆炸了不少天了,但是纵观公众号的各类文档,似乎高质量的文章不多见,往往都是官方开发文档的搬运工,缺乏系统性的剖析帖,让我很是失望啊(大牛似乎都在知乎答题和写天书)。当然,我写这篇文章不是《解密微信小程序》或者《微信小程序完全手册》之类标题的技术帖,就是随便聊聊这个技术圈的新宠(顺便证明下我也是技术圈一份子)。
作为一位名不副实的程序员,见到此类消息的本能反应也和广大码农一样是莫名有点兴奋的,但苦于没有内测资格,只能望洋兴叹。转机来的太快,第二天就有人在Github上放出了开发工具的破解版和官方Demo程序,而我仅仅是点开了网页,随后便去喝茶啃瓜、一觉到天明(名不副实的程序员就是这样的)。然而一觉醒来发现又转机了,官方公开了设计指南、开发文档和开发者工具。比起摸索开发者工具和Demo程序,我更喜欢「官方解密文档」(名不副实again),于是我也毫不犹豫的在第一时间入了这坑。
从设计指南到开发文再到工具,都让我感受到了一股苹果的作风,可见微信对这个新功能的重视。微信这回是布了个大局,瞬间从App(程序)晋升为OS(操作系统),这个一上线即拥有7亿用户的“操作系统”想想也是惹开发者醉啊,因此火爆也是必然的。从内测第一天起技术圈就掀起了有关技术的各种讨论,比如「HTML5又火了」、「JavaScript程序员要吃香了」、「前端开发者要涨薪了」……然而总是有少数神龙见首不见尾的大牛在评论区里忍不住显摆道出天机,我也是一不小心抓住了点大牛的尾巴看到了「Native」和「RN」等奇怪的字母才稍微找到了点方向,摸清了点门道。下面就来进入正题说一说这个微信「小程序」。
关于设计指南
讲到设计指南就不得不看看业界标杆:谷歌和苹果。无论是《Material Design》还是《iOS Human Interface Guidelines》,对自身的界面风格和细节定义都是极其详细。一流企业定规格,这样的设计指南绝地称得上一流之作,也确实给设计师和开发者起到了指南的作用。微信小程序的这份「指南」虽说没有达到谷歌和苹果的高度,但也根据微信本身的产品理念、界面风格和交互方式给出了明确的设计思路,给设计师和开发者指明了方向。
由于这份指南内容比较简要,我也分分钟就看完了。鉴于之前已经看过《iOS Human Interface Guidlines》,除了这次用的是中文省了我很多时间外,关于交互设计方面倒是没啥新意,这份文档更趋向于是给程序员看的,设计师看了也许会很不屑。我认为这份文档最具价值的信息大概就是阐明了「小程序」可以之于微信的界面中而拥有高于微信的设计。意思就是有些元素固定这样了,微信不让你动所以你动不了,但是又给了你修改配色之类的具体界面参数的能力,用于统一「小程序」自身的风格。
然而我并不是设计圈的人,只能从程序员的角度一表拙见。这份设计指南更大意义上是让微信这个生态更加完善了,也让很多脱离设计的程序员能够避免「一看就是程序员做的界面」这种尴尬,当然这份指南也很有可能作为微信平台审核上架应用的依据。
关于技术栈
Web前端的技术栈大家都知道是HTML + CSS + JavaScript,所以很多开发者认为微信这次的「小程序」就是Web开发,因此也存在「HTML5这回要更火了」这类的声音,但即使我没有学过「HTML5」也知道这跟「HTML5」没多大关系。开发文档中明确阐明了「小程序」的视图层采用的是描述语言 WXML ,也就是微信自定义的一套视图描述语言,这套描述语言可能是和HTML很类似,但这种类似也可以说是微信故意为之,就是向前端开发者提供一套类似前端开发的技术栈。那为何不直接用前端技术呢,也就是喜闻乐见的「HTML5应用」呢,简单的讲无非两点:
- 性能不够,影响体验。
- 不利于微信生态建设。
前端开发 | 微信小程序 |
---|---|
HTML | WXML |
CSS | WXSS |
JavaScript | JavaScript |
「小程序」的逻辑层代码是采用JavaScript语言,这就有传言称「JavaScript程序员要吃香」,「JavaScript程序员要涨薪」等等。无可厚非JavaScript程序员极有可能成为第一波享受到「小程序」红利的开发者。但不幸的是,这套技术栈不支持像jQuery这类的三方库,所以很多JavaScript程序员写起代码来要不顺手喽,考验JavaScript语言功底的时候到了。其实JavaScript的学习成本并不高,我也花了两天就看完了主要的语法知识点,上手是很容易,但是编程的核心并非语言或语法,编程思想更为重要,所以很多编程老司机要想跨界练练「小程序」的话,我认为也是很容易的。这么看JavaScript程序员好像也没啥优势嘛。
WXSS(Weixin Style Sheet),基本就是改了下CSS的名字罢了,唯一的差别可能就只有文档中所述的:
- 尺寸单位(定义了rpx)
- 样式导入
尺寸确实是个需要解决的问题,毕竟微信是个跨平台的「系统」。
总之,这套技术栈门槛不高,我也粗糙地玩了下,简单程序还是很容易开发的。而对于「小程序」后台而言,和之前的原生应用并没有差,该怎样开发还是怎样开发。
关于API
微信提供了网络/媒体/数据/位置/设备/界面/开放接口……等一系列的接口。
相比于iOS或者Android的原生API,没法比……但基本能力都提供了,绝大多数的问题都能解决,有局限性但不妨碍个性。
对于接口我想说的并不多,接下来就看开发者的创造力了。
关于工具
四个字:不够好用。
总结
新鲜的事物总是能激起人们的好奇心,我也是好奇心使然才有了这篇文章。相信很快所有人就能看到「小程序」出现在我们的微信中了。其实我很期待很多应用能上架「小程序」平台,尤其是那些偶尔使用的低频软件,这些软件删了呢要用的时候麻烦,不删呢绝大多数时候也就是占个硬盘空间。「小程序」给出了那些低频应用的解决方案,释放硬盘空间指日可待。除此之外,我也希望能够看到这个新平台能诞生一些这个平台独有的「小程序」,而不仅仅是原生应用的搬运工。
I could either watch it happen or be a part of it.--Elon Musk
这话是最近忙着火星移民计划的伊隆·马斯克讲的,与君共勉。