小程序
作者:互联网
为什么小程序不使用浏览器的线程模式?而使用双线程模式?
浏览器并不是单线程而是多线程的
GUI渲染线程(图形用户界面):负责把html渲染成可视化ui
Javascript引擎线程:负责解析和运行代码逻辑
定时触发器线程:负责处理setTimeout/setInterval定时器
web Worker由于worker的线程安全特性,worker内的Javascript代码无法获取window和document对象也无法操作dom
shadow dom 是Web components规范的一部分,将shadowRoot的模式设置为closed就可以禁止获取到ShadowRoot节点,从而也无法操作内部的dom
shadow DOM兼容性更差,所以使用web Worker
小程序的双线程指的就是渲染线程和逻辑线程,这两个线程分别承担ui的渲染和执行Javascript代码的工作,由Native作为中间媒介进行转发
渲染线程使用webview=》渲染ui
逻辑线程=》逻辑处理,数据请求,接口调用
采用逻辑驱动通信方式
渲染层(视图层),通过用户的交互触发指定的事件event,event传递给逻辑层
逻辑层继而通过一系列操作(逻辑处理、数据请求,接口调用)将加工好的数据data传递给渲染层,渲染层将data渲染成ui
小程序双线程规避了web worker的性能,达到了与之相同的安全
双线程受限于浏览器现有的进程和线程管理模式
标签:web,逻辑,渲染,程序,线程,双线,ui 来源: https://www.cnblogs.com/zhihou/p/14473844.html