微信小程序实战项目 关于微信小程序的技术,也许你的想法是错误的

微信小程序于2017年1月9日正式上线,在过去的一年里,无论外界评价如何,小程序都在坚定的向前迈进,同时其理念和模式也得到了众多企业的广泛认可和效仿。

在微信小程序还在内测的时候,人们对它所用到的技术就有很多猜测。小程序的正式发布回答了人们的一些疑问,但还有一些问题官方还没有正式对公众说。在10月17日即将举行的QCon上海2017大会上,微信小程序项目负责人王悦将分享小程序的核心架构和实战案例。我们也对他进行了采访,提前了解到了一些大家关心的问题。

受访者介绍

王悦(微信ID:springwang),微信小程序项目负责人,拥有十余年前端开发经验,曾就职于搜狐、新浪,2013年加入腾讯,负责互动游戏营销系统、道聚城等多个项目的前端架构与开发,对小程序底层架构原理有深入研究和理解,有多个腾讯小程序开发实战经验。

Q:王总您好,请问您在负责小程序前端之前是做什么的?

王悦:在微信小程序项目之前,我曾负责腾讯互娱高级营销系统的前端架构与开发,该系统承载着腾讯数百个游戏业务的日常营销活动。此外,我还负责过腾讯道聚城的前端架构与开发,覆盖王者荣耀、LOL、CF等游戏道具的交易。在加入腾讯之前,我还负责过搜狐百社SNS的前端核心框架与模块开发,新浪微博的前端开发。

Q:小程序还没发布的时候,就有传言说小程序使用了类似RN的技术,发布之后发现还是在WebView中运行,不知道实际情况是怎样的?

王悦:从技术实现的角度来说微信小程序实战项目,无论是小程序、RN、还是Weex,它们都有一些共同点,比如JS与Native的通信机制,比如JS直接调用原生组件的渲染。比如在iOS平台,小程序和RN都是使用JavaScriptCore来执行JS。但是小程序和RN设计的初衷和场景是不一样的。我们知道小程序的场景主要在目前用户扫一扫就可以使用,用完即走的这种实际物理场景。整个交互非常轻量,不涉及特别复杂的交互逻辑。因此在设计上考虑尽量简单。一是系统底层框架简单,二是开发者开发简单,三是用户使用简单。所以小程序大部分UI组件还是以H5渲染,而不是像RN那样设计成Native UI组件。

当然,小程序本身也采用了Native的方式来解决部分组件的性能问题,所以解决方案中的选项主要基于实际场景考虑,而非纯技术考虑。

另外,准确的说,小程序并不是只运行在Webview中,还需要区分不同的部分,这个在我的分享里会详细讲解。

Q:Android 版小程序运行在 X5 引擎上,X5 团队有没有针对小程序做过什么特别的优化或者新增功能?

王悦:微信Android版的浏览服务确实用了我们腾讯浏览器团队提供的X5引擎,在性能方面微信小程序实战项目,小程序和X5团队一直保持着沟通协调,双方都尽可能的进行优化,不断提升用户体验。

Q:刚上线的时候有人发现小程序部分代码和 Vue 有点相似,单向数据流让人想起了 React。在开发小程序核心框架的时候,你们是怎么考虑的?

王悦:这个跟问题2类似,首先小程序和Vue、React是有本质区别的,小程序需要特定的Native层支持,底层功能更强大,而Vue、React运行在通用的WebView上,不需要特定的Native支持。但为什么大家会觉得他们有些类似呢?这主要是在数据绑定、事件绑定等部分的实现上有一些相似之处。当然这些技术没有好坏之分,主要还是看我们在什么场景下解决什么问题。

Q:iOS 和 Android 平台的小程序有一些区别,比如 Android 上可以把小程序图标放在主屏幕上,也有人发现 Android 上微信小程序有独立进程,小程序有没有探索过更多 Android 原生的方面?

王悦:Android可以放到主屏,iOS不可以,这个主要是OS层面的限制。至于Android下的运行方式,主要是通过单独的Activity来承载View。设置为单独进程,主要是为了保证小程序的运行内存,和Nativeization没有直接的联系。

正如上一个问题所说,小程序本身的几个组件都是使用 Native 方式实现的,主要是为了保证小程序的执行效率,实现更好的用户体验。Native 组件并不是单单针对 Android 平台,Android 和 iOS 都可以使用。未来是否会有更多 Native 实现,取决于实际组件使用 Web 实现时是否符合我们的用户体验标准。

Q:前段时间有人发现小程序有自己的脚本格式WXS,这是小程序新的DSL吗?

王悦:目前来说,WXS 对于小程序开发来说并不是必需的,它的主要目的是为增强 WXML 的数据处理能力而引入一种新的技术实现,实际的解析语言规范还是 JS,并没有引入新的语法,只是对 JS 做了上层的封装和限制。因此学习它基本没什么成本,大致了解开发文档后就可以马上上手。WXS 和 DSL 在这里关系并不大,也没有可比性。

Q:小程序和PWA可以说代表了移动Web的两种不同发展路径,在别人看来,小程序更加务实,但大家也期待小程序更加开放,您怎么看这个?

王悦:这里想分享一下个人的想法,不代表官方观点。任何模式都是为了解决特定环境下的特定问题而设计的,所以 PWA 有它的应用场景,小程序也有它的应用场景。两种模式都有其优点和局限性。这两种模式的区别其实很像我们现在的 Web 与 Native,Web 提供的是相对通用、通用的功能(大部分功能和基础的使用体验),而个性化定制(更复杂的功能和交互体验)更能发挥当前平台的能力。我个人认为这两种模式会一直存在,关键是看能不能给用户提供价值。但是未来这两种模式肯定会有越来越多的融合,就像 Web 与 Native 的融合产生了 Hybrid 模型一样。试想一下,未来肯定会出现一种新的模式,既能像 PWA 一样有更通用的操作场景(提供核心功能),同时又能根据当前的操作环境接入定制化的高级能力,实现 Write Once, Run Anywhere 的美好愿景。

推荐活动:

谷歌如何利用AI打造聊天机器人?Pinterest如何利用机器学习获得2亿活跃用户?10月的QCon上海还将邀请Uber、Paypal、LinkedIn、Airbnb等公司的顶尖技术专家分享前沿的实践经验。

© 版权声明
THE END
喜欢就支持一下吧
点赞143赞赏 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容