ITPub博客

首页 > 应用开发 > IT综合 > 冷门前端知识,介绍双线程的小程序!

冷门前端知识,介绍双线程的小程序!

IT综合 作者:陕西优就业 时间:2019-04-30 11:19:51 0 删除 编辑

小程序的渲染层和逻辑层分别由2个线程理:渲染层的界面使用了WebView进行渲染,逻辑层采用JsCore线程运行JS脚本。为什么要这么设计呢?跟 陕西优就业 小编一起看看吧!

管控和安全,为了解决这些问题,我们需要阻止开发者使用一些浏览器提供的,诸如跳转页面、操作 DOM、动态执行脚本的开放性接口。

我们可以使用客户端系统的JavaScript引擎,iOS下的JavaScriptCore 框架,安卓下腾讯x5内核提供的 JsCore环境。通过提供一个沙箱环境来运行开发者的JavaScript代码来解决。这个沙箱环境只提供纯JavaScript的解释执行环境,没有任何浏览器相关接口。

这就是小程序双线程模型的由来:

1.逻辑层:创建一个单独的线程去执行JavaScript,在这个环境下执行的都是有关小程序业务逻辑的代码

2.渲染层:界面渲染相关的任务全都在WebView线程里执行,通过逻辑层代码去控制渲染哪些界面。一个小程序存在多个界面,所以渲染层存在多个WebView线程

双线程通信:

把开发者的JS逻辑代码放到单独的线程去运行,但在Webview线程里,开发者就没法直接操作DOM。那要怎么去实现动态更改界面呢?

前面我们知道,逻辑层和渲染层的通信会由 Native 做中转,逻辑层发送网络请求也经由Native转发。这是不是意味着,我们可以把 DOM 的更新通过简单的数据通信来实现呢?

Virtual DOM 相信大家都已有了解,大概是这么个过程:用 JS 对象模拟 DOM 树 -> 比较两棵虚拟 DOM 树的差异 -> 把差异应用到真正的 DOM 树上。

在渲染层把 WXML 转化成对应的JS对象。

在逻辑层发生数据变更的时候,通过宿主环境提供的setData方法把数据从逻辑层传递到Native,再转发到渲染层。

经过对比前后差异,把差异应用在原来的DOM树上,更新界面。

我们通过把WXML转化为数据,通过Native进行转发,来实现逻辑层和渲染层的交互和通信。而这样完整的一套框架,基本上都是通过小程序的基础库来完成的。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69902581/viewspace-2642983/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
我要做IT大佬 请叫我大佬

注册时间:2018-12-13

  • 博文量
    157
  • 访问量
    226479