小程序与普通h5页面的区别
h5页面:
- 渲染线程和脚本线程是互斥的,长时间的脚本运行可能会导致页面失去响应
- 网页开发者可以使用到各种浏览器暴露出来的 DOM API,进行 DOM 选中和操作
小程序:
- 渲染线程和脚本线程是分开的,分别运行在不同的线程中
- 小程序的逻辑层和渲染层是分开的,逻辑层运行在 JSCore 中,并没有一个完整浏览器对象,因而缺少相关的DOM API和BOM API
小程序的运行环境:
运行环境 | 逻辑层 | 渲染层 |
---|---|---|
IOS | JavaScriptCore | WKWebView |
Android | V8 | chromium定制内核 |
IDE | NWJS | Chrome WebView |
小程序的渲染层和逻辑层关系
小程序架构
小程序的运行环境分成渲染层和逻辑层,其中 WXML 模板和 WXSS 样式工作在渲染层,JS 脚本工作在逻辑层。
小程序的渲染层和逻辑层分别由2个线程管理:渲染层的界面使用了WebView 进行渲染;逻辑层采用JsCore线程运行JS脚本。一个小程序存在多个界面,所以渲染层存在多个WebView线程,这两个线程的通信会经由微信客户端做中转,逻辑层发送网络请求也经由Native转发,小程序的通信模型如图所示。