小程序2——MINA框架、运行机制
小程序2——MINA框架、运行机制
一、MINA框架
1. 介绍
- View视图层:搭建视图结构和展现样式。
- App Service逻辑层:处理事物逻辑的地方,是MINA数据交互的服务中心。
- Native系统层:接入了微信客户端的原生能力。
2.view与App Service是双线程通信
在逻辑层发生数据变更的时候,需要通过App Service提供的setData() 方法,把数据从逻辑层传到视图层。view视图层会把接受到的数据进行前后差异的对比 ,这个差异是通过Diff算法计算的,然后把有差异的部分应用在节点树上,正确渲染出来。
AAST(抽象语法树)https://segmentfault.com/a/1190000016231512
wxs文件与wxml、wxss 一起在UI线程中运行的,平时我们从服务器中请求到数据时通常会做一个转换或者通过filter()函数处理,而微信把这些处理放进UI线程中操作,当App Service线程遇到阻塞的时候,UI线程可以正常处理和渲染视图 ,避免了跨线程通信的消耗。(小程序优化其中一个点)
二、小程序运行机制
1. 冷启动
指的是用户首次打开或小程序被微信销毁后重新打开的情况。
小程序主动销毁的两种情况:
- 当小程序进入后台,客户端会在一定时间内(5分钟)维持小程序的状态,超出这个时间便会销毁。
- 当短时间内(间隔5s)连续两次收到小程序告警的时候,微信会主动销毁。
2. 热启动
指的是用户在第一次打开小程序后一定时间内再次打开,此时不会重新启动小程序,而是把后台开的小程序切换到前台来使用。
当首次启动小程序之后,再次打开小程序时遇到版本更新,这时候会异步下载最新版本代码包并同时用本地客户端的包进行启动,而下载的代码包则会在下一次启动时运行。如果需要马上用到最新版本代码包,可以通过一个API 来处理。
3. 加载
生命周期
1. 程序生命周期—— onLaunch、onShow、onHide、onError
官方文档:https://developers.weixin.qq.com/miniprogram/dev/reference/api/App.html
1. 页面生命周期——onLoad、onShow、onReady、onHide、onUnload
官方文档:https://developers.weixin.qq.com/miniprogram/dev/reference/api/Page.html
在小程序首次启动之后,View和AppService线程同时创建。AppService会一次调用onLoad()、onShow()方法,一般在这两个方法内请求服务器数据。
View线程在初始化完毕之后会告诉AppService线程, 然后AppService线程会发送初始化数据,View线程拿到数据后进行首次渲染。渲染完成之后,告诉AppService线程,调用onReady()方法,此时已经从服务器上拿到数据,发送给View视图层再次渲染。