Hybrid 方案(webview)
基于 webview 渲染,通过 JS Bridge 把一部分系统能力开放给 JS 调用
Webview 容器的工作原理是基于 Web 技术来实现界面和功能
通过将原生的接口封装,暴露给 js 调用,js 编写的页面可以运行在系统自带的 webview 中
这样的优势是对于前端开发者比较友好,可以很快实现页面跨端,同时保留调用原生的能力
通过搭建桥接层(bridge)和原生能力打通
但这种跨端的能力受限于桥接层,当调用之前没有的原生能力时需要增加桥 另外浏览器内核的渲染独立于系统组件,无法保证在原生上的体验
iOS
UIWebView
2018 年后已经被标记为 Deprecated 不再维护
一些交互逻辑需要使用类库或自己实现
WKWebview(推荐)
相对于 UIWebView
内存开销小很多,性能稳定性提升
支持右滑返回手势
滚动刷新率高达 60fps
可以直接和 JS 互相调函数,不像 UIWebView 需要第三方库 WebViewJavaScriptBridge 来协助
缺点:
- 不支持页面缓存,需要手动注入 cookie
- 无法发送 POST 参数
Android
- | Webkit | Chromium | 备注 |
---|---|---|---|
版本 | Android4.4 以下 | Android4.4 以上 | - |
JS 解释器 | WebCore JS | V8 | - |
H5 | 278 | 434 | - |
远程调试 | 不支持 | 支持 | Android4.4 及以上 |
内存占用 | 小 | 大 | 相差 20M~30M 左右 |
WebAudio | 不支持 | 支持 | Android5.0 及以上 |
WebGL | 不支持 | 支持 | Android5.0 及以上 |
WebRTC | 不支持 | 支持 | Android5.0 及以上 |
Android 第三方 X5 内核(推荐)
- 速度快,相比 webview 的网页打开速度有 30+%的提升
- 省流量:使用云端优化技术使流量节省 20+%
- 更安全:安全问题可以在 24 小时内修复
- 更稳定
- 兼容好:无系统内核的碎片化问题,更少的兼容性问题
- 体验优:支持夜间模式、适屏排版,字体设置等浏览增强功能
- 功能全:在 H5,ES6 上有更完整的支持
- 更强大:集成强大的视频播放器,支持视频格式远多于系统 webview
- 视 频和文件格式的支持 X5 内核多于系统内核
- 防劫持是 X5 内核的一大亮点
jsSDK 调用
- 原先
- 利用 Scheme url 中指定脚本,但是长度有限制
- iframe 依赖 JSsdk.js 文件
- 现在
- Webkit 无依赖 JSSDK.js 文件