小程序渲染原理
概括:一个宿主环境 + 两个线程(渲染层、逻辑层) + 开发API能力
小程序运行依赖于宿主环境,比如说微信小程序-微信,字节小程序-抖音等等,同时宿主环境会提供自身的能力,以开发API的形式暴露给小程序使用,这就体现出平台的能力、大小的优势了。
两个线程:渲染层(WebView进行渲染wxml+wxss+逻辑层data)、逻辑层(JsCore运行JS脚本)
逻辑层 App Service
- 交互:逻辑层将数据处理发送给视图层,同时接受视图层的事件反馈
- 不同点:
- js在web上一些能力无法使用,DOM和BOM API
- 增加App和Page方法,程序注册、页面注册
- 增加getApp和getCurrentPages,获取App实例和当前页面栈
- 微信自身能力的API
- 模块化能力
逻辑层发送网络请求也经由宿主native转发
程序运行与页面运行:
程序运行:
- 打开小程序之前,将整个小程序代码包下载到本地;
- 通过app.json的pages字段得知小程序所有页面路径;
- pages第一个字段为首页,装载首页代码,小程序底层机制渲染出整个页面
- app.js定义的唯一APP实例,onLaunch回调被执行(App实例是全部页面共享的)
页面运行:
- 页面文件有四部分组成:wxml、wxss、js、json
- 首先加载json配置文件生成界面,还可以通过配置顶部颜色和文字
- 宿主环境装载页面wxss、wxml
- 装载js,通过Page构造器生成一个页面
- 将data和wxml一起渲染出最终结构
生命周期:
小程序页面的初始化分为两个部分。
- 逻辑层初始化:载入必需的小程序代码、初始化页面 this 对象(也包括它涉及到的所有自定义组件的 this 对象)、将相关数据发送给视图层。
- 视图层初始化:载入必需的小程序代码,然后等待逻辑层初始化完毕并接收逻辑层发送的数据,最后渲染页面。
编辑 (opens new window)
上次更新: 2022/09/03, 11:03:41