微信小程序的双线程模型

微信小程序的双线程:
渲染线程脚本线程是分开运行的。
所以我们书写的 JavaScript 无法直接操作 DOM ,更新 UI ,因为驱动 UI 更新的永远是data

为什么小程序要使用双线程模型?
1.安全考虑。微信小程序是基于微信平台的,我们书写的业务代码只是注入到平台的一段程序,所以为了不危及到平台自身的安全,微信平台就以微信客户端Native作为中转站,渲染层和逻辑层分开通过Native进行通信。

2.提升性能,保证用户体验。因此没有采用 iframe 和 web worker 方案。将逻辑线程变成独立的“主线程”。

普通网页开发:
浏览器是多进程的,而不是单线程。 javaScript 语言是单线程。

浏览器在每个页签进程中,会用不同的线程去处理不同的事务。GUI渲染线程负责渲染页面,JS引擎线程负责解析和运行js代码,定时触发器线程则负责 setTimeout / setInterval 定时器等。

GUI渲染线程JS引擎线程之间采用的是互斥、阻塞的管理模式,也就导致了可能会出现脚本执行时间过长而页面奔溃的现象。就是因为这种互斥、阻塞的管理模式,会让一部分人觉得浏览器是单线程的。

你可能感兴趣的:(微信小程序的双线程模型)