双线程机制作为小程序的特性之一,渲染层和逻辑层分别由2个线程管理。WXML 模板和 WXSS 样式运行在渲染层,使用WebView 进行渲染,而JS 脚本由JsCore线程运行,作为逻辑层,逻辑层与渲染层的交互由Native(微信客户端)进行转发,这与我们传统的web开发有所不同。web开发中,渲染进程与逻辑进程是互斥的,运行复杂的交互时,渲染进程就会被挂起,等待逻辑进程运行完毕释放,这样可能会出现一些性能问题。而且,开发者可以通过js操作界面的Dom,一些敏感数据因此就会暴露。
双线程机制通过Native完美解决了进程互斥的问题,但也并不是完美无缺,web技术可以在线及时更新,而这种双线程机制必需将代码打包提交到微信官方进行审核,才能发布,给开发者制造了一层屏障。并且,JsCore没有一个完整的窗口对象环境,无法进行DOM API和BOM API的选中和操作,一些我们常用js库,失去了用武之地。万幸的是,官方提供了一套专用的脚本wxs(js阉割版本),通过wxs可以实现简单的页面重构。
小程序的双进程机制与web技术相比,对性能有明显的提升,却也限制了开发者的自由,提高了管控!孰优孰劣,还需要结合自身的应用环境!技术与架构本身就没有好坏之分,每一种技术的发布,其目的都在为开发提供多元化的方式!
本文出自三河汇尤佳,转载请注明出处!