QQ 小程序入场,中国特色移动互联网进入小程序时代

2024-06-05
来源:网络整理

1.中国特色的移动互联网时代

随着QQ小程序正式向用户开放,这个月活跃用户高达7亿的移动端巨头正式入局市场,小程序终于成为了超级应用的标配。

以下是已经支持小程序的超级应用列表:

微信、微信企业版、QQ、支付宝、高德地图、手机淘宝、百度、百度贴吧、百度地图、今日头条、抖音……

这些耀眼的名字背后是巨大的流量。

在这一群超级App的支撑下,中国的移动互联网格局被彻底改变。

这个具有中国特色的移动互联网时代,我们称之为“小程序时代”。

这是继移动支付之后,中国移动互联网领先全球的第二件代表之事。

中国的技术标准与开发者生态首次得到广泛普及应用,小程序无论在功能还是体验上都有明显超越。

中国人能不能建立起开发者生态?这个命题曾一度受到质疑。

小程序实现这样的突破,是中国科技生态史上值得称赞的发展。

让我们回顾一下这场技术生态革命,它如何开始,又将走向何方。

2. 罗马不是一天建成的,小程序也不是一天发明的

它于 2007 年作为 W3C 项目成立,同年发布。

乔布斯曾希望帮助建立一个应用程序生态系统。

然而其发展速度却不如预期,虽然成功实现了打破IE+垄断的目标,但却没能提供出色的移动互联网体验。

于是在站稳脚跟之后,它就推出了自己的应用程序,开创了移动互联网原生应用的时代。

随后原OS基于,而基于的竞争对手如等也采用了C+的双模应用生态策略,但C开发难度太大,体验不佳,而依托Java技术生态,在竞争中脱颖而出。

因此在移动互联网早期,应用生态的基调就已定下——原生开发。

当时硬件不够好,也没有别的办法,只有原生开发才能在低规格硬件上带来商用体验。

但大家却很怀念HTML,其无需安装、无需更新、点击即可使用、可直接访问二级页面等特点一直让人着迷。

国内有一批浏览器厂商在尝试改进,提出了轻量级应用的概念。

通过扩展原生能力、补充JS API,应用可以实现更多功能。

但这类业务并没有取得成功,问题不仅仅在于功能上的不足,性能体验是更为严重的问题,而体验问题并不是单纯通过扩展 JS 能力就能解决的。

这类业务开发的巅峰就是微信的JS SDK。

微信作为国内最大的移动浏览器,在浏览器内核扩展了大量的JS API,让开发者可以使用JS调用微信支付、二维码扫描等很多以前不可能实现的功能。

微信JS SDK文档

但微信团队对于这个方案的体验还是不满意,虽然微信钱包栏目中的很多应用,比如打车、理财等都嵌入了 JS SDK,但每次点击都需要漫长的白屏等待,使用起来非常痛苦,他们开始在业界寻找新的解决方案。

业内的专业团队已经看到了同样的问题。

与浏览器不同的是,应用程序是另一个小众领域,它为开发者提供了使用 JS 编写跨平台应用的工具。为了让 JS 应用更接近原生应用的功能体验,这个行业的从业者做了很多尝试。

我所在的公司就是其中之一,我们提出了改善“性功能”障碍的解决方案——通过工具、引擎优化、开发模式调整,让开发者能够用 JS 编写出更接近原生应用体验的应用。

多模式、原生接管转场动画、下拉刷新、Tab分页、预加载……各项优化技术不断迭代,最终让应用在性能体验上实现突破。

应用和普通的轻应用还有一个非常大的区别:一个是/,一个是/。简单来说,应用是JS编写的需要安装的APP,而轻应用是在线的网页。

C/S应用在每次页面加载时只需要连接互联网获取JSON数据即可;而B/S应用除了JSON数据外,还需要每次从服务端加载页面DOM、样式、逻辑代码,所以B/S应用的页面加载非常慢,体验很差。

但此类C/S应用虽然提供了良好的用户体验,但却失去了动态性,仍然需要安装、更新,无法即时使用,也无法直接访问二级页面。

