songbensong songbensong
首页
  • 学习笔记

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
    • 《Git》
    • TypeScript
    • JS设计模式总结
HTML/CSS
JavaScript
计算机网络
操作系统
更多
  • 分类
  • 标签
GitHub (opens new window)

松本松

一直在路上
首页
  • 学习笔记

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
    • 《Git》
    • TypeScript
    • JS设计模式总结
HTML/CSS
JavaScript
计算机网络
操作系统
更多
  • 分类
  • 标签
GitHub (opens new window)
  • HTML

    • 页面HTML-知识点
    • 什么是BFC
    • defer与async属性
    • 常用meta整理
    • 小程序渲染原理
    • DOM事件流 && DOM0 - DOM3 事件模型 && DOM事件流应用场景(冒泡、事件委托)
  • CSS

  • 页面
  • HTML
simonzhangs
2022-08-28

小程序渲染原理

概括:一个宿主环境 + 两个线程(渲染层、逻辑层) + 开发API能力

小程序运行依赖于宿主环境,比如说微信小程序-微信,字节小程序-抖音等等,同时宿主环境会提供自身的能力,以开发API的形式暴露给小程序使用,这就体现出平台的能力、大小的优势了。

两个线程:渲染层(WebView进行渲染wxml+wxss+逻辑层data)、逻辑层(JsCore运行JS脚本)

逻辑层 App Service

  • 交互:逻辑层将数据处理发送给视图层,同时接受视图层的事件反馈
  • 不同点:
    • js在web上一些能力无法使用,DOM和BOM API
    • 增加App和Page方法,程序注册、页面注册
    • 增加getApp和getCurrentPages,获取App实例和当前页面栈
    • 微信自身能力的API
    • 模块化能力

逻辑层发送网络请求也经由宿主native转发

Untitled

程序运行与页面运行:

程序运行:

  • 打开小程序之前,将整个小程序代码包下载到本地;
  • 通过app.json的pages字段得知小程序所有页面路径;
  • pages第一个字段为首页,装载首页代码,小程序底层机制渲染出整个页面
  • app.js定义的唯一APP实例,onLaunch回调被执行(App实例是全部页面共享的)

页面运行:

  • 页面文件有四部分组成:wxml、wxss、js、json
  • 首先加载json配置文件生成界面,还可以通过配置顶部颜色和文字
  • 宿主环境装载页面wxss、wxml
  • 装载js,通过Page构造器生成一个页面
  • 将data和wxml一起渲染出最终结构

生命周期:

小程序页面的初始化分为两个部分。

  • 逻辑层初始化:载入必需的小程序代码、初始化页面 this 对象(也包括它涉及到的所有自定义组件的 this 对象)、将相关数据发送给视图层。
  • 视图层初始化:载入必需的小程序代码,然后等待逻辑层初始化完毕并接收逻辑层发送的数据,最后渲染页面。

Untitled

编辑 (opens new window)
上次更新: 2022/09/03, 11:03:41
常用meta整理
DOM事件流 && DOM0 - DOM3 事件模型 && DOM事件流应用场景(冒泡、事件委托)

← 常用meta整理 DOM事件流 && DOM0 - DOM3 事件模型 && DOM事件流应用场景(冒泡、事件委托)→

最近更新
01
DOM事件流 && DOM0 - DOM3 事件模型 && DOM事件流应用场景(冒泡、事件委托)
09-18
02
必备书单
09-11
03
url全过程
09-10
更多文章>
Theme by Vdoing | Copyright © 2022-2022 simonzhangs | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式