从微信小程序的演进看Hybrid

425 阅读2分钟

微信小程序的过去

微信小程序自诞生以来可以说已经成为了前端生态圈中的重要成员。微信小程序提供了大量的微信app的能力和其他原生应用的能力,并且在开发中尽可能的降低了学习曲线。这来源于微信小程序用了JScore和webview渲染的方案。 简单描述就是在微信小程序中,一个页面就是一个webview,这样dom,样式,事件都可以在这个webview中进行处理,而整个页面dom的计算,js逻辑代码,数据处理,其他对于微信能力调用操作等是放在了jscore中,二者都通过JSbridge与微信native层通信。

原方案的痛点

上面的方案其实一直以来都存在一些问题,也一直在开发中困扰着开发者。比如:

  1. JSbridge的序列化与反序列化带来的性能问题和开销,这个可以从微信的setData给大家的提示中可见一斑。
  2. 一个页面一个webview带来的体验下降,虽然微信对于webview进行复用,但是一个完整webview的打开带来的内存压力和计算压力也是一定存在的。
  3. 多页面之间的通信问题,这个也是来自于每个页面单独webview带来的。

skyline

官方介绍 这里可以看出skyline是对于原本webview渲染提供的新的替代方案。skyline采用了原生渲染的方式,这种改动必然会带来dom和css的’抛弃‘。这里之所以用了引号,是因为skyline对于dom和css,其实是采用了dsl解析+原生组件还原的方式进行了平替。当然这种平替肯定是不完整的。差异 在迁移成本可控,迁移问题可排查可验证的情况下,可以遇见未来skyline应该是有机会代替webview方案的。

展望

从微信小程序的这一改动来看,webview+JSbridge可能是会慢慢退出历史舞台了。这其实会给前端开发带来新的要求,比如对于原生渲染的认知差异,样式及dom兼容性差异,组件的认知差异,调试和问题排查的差异。