小程序技术实现
小程序的UI视图和逻辑处理是用多个webview实现的,逻辑处理的JS代码全部加载到一个Webview里面,称之为AppService,整个小程序只有一个,并且整个生命周期常驻内存,而所有的视图(wxml和wxss)都是单独的Webview来承载,称之为AppView。所以一个小程序打开至少就会有2个webview进程,正是因为每个视图都是一个独立的webview进程。
AppService
可以理解AppService即一个简单的页面,主要功能是负责逻辑处理部分的执行,底层提供一个WAService.js的文件来提供各种api接口,主要是以下几个部分:
1、 消息通信封装为WeixinJSBridge
2、日志组件Reporter封装
3、wx对象下面的api方法
4、全局的App,Page,getApp,getCurrentPages等全局方法
5、还有就是对AMD模块规范的实现
AppView
这里可以理解为h5的页面,提供UI渲染,底层提供一个WAWebview.js来提供底层的功能,具体如下:
1、消息通信封装为WeixinJSBridge
2、日志组件Reporter封装
3、wx对象下的api
4、小程序组件实现和注册
5、VirtualDOM,Diff和Render UI实现
6、页面事件触发
Service和View通信
使用消息publish和subscribe机制实现两个Webview之间的通信,实现方式就是统一封装一个WeixinJSBridge对象,而不同的环境封装的接口不一样