>[success] # 小程序架构模型
1. 微信客户端作为宿主环境为了执行小程序的各种文件:**wxml文件、wxss文件、js文件**
2. 小程序基于 `WebView `环境下运行的,`WebView `弊端就是 **JS 逻辑、DOM 树创建、CSS 解析、样式计算、Layout、Paint (Composite) 都发生在同一线程,在 WebView 上执行过多的 JS 逻辑可能阻塞渲染,导致界面卡顿**,因此微信做了优化**采用了目前称为「双线程模型」的架构**
![](https://img.kancloud.cn/90/d2/90d2f1aa2c268216f7faadd23e634ddf_683x489.png)
* `WXML`模块和`WXSS`样式运行于 渲染层,渲染层使用`WebView`线程渲染(一个程序有多个页面,会使用多个`WebView`的线程)
* JS脚本运行于 逻辑层,逻辑层使用`JsCore`运行`JS`脚本
* 这两个线程都会经由微信客户端(`Native`)进行中转交互
* 小程序的运行环境
| **运行环境** | **逻辑层** | **渲染层** |
| --- | --- | --- |
| iOS | JavaScriptCore | WKWebView |
| 安卓 | V8 | chromium定制内核 |
| 小程序开发者工具 | NWJS | Chrome WebView |
>[danger] ##### 小程序和普通网页开发区别
1. **网页开发渲染线程和脚本线程是互斥的**,这也是为什么长时间的脚本运行可能会导致页面失去响应,而在小程序中,二者是分开的,分别运行在不同的线程中。
2. 网页开发者可以使用到各种**浏览器暴露出来的 DOM API,进行 DOM 选中和操作**。但注意小程序的js 是运行在单独的线程容器`JSCore `中,并没有一个完整浏览器对象,因而缺少相关的**DOM API和BOM API。**
3. 网页开发者需要面对的环境是各式各样的浏览器,PC 端需要面对` IE、Chrome、QQ`浏览器等,在移动端需要面对**Safari、Chrome以及 iOS、Android 系统中的各式 WebView **。而小程序开发过程中需要面对的是两大操作系统 iOS 和 Android 的微信客户端,以及用于辅助开发的小程序开发者工具,**小程序中三大运行环境也是有所区别的**
>[danger] ##### skyline
1. [skyline](https://developers.weixin.qq.com/miniprogram/dev/framework/runtime/skyline/introduction.html)小程序的一个实验属性,介绍提供更为接近原生的用户体验,我们在 WebView 渲染之外新增了一个渲染引擎 Skyline,其使用更精简高效的渲染管线,并带来诸多增强特性,让 Skyline 拥有更接近原生渲染的性能体验。
- 小程序了解
- webview 是什么
- Native App、Web App、Hybrid App
- 小程序架构模型
- 小程序配置文件
- app.js -- App函数
- 页面.js -- page
- 生命周期????
- 小程序 -- 页面wxml
- 小程序 -- WXS
- 小程序 -- 事件
- 小程序 -- 样式wxss
- 小程序 -- 组件开发
- 小程序 -- 组件插槽
- 小程序 -- 组件的生命周期
- 组件总结
- 小程序 -- 混入
- 小程序基本组件
- text -- 文本
- view -- 视图容器
- button -- 按钮
- image -- 图片
- scroll-view -- 滚动容器
- input -- 双向绑定
- 通用属性
- 小程序常用Api
- 微信网络请求
- 微信小程序弹窗
- 微信小程序分享
- 获取设备信息 / 获取位置信息
- Storage存储
- 页面跳转
- 小程序登录