手机端基于WebView的混合开发是一种低成本、跨平台且便于组件化的集成方案,通过WebView加载Web页面,结合JSbridge实现父子页面通信,并统一UI与接口规范以完成协作开发。具体技术细节如下:
基于WebView的混合开发优势- 低成本:使用HTML/JS/CSS等Web语言开发,这些语言流行度高、易上手且用户基数大,跨平台性强,一套代码可部署到多个平台。
- 性能代价小:与原生控件相比,虽然浏览器套壳性能略低,但UI界面本身对性能占用不高,且随着移动端硬件更新换代,其性能影响可忽略不计。
- 方便组件化:能轻松整合其他厂家开发的页面到APP中,无需强制所有厂家使用相同技术。例如淘宝、支付宝等APP,外面是原生APP的壳,里面大量使用H5页面。
父子页面通讯- 通讯方式:主页和子页处于不同进程,通过双方事件响应机制传递序列化格式信息,移动端混合开发中最常用JSON或二进制格式。
- 通信桥梁:无论何种格式,都需通过官方提供的接口JSbridge通信,通信规则需与各厂家协商一致。原生(java)和H5(js)双向通信涉及的关键函数如下:
UI与接口的协商与负责业务子系统的各厂家完成组件化协作开发,需在UI和接口两方面保持一致:
- UI规范:推荐使用Vue + Vant框架组合统一样式和操作习惯。
VueJS:最流行的H5框架,具有渐进式特性。官网:
https://cn.vuejs.org/
Vant:国产开源的基于Vue的UI框架,有完整中文文档,具有轻量级、可按需引入、基于Vue/React和微信小程序、支持Typescript和SSR等特性。官网:
https://youzan.github.io/vant/
其他常用第三方库:
ESlint:TS/JS代码格式/语义检查工具,包括prettier。
Webpack:项目打包发布工具,包括Babel。
TypeScript:有类型的TS语言。
scss/less:CSS预编译语言。
- 接口规范:定义以JSON为基础的通信格式,用于父子页面间调用对方功能并传递参数。示例如下:
//js向java申请摄像头使用权限{ "type":"callCamera", "deviceId":"Logitech-C1000e", "token":"94c2ceef2a334"}//java向js传绘图数据{ "type":"chartService", "data":[1.0,2.0,3.0,4.0], "chartType":"line"}权限控制权限控制主要由开发的主页完成,由主页决定哪个用户能进入哪个子页面。若子页面需参与鉴权,则通过JSbridge通信。