那么C/S应用的动态性能不能解决呢?为此我们提出了流式应用的概念。将之前应用中运行在客户端的JS代码打包发布到服务端,制定一个流式加载协议,由移动引擎动态地下载这些JS代码到本地。另外为了让首次加载速度更快,应用在下载的同时运行。

就像流媒体可以一边下载一边播放一样,应用程序也可以一边下载一边使用。

在该方案的支持下,我们终于解决了之前的各种难题:JS应用功能体验达到原生级别,即插即用,直接访问二级页面。

现在看来这似乎是常识,但在当时,先驱者们做了很多艰苦的工作。

这个技术需要事先在手机上预装客户端引擎,就像流媒体的流行一样,建立在庞大的装机量基础之上,所以普及这个客户端引擎就变得非常重要。

2015年,360与腾讯合作,将该客户端引擎嵌入到360手机助手中,推出了业界首个可商业化的小程序,360称之为360微应用。

微应用实现在360手机助手的应用下载页面,出现“秒开”按钮,点击即可直接使用。

在360手机助手的二维码扫描与应用分享中,您可以扫描二维码获取应用,点击分享消息获取应用。

为了扩大生态,这套技术标准被捐赠给了中国产业联盟,随后联盟开始鼓励更多的超级应用、手机厂商加入,共同推动动感小应用行业的发展。

但事情并没有那么顺利,巨头们都有自己的利益,虽然有不少厂商同意加入联盟,共建生态,但最关键的角色,真正的国民应用“微信”,最终还是决定自己制定标准,开发自己的引擎,当然技术原理和流媒体应用基本一致。

2016年1月11日,张小龙罕见亮相微信公开课,公布微信应用号计划,亲自支持这一大事。

2016年9月21日,微信宣布将旗下应用号更名为小程序,并面向首批开发者进行内测。自此,这一术语正式确立,“小程序”成为下一个时代的代名词。而“流应用”和“微应用”则湮没在历史长河中,成为一段悲情故事。

2017年1月9日,微信公开课、小程序正式向用户上线。

此后,阿里巴巴、手机厂商联盟、百度、今日头条等相继推出自己的小程序平台,其中经历了不少波折和故事,形成现在的局面是一个既偶然又必然的过程。

小程序风潮已经席卷了更多的人,形成了更大的浪潮,最终迎来了不可逆转的小程序时代。

3.生态保护比登天还难

发明能够解决功能体验和动态的技术方案虽然很难,但并不是最困难的事情。

最困难的部分是构建开发者生态系统。

中国产业联盟最初的策略是扩大、强化并再利用现有的生态系统。

当微信的标准被彻底自主重建时,业内人士无不担忧。

从全球来看,基于Web的技术生态已经非常成熟,各种开发工具、框架、组件、模板……提升着开发者的效率。

小程序抛弃了国际标准组织W3C的DOM和标准,只采用了基础的,这意味着生态的各个轮子无法复用,必须彻底重建一个新的小程序开发生态。

当微信最初推广 JS SDK 的时候,很自然的,开发者们开始纷纷使用,因为对于开发者来说,这只不过是在自己的 H5 版本上增加一些 API 而已。

小程序发展初期,有很多开发者的疑虑:我的业务迭代这么久,你又让我做一个新的版本,你的生态能支撑我的投入吗?

微信用持续快速的版本升级和高层的支持向大家传达了发展小程序的决心,并最终在2017年底通过跳转APP上线小程序。

从此以后,大家的问题不再是我要不要开发小程序,而是转向:既然要做,怎样才能提高小程序的开发效率、降低开发成本?

任何技术或者发展模式的演进在不断成熟的过程中都遵循类似的成熟规律:

微信开发者工具开发小程序代码_微信程序开发工具_微信小程序开发js作用

技术标准 -> 基础平台 -> 开发工具 -> 培训市场 -> 框架诞生 -> 周边生态逐渐完善 -> 轮子上轮子

