微信小程序于2017年1月9日正式上线,在过去的一年里,无论外界评价如何,小程序都在坚定的向前迈进,同时其理念和模式也得到了众多企业的认可和效仿。
在微信小程序还在内测的时候,人们对其所采用的技术有很多猜测。小程序的正式发布回答了人们的一些疑问,但有些问题官方并没有公开正式回答。在10月17日即将举行的QCon上海2017大会上,微信小程序项目负责人王悦将分享小程序的核心架构和实战案例。我们也对他进行了采访,提前了解了一些大家关心的问题。
受访者介绍
王悦(微信ID: ),微信小程序项目负责人,拥有十余年前端开发经验,曾就职于搜狐、新浪,2013年加入腾讯,负责互动游戏营销系统、道聚城等多个项目的前端架构与开发,对小程序底层架构原理有深入研究和理解,有多个腾讯小程序开发实战经验。
Q:王总您好,请问您在负责小程序前端之前是做什么的?
王悦:在微信小程序项目之前,我曾负责腾讯互娱高级营销系统的前端架构与开发,该系统承载着腾讯数百个游戏业务的日常营销活动。此外,我还负责过腾讯道聚城的前端架构与开发,覆盖了王者荣耀、LOL、CF等游戏道具的交易。在加入腾讯之前,我还负责过搜狐百社SNS的前端核心框架与模块开发,新浪微博的前端开发。
Q:小程序还没发布的时候,就有传言说小程序采用了类似RN的技术,发布之后发现还在运行,不知道实际情况是怎样的?
王悦:从技术实现的角度来说,无论是小程序、RN、还是Weex,它们都有一些共同点,比如JS与的通信机制,比如JS直接调用原生组件的渲染。比如在iOS平台,小程序和RN都是使用JS来执行。但是小程序和RN设计的初衷和场景是不一样的。我们知道小程序的场景主要在当前用户扫一扫就可以使用,用完即走的实际物理场景中。整个交互非常轻量,不涉及特别复杂的交互逻辑。因此在设计上考虑尽量简单。一是系统底层框架简单,二是开发者开发简单,三是用户使用简单。所以小程序大部分UI组件还是以H5渲染,而不是像RN那样设计的UI组件。
当然小程序本身也采用这种方式来解决部分组件的性能问题,所以解决方案中的选项主要基于实际场景考虑,而非纯技术考虑。
另外,准确的说,小程序并不是单单的跑进去,而是需要区分成不同的部分,这个在我的分享里会详细讲解。
Q:小程序运行在X5引擎上,X5团队有没有针对小程序做过什么特别的优化或者增加的功能?
王悦:微信版的浏览服务确实用了我们腾讯浏览器团队提供的X5引擎,在性能方面,小程序和X5团队一直保持着不断的沟通协调,双方都尽力优化,不断提升用户体验。

Q:刚发布的时候,有人发现小程序的部分代码和Vue有点相似,而且单向的数据流,让人思考小程序核心框架在开发的时候是出于什么考虑?
王悦:这个跟问题2类似,首先小程序和Vue有本质的区别,小程序需要特定层的支持,底层功能更强大,而Vue运行在通用之上,不需要特定的支持。但为什么大家会觉得它们有些类似呢?这主要是在数据绑定、事件绑定等部分的实现上有一些相似之处。当然这些技术没有好坏之分,主要还是看我们在什么场景下解决什么问题。
Q:iOS 和其他平台的小程序有一些区别,比如小程序图标可以放在主屏幕上,也有人发现微信小程序在网页端有单独的进程,你们对小程序有更深入的探索吗?
王悦:可以放在桌面,iOS 不可以,这个主要是OS层面的限制。至于运行方式,主要是以单独的View来承载,设置为单独的进程,主要是为了保证小程序的运行内存,和进程没有直接的联系。
正如上一个问题所说,小程序本身已经有几个组件采用 Web 化的方式实现,主要是为了保证小程序的执行效率,实现更好的用户体验。组件并不是针对某一个平台的,iOS 和 iOS 都有开发。未来是否会有更加标准化的实现,就看实际的组件是否符合我们采用 Web 化方式实现时对用户体验的标准。
Q:前段时间有人发现小程序有自己的脚本格式WXS,这是小程序新的DSL吗?
王悦:目前来说,WXS 对于小程序开发来说并不是必需的,它的主要目的是为增强 WXML 的数据处理能力而引入一种新的技术实现。实际的解析语言规范还是 JS,并没有引入新的语法,只是对 JS 做了上层的封装和限制。因此学习它基本没有什么成本,大致了解开发文档后就可以马上上手。WXS 和 DSL 在这里关系并不大,也没有可比性。
Q:小程序和PWA可以说代表了移动Web的两种不同发展路径,在别人看来,小程序更加务实,但大家也期待小程序更加开放,您怎么看这个?
王悦:这里想分享一下个人的想法,不代表官方观点。任何模式都是为了解决特定环境下的特定问题而设计的,所以PWA有它的应用场景,小程序也有它的应用场景。两种模式都有其优点和局限性。这两种模式的区别其实和我们现在的Web和App非常相似。Web提供的是比较通用和通用的功能(大部分功能和基本的使用体验),而个性化定制(更复杂的功能和交互体验)更能发挥当前平台的能力。我个人认为这两种模式会一直存在,关键是能不能给用户提供价值。但是未来这两种模式肯定会有越来越多的融合,就像Web和App的融合产生了一种模式一样。试想一下,未来肯定会出现一种新的模式,既能像PWA一样有更通用的操作场景(提供核心功能),同时又能根据当前的操作环境接入定制化的高级能力,实现Once, Run的美好愿景。
推荐活动:
如何用AI打造聊天机器人?如何利用机器学习获得2亿活跃用户?10月,QCon上海还将邀请Uber、百度、腾讯等顶尖技术专家,分享前沿实践经验。