⼩程序的架构
1、什么是⼩程序
⼩程序是介于web⽹页应⽤和原⽣应⽤的⼀种产物;⼩程序类web,但不是HTML5;即⽤即⾛,随⼿可得;拥有离线能⼒;基于跨平台。
2、⼩程序架构
(1)⼩程序主要模块构成
⼩程序⾃⾝分为两个主要部分独⽴运⾏:view 模块和 service 模块。在开发者⼯具中,它们独⽴运⾏于不同的 webivew tag 中。
view 模块负责前端界⾯显⽰,它由 wxml 和 wxss 转换后代码以及提供相关辅助模块组成。 ⼀个 view 模块对应⼀个 页⾯, ⼩程序⽀持同时多个 view 存在。
service 模块负责后台逻辑,它由 js 代码以及提供的相关辅助模块组成。 ⼀个应⽤只有⼀个 service 进程,它同样也是⼀个页⾯。它在程序⽣命周期内后台运⾏,service 模块通过与 view 模块实现不同但接⼝格式⼀样的JSBridge 对象跟后台通信。
上图是⼩程序视图层和逻辑层的结构⽰意图。可以看到:
视图层和逻辑层分离,通过数据驱动,事件交互,不直接操作DOM;视图层负责渲染页⾯结构,逻辑层负责逻辑处理、数据请求、接⼝调⽤等。
视图层与逻辑层通过数据data和事件event进⾏通信,逻辑层提供数据给视图层,视图层通过绑定/捕获事件发起交互让逻辑层处理视图使⽤WebView渲染,JS由JSCore(IOS)/ X5(Android) /nmjs(DevTool)渲染解析
(2)⼩程序模块间通信
上图是⼩程序模块通信情况图,可以清楚地看到视图层及逻辑层之间的通信结构。
3、⼩程序的⽣命周期
⽤⼀下实例来观察页⾯的⽣命周期:
由上图可知,⼩程序由两⼤线程组成:负责界⾯的视图线程和负责数据、服务处理的服务线程,两者协同⼯作,完成⼩程序页⾯⽣命周期的调⽤。
(1)视图线程有四个状态:
初始化状态:初始化视图线程所需要的⼯作,初始化完成后向 “服务线程”发送初始化完成信号,然后进⼊等待状态,等待服务线程提供初始化数据。代码转换
⾸次渲染状态:当收到服务线程提供的初始化数据后,渲染⼩程序界⾯,渲染完毕后,发送“⾸次渲染完成信号”给服务线程,并将页⾯展⽰给⽤户。
持续渲染状态:此时界⾯线程继续⼀直等待“服务线程”通过界⾯数据,只要收到就重新局部渲染,因此只要更新数据并发送信号,界⾯就⾃动更新。
结束状态:页⾯被回收或者销毁、应⽤被系统回收、销毁时触发。
(2)服务线程五个状态:
初始化状态:此阶段仅启动服务线程所需的基本功能,⽐如信号发送模块。系统的初始化⼯作完毕,就调⽤⾃定义的onload和onshow,然后等待视图线程的“视图线程初始化完成”。
等待激活状态:接收到“视图线程初始化完成”信号后,将初始化数据发送给“视图线程”,等待视图线程完成初次渲染。
激活状态:收到视图线程发送来的“⾸次渲染完成”信号后,就进⼊激活状态既程序的正常运⾏状态,并调⽤⾃定义的onReady()函数。此状态下就可以发送界⾯数据给界⾯线程进⾏局部渲染,更新页⾯。
后台运⾏状态:如果界⾯进⼊后台,服务线程就进⼊后台运⾏状态,
结束状态:页⾯被回收或者销毁、应⽤被系统回收、销毁时触发。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论