在生态上它已经发展到了极致,比如 Vue 是一个重要的框架,而基于 Vue 构建的各种丰富的 UI 库、测试框架都是轮子上的轮子。

多层的轮子代表着生态的繁荣,也意味着开发者可以更高效的开发。

但当微信的新标准出现时,又把开发者推回到原始社会,一切又要重新开始。

在当时,这看起来似乎不是一件必然会成功的事情(事实上,即使是现在,例如在图表轮盘领域,小程序仍然无法竞争)。

今天讨论这个标准是对是错已经没有意义,当支付宝、百度、今日头条都开始用这个标准做小程序的时候,这股潮流已经势不可挡。

幸好,最终的结果是中国人做到了,除了国际标准,中国也终于建立了自己的技术生态。

而且这个生态给用户带来了更好的体验,给开发者带来了更多的流量,提高了变现效率,这是一个更好的生态。

4. 技术生态系统的残酷增长速度

中国的小程序开发者们是如何在两年的时间里,从原始社会进步到现代文明的?这也是一段有趣的历史。

我们来看看小程序技术生态是如何快速成长,并完成上面提到的技术成熟路线,即从技术标准到轮子上的轮子的。

在 Web 世界里,已经成熟到了很少使用原生 JS 的时代,开发者大量使用 Vue 等框架,基于 Vue 的轮子也越来越多。

当中国开发者面临从头开始的时候,感受到了效率的差距,时代已经无法阻挡,他们拥抱了它,勤奋的中国技术人开始大力打造小程序的各种周边技术生态。

这其中比较重要的就是开发框架的迭代,我们来看看各个小程序开发框架为何诞生、火爆、衰落。

最初的微信小程序开发过程狂野而野蛮,只有一个文档,IDE 也不好用,也没有支持 npm、预处理器等很多效率工具,而这些对于大型项目来说已经是不可或缺的工具。

于是,第一个标志性的框架出现了——WePY。

WePY 是在 2017 年微信小程序发布后不久发布的,最初是腾讯其他部门的一位个人工程师的作品,当时 WePY 有效解决了小程序不支持 npm 和预处理器的痛点,火了之后腾讯官方将这个框架纳入了官方平台。

不过,WePY 也面临不少问题,其使用了私有语法,生态搭建起来十分困难,IDE 着色、语法提示、语法检查、格式化、人员招募与培训等问题都制约了它的普及。

面对这些问题,人们开始思考,有没有更好的办法,复用现有的技术生态,来快速完善小程序生态?

这时,下一个重要的框架诞生了,美团前端在2018年初开源。

小程序采用Vue语法开发,通过Vue.js底层改造实现到微信小程序的编译。

借助Vue的良好技术生态,直接复用IDE、、等周边工具以及人员招聘、培训等生态建设压力大大减轻,受到了大量开发者的欢迎。

看到熟悉 Vue 的开发人员终于有了一个得心应手的轮子,那些熟悉的开发人员又怎能无动于衷呢?

京东团队是的重度用户,同时他们也自己开发了,于是开发了Taro框架,一个基于语法编写小程序的框架。

但太郎并不想简单地在这个世界上制造一个复制品,相比于太郎,它想要解决更重要的问题。

Taro 上线时间相对较晚,当时微信、支付宝、百度、今日头条等均已发布或推广自家的小程序,开发者面临着多端开发适配的难题。

Taro 率先支持多端开发,甚至可以发布到H5、APP。

图片来自:JD凹图实验室

而此时,小程序领域又出现了一个重要的变化,微信开始支持小程序自定义组件。

对于一个成熟的框架来说,组件是必不可少的,Vue 和 都拥有丰富的组件生态系统。

以前 Vue 的组件也是被编译到页面模板里的,这样带来了很大的性能问题,在复杂页面(比如长列表)中使用组件时,更新组件状态会导致整个页面的数据从 JS 逻辑层传递到视图层一次,大量的数据通信会非常慢。

注意:小程序逻辑层运行在V8以下版本,与视图层分离,通信堵塞容易造成性能问题。

