这是我参与「第四届青训营 」笔记创作活动的第5天
便捷性
远好于公众号和H5页面的体验
释放手机内存空间
让手机桌面更加简洁
DOM Listeners: ViewModel层可以将DOM的监听绑定到Model层
Data Bindings: ViewModel层可以将数据的变量, 响应式的反应到View层
MVVM架构将我们从命令式编程转移到声明式编程
双线程模型: WXML模块和WXSS样式运行于渲染层,渲染层使用WebView线程渲染(一个程序有多个页面,会使用多个WebView的线程)。JS脚本运行于逻辑层,逻辑层使用JsCore运行JS脚本。这两个线程都会经由微信客户端(Native)进行中转 交互。
界面渲染过程在渲染层,宿主环境会把WXML转化成对应的JS对象;
将JS对象再次转成真实DOM树,交由渲染层线程渲染;
数据变化时,逻辑层提供最新的变化数据,JS对象发生变化比较进行diff算法对比;
将最新变化的内容反映到真实的DOM树中,更新UI;
什么是小程序
定义:微信小程序是一种全新的连接用户与服务的方式,它可以在微信内被便捷地获取和传播,同时具有出 色的使用体验。 小程序的优点:小程序的MVVM架构
Vue的MVVM和小程序MVVM对比 MVVM好在哪里?小程序的双线程模型
微信客户端是小程序的宿主环境,宿主环境为了执行小程序的各种文件:wxml文件、wxss文件、js文件提供了小程序的双线程模型双线程模型: WXML模块和WXSS样式运行于渲染层,渲染层使用WebView线程渲染(一个程序有多个页面,会使用多个WebView的线程)。JS脚本运行于逻辑层,逻辑层使用JsCore运行JS脚本。这两个线程都会经由微信客户端(Native)进行中转 交互。
界面渲染过程
小程序的启动流程
下载小程序包 -> 启动小程序 -> 加载解析app.json -> 注册App()【执行App生命周期】 -> 加载自定义组件代码、注册自定义组件 -> 加载解析page.json、渲染层加载渲染page.wxml、逻辑层注册Page()【执行Page生命周期】
注意事项
加载规则
1.小程序启动时,默认会下载主包并启动主包内页面(所以tabBar放主包里面)
2.用户访问某个分包页面的时候,客户端会把对应包下载下来
大小限制:
一个包不能超过2M,所有包加起来不能超过20M
独立分包
一种特殊的分包,可以不依赖主包独立运行
独立分包与其他分包之间相互隔绝,不能相互引用资源
使用场景
有的功能不依赖主包即可运行,但是进入小程序时却需要默认下载主包——这时候就该独立分包了
使用方式:
需要在app.json对每个包的设置中加上independent字段并设置为true
预下载
在进入某个页面时,由框架自动预先下载好之后可能需要的分包,从而优化进入后续分包页面的速度
使用方式:
在app.json中使用preloadRule字段配置预下载
一个分包的预下载大小限额:2M,超出的部分会下载失败