请解释 JSBridge 的核心概念,并说明在 H5 混合开发中,H5 页面与原生 App 之间进行通信的主要机制和实现方式。
考察说明
考查对混合开发中 H5 与原生通信机制的理解,包括 JSBridge 的原理和常见实现。
回答思路
- 【回答框架 1】JSBridge 是 H5 与原生 App 之间通信的桥梁,本质是原生提供接口,H5 通过约定方式调用,并处理回调。其核心是建立双向通信通道,使 JavaScript 能调用原生能力(如相机、定位等),原生也能主动向 H5 发送消息。
- 【回答框架 2】H5 调用原生常见方式:1. 拦截 URL Scheme,例如自定义协议如 myapp://,H5 通过 iframe 或 location 跳转触发原生拦截;2. 注入 JavaScript API,原生通过 WebView 的 evaluateJavascript 或 addJavascriptInterface(Android)向 JS 环境注入全局对象,H5 直接调用;iOS 可使用 WKScriptMessageHandler。
- 【回答框架 3】原生调用 H5 通常通过 WebView 的 evaluateJavascript 执行 JS 代码,或通过 WebViewJavascriptBridge 类库封装统一消息格式,并利用回调函数实现异步结果返回。
- 【回答框架 4】实现 JSBridge 时需设计消息格式(如 JSON 包含 method、params、callbackId),维护回调映射表,处理异步与同步调用,并注意线程切换(原生回调需回到主线程)。
- 【回答框架 5】具体实现可选用成熟库(如 WebViewJavascriptBridge、dsbridge、JSSDK),或自定义实现;需考虑兼容不同 WebView 和平台差异。
- 【关键点 1】JSBridge 是 H5 与原生的双向通信桥梁。
- 【关键点 2】H5 调原生核心方式:拦截 URL Scheme 或注入 JS API。
- 【关键点 3】原生调 H5 通过 evaluateJavascript 执行 JS 函数。
- 【关键点 4】设计时应统一消息格式,管理回调 ID,确保异步可靠。
- 【易错点 1】不能将 JSBridge 与网络通信(如 AJAX)混淆,只能桥接原生能力。
- 【易错点 2】URL Scheme 方式存在长度限制和性能问题,且容易被系统拦截。
- 【易错点 3】必须考虑回调的线程与生命周期,防止内存泄漏。