于是Taro将该组件编成了一个新的微信小程序自定义组件,当数据更新时,这个组件只会更新组件内部的数据,而不会更新整个页面的数据,从而大大减少了数据通信量。

这轮新来者对旧来者形成了强势冲击,而Taro在性能和多终端支持等方面已经超越了他们。

看到阵营取得如此成就,Vue阵营自然会继续追击。

我们基于 Vue 开发了 uni-app,实现了自定义组件编译模式,在算法上做了很多优化。另外之前对 Vue 的语法支持不是很完善,比如对过滤器的支持不够,在 uni-app 中我们解决了这个问题。

同样,uni-app也看到了前一波的其他问题:Taro虽然迈出了多端支持第一步,但其多端支持能力相对较弱,各个平台依然各自开发了大量的代码。核心原因在于Taro在H5端和App端并没有一套完整的小程序技术架构,无法保持最大程度的统一。

因此uni-app在app端采用了相同技术架构的小程序引擎,可以直接运行小程序应用,并和小程序代码一起打包成app,开发者无需改一行代码,可以同时发布小程序和app。

当然它的应用引擎是从应用开始的,提供的API比小程序多很多,因为应用的需求比小程序丰富,也支持将渲染引擎替换成Weex渲染引擎。

随后,uni-app发布了H5版本的小程序引擎,其原理与小程序PC模拟器相同,并实现了良好的跨H5版本发布,至此uni-app实现了一次开发,7个平台完美发布。

第一层轮子迅速发展,把 Web 世界最成熟的 Vue 和技术生态引入到小程序开发生态中。随后轮子上的轮子开始如火如荼地建造起来。

以UI库为例,之前的UI库有Vue库、库、PC库、H5库、小程序库,种类繁多,甚至让人眼花缭乱。

例如在Vue阵营中,Vant这两个UI库同时维护两个版本,分别是H5版本和小程序版本。

不仅对于框架作者来说很麻烦,当开发者想要在多个终端上使用这些UI库时,会发现需要在不同的终端上引入不同的UI库,而且编写方式也各有不同,这让开发者很是苦恼。

由于现在已经可以进行多终端应用的开发,因此在多终端开发领域开始出现轮子上的轮子,即多终端UI库。

首先,Taro推出了Taro UI,实现了H5与小程序UI库的统一,但遗憾的是Taro UI并不支持App端。

随后uni-app推出了uni UI,一个同时支持多个小程序、H5、APP的UI库。

由于uni-app与vue同属Vue阵营,组件可以互通,所以两家公司联合举办了插件大赛,并建立了插件市场。

在前端开发者领域,中国和国外存在很多差异:一是中国有小程序,二是中国的 Vue 开发者数量远超美国,这其中很大一个原因就是 Vue.js 的作者游宇熙是中国人。

Vue 与百度指数对比

在庞大 Vue 用户的支持下,uni-app 及其周边生态发展迅速,开发工具、周边、教育培训等生态也迅速完善。目前在 Vue 阵营中,开发者在 Web 生态和多端开发方面基本都有了足够的轮子。

短短两年时间,小程序开发生态已历经数次迭代,轮子不断涌现,并快速步入成熟阶段。

5 结论

行业在不断发展,每当底层发生重大技术变革时,上层框架世界就会出现新的机会。

当时标准不统一,浏览器兼容性问题严重,这才有了 的机会。在移动互联网下半场,浏览器兼容性已经不再是核心问题,其位置已经被更适合移动互联网的 Vue 取代。

我们不知道未来会出现什么新的框架,但我们知道方向:

对于开发者来说,永远都会朝着更高的开发效率、更高的性能、更高的投入产出比的方向发展。

对于开发者来说,虽然目前小程序发展才两年,但流量增长空间依然巨大,除了微信之外,众多超级APP的势能也将逐渐释放,整个小程序行业日活跃用户总量还有上亿的提升空间。

开发者如果能赶上这波红利,就能获得更多的增长,多终端框架的出现,可以帮助开发者更好的把握这波红利。

分享