zoukankan      html  css  js  c++  java
  • 小程序的双线程模型

    微信客户端作为小程序的宿主环境,为了能够执行小程序的各种文件(wxml文件、wxss文件、js文件),提供了双线程模型。

    双线程模型:

    • WXML模块和WXSS样式运行与渲染层,渲染层使用WebVIew线程渲染(一个程序有多个页面,会使用多个WebView的线程)
    • JS脚本运行于逻辑层,逻辑层使用jsCore运行JS脚本。
    • 这两个线程都会经由微信客户端(Native)进行中转交互。

    界面渲染过程:

    WXML先转换为js对象,再渲染成DOM树。每当小程序视图有数据需要更新时,逻辑层会调用小程序宿主环境提供的setData方法将数据从逻辑层传递到视图层,经过一系列渲染之后完成UI视图的更新。

    • 小程序逻辑层调用宿主环境的setData方法。
    • 逻辑层执行JSON.stringify将待传输数据转换成字符串并拼接到特定的js脚本,并通过evaluateJavaScript执行脚本将数据传输到渲染层
    • 渲染层接收到后,WebView JS线程会对脚本进行编译,得到待更新数据后进入渲染队列等待WebView线程空闲时进行页面渲染。
    • WebView 线程开始执行渲染时,待更新数据会合并到视图层保留原始data数据,并将新数据套用在WXML片段中得到新的虚拟节点数。经过新虚拟节点树与当前节点树的diff对比,将差异部分更新到UI视图。同时,将新的节点树替换旧节点树,用于下一次重渲染。
  • 相关阅读:
    Java 基础
    Java 数据类型
    Spring 拦截器实现事物
    SSH 配置日记
    Hibernate 知识提高
    Jsp、Servlet
    leetcode 97. Interleaving String
    leetcode 750. Number Of Corner Rectangles
    leetcode 748. Shortest Completing Word
    leetcode 746. Min Cost Climbing Stairs
  • 原文地址:https://www.cnblogs.com/mangM/p/12236817.html
Copyright © 2011-2022 走看看