Skip to content

JS Bridge 技术对比分析

JS Bridge

让 JavaScript 运行环境调用宿主原生能力的一种桥接机制。

四类容易混淆的技术

  • 浏览器唤起 App
    • 自定义协议/Universal Links/Android Intent
    • <a href="steam://run/123">打开 Steam</a>
    • steam://、vscode://、wechat://
  • Electron 的桥接
    • Chromium renderer + preload 做桥 + contextBridge + IPC 完成受控调用
  • 移动端 WebView 混合开发
    • WebView 本质上是“App 里的嵌入式网页渲染控件”,有浏览器内核能力,但不是一个完整浏览器产品
    • 安卓:WebView 和 addJavascriptInterface(),允许把 Java/Kotlin 对象暴露给 WebView 中的 JS。
    • ios:Apple 官方的 WKWebView 通过 WKScriptMessageHandler 让网页侧 JS 可以向原生发送消息。
  • 桌面端 webwiew
    • Qt WebChannel:支持 C++/QML 与 HTML/JS 通信。
    • Microsoft WebView2:支持 web/native interop,并可把 host object 暴露给页面。
    • CEF:支持 JS binding 与进程间消息。

electron 的优势

  • 传统 WebView/CEF/Qt 路线里,JS 能做什么,往往取决于原生封了多少接口。
  • Electron 则天然提供 Node.js 和 Electron 桌面 API 体系。
  • 以前很多桥都需要开发者自己造;Electron 则内建了 preload、IPC、安全模型和桥接 API。

移动端 js bridge

  • Capacitor
    • 原生 App + WebView + JS Bridge
  • Tauri 2
    • 桌面宿主 + WebView + Rust command bridge(本来)
    • v2 增加支持移动端