跳到主要内容

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

-WebkitChromium备注
版本Android4.4 以下Android4.4 以上-
JS 解释器WebCore JSV8-
H5278434-
远程调试不支持支持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 文件