🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] ### 5.4.1 视图层组件 内置组件中有部分组件(原生组件)是利用到客户端原生提供的能力,就会涉及到视图层与客户端的交互通信。 这层通信机制在 iOS 和安卓系统的实现方式并不一样, * `iOS` 是利用了WKWebView 提供的 messageHandlers 特性, * `安卓`则是往 WebView 的 window 对象注入一个原生方法,最终会封装成 WeiXinJSBridge 这样一个兼容层,主要提供了调用(`invoke`)和监听(`on`)这两种方法。 开发者插入一个原生组件,一般而言,开发者只是间接调用的,真正调用是在组件的内部实现。组件运行的时候在被插入到 DOM 树的生命周期里,就会调用客户端接口,通知客户端在哪个位置渲染一块原生界面。在后续开发者更新组件属性时,同样地,也会调用客户端提供的更新接口来更新原生界面的某些部分。 ### 5.4.2 逻辑层接口 逻辑层与客户端原生通信机制与渲染层类似,不同在于,iOS平台可以往JavaScripCore框架注入一个全局的原生方法,而安卓方面则是跟渲染层一致的。 同样地,开发者也是间接地调用到与客户端原生通信的底层接口。一般我们会对逻辑层接口做层封装后才暴露给开发者,封装的细节可能是统一入参、做些参数校验、兼容各平台或版本问题等等。