适用版本:HarmonyOS NEXT(纯血鸿蒙),ArkTS + ArkWeb,目标:把传统 Web/H5 项目迁移为鸿蒙 Hybrid 应用,掌握 JSBridge 双向通信原理、封装、踩坑。

一、ArkWeb 基础概念

1.1 什么是 ArkWeb

ArkWeb 是鸿蒙系统提供的 Web 组件,替代 Android WebView /iOS WKWebView,用于在鸿蒙应用内加载 H5 页面,实现 Hybrid 混合开发。 由两部分组成:

  1. Web 内核:Chromium 内核,负责渲染 HTML/CSS/JS;
  2. ArkWeb 框架层:ArkTS API,提供页面加载、缓存、权限、JSBridge、事件监听等能力。

重点:HarmonyOS NEXT 没有安卓兼容层,旧安卓 WebView 方案完全不可用,必须使用 ArkWeb。

1.2 Hybrid 应用鸿蒙化能解决什么

  • 复用现有 H5 业务代码,减少多端重复开发;
  • H5 调用鸿蒙原生能力(摄像头、文件、蓝牙、本地存储、通知);
  • 原生 ArkTS 调用 H5 内 JS 方法;
  • 原生控制 Web 页面生命周期、加载进度、拦截请求。

1.3 环境准备

  • DevEco Studio(对应 NEXT SDK)
  • 工程模板:Empty Activity(ArkTS)
  • module.json5 配置网络权限(加载远程网页)

json

"requestPermissions": [
  {
    "name": "ohos.permission.INTERNET"
  }
]

二、ArkWeb 快速上手:最简单 Web 页面

2.1 引入组件与基础使用

typescript

运行

import { ArkWeb, WebController } from '@ohos/arkweb';
import { hilog } from '@ohos/hilog';

@Entry
@Component
struct WebPageDemo {
  // Web控制器,核心对象,用于控制ArkWeb
  controller: WebController = new WebController();

  build() {
    Column() {
      ArkWeb({
        controller: this.controller,
        // 加载本地H5或者远程url
        src: $rawfile("index.html")
        // src: "https://xxx.com/h5"
      })
      .width('100%')
      .height('100%')
      // 页面加载完成回调
      .onPageFinish(() => {
        hilog.info(0x0001, "ArkWeb", "页面加载完成");
      })
      // 加载进度回调
      .onProgressChange((progress: number) => {
        hilog.info(0x0001, "ArkWeb", `加载进度:${progress}`);
      })
    }
  }
}
  • $rawfile:存放本地静态 H5 资源,路径 entry/src/main/resources/rawfile/index.html
  • WebController:核心控制器,执行 JS、页面前进后退、清除缓存等。

2.2 常用基础能力

typescript

运行

// 页面后退
this.controller.backward();
// 页面前进
this.controller.forward();
// 刷新页面
this.controller.reload();
// 停止加载
this.controller.stop();
// 执行JS脚本(原生调用H5 JS)
this.controller.runJavaScript("alert('来自原生的调用')");

三、JSBridge 核心原理(重中之重)

JSBridge 的本质:H5 JS <=> 鸿蒙 ArkTS 的双向通信通道

H5 的 JS 运行在 Web 内核线程;ArkTS 运行在鸿蒙 UI 主线程,两者隔离,不能直接互相调用。

通信两条链路:

  1. H5 → 鸿蒙原生:H5 JS 发送消息,ArkWeb 拦截,ArkTS 接收并执行原生逻辑;
  2. 鸿蒙原生 → H5:ArkTS 通过 runJavaScript 调用 H5 全局 JS 函数,传递回调数据。

和安卓 JSBridge 思路一致,但 API 完全不同:ArkWeb 使用 registerJavaScriptProxy 注册原生对象给 H5。

3.1 registerJavaScriptProxy 核心 API

作用:把 ArkTS 对象注入到 H5 的 window 对象,H5 可以直接调用这个对象的方法。

⚠️ 重要限制:

  1. 必须在 src 加载页面之前注册;
  2. 注册的方法只支持参数为基础类型(string/number/boolean),不支持直接传复杂对象 / 函数;
  3. H5 不能直接传递回调函数给原生,需要用回调 id 机制。
3.1.1 ArkTS:注册原生桥对象

typescript

运行

// 定义桥对象,暴露给H5
class NativeBridge {
  // 原生能力:获取设备信息
  getDeviceInfo(callbackId: string) {
    const res = JSON.stringify({
      deviceType: "HarmonyOS NEXT",
      platform: "arkweb"
    })
    // 调用H5的全局回调方法,回传结果
    webController.runJavaScript(`window._JSBridgeCallback("${callbackId}", ${res})`)
  }

  showToast(msg: string, callbackId: string) {
    hilog.info(0x0001, "JSBridge", `H5调用toast:${msg}`);
    webController.runJavaScript(`window._JSBridgeCallback("${callbackId}", {"code":0,"msg":"success"})`)
  }
}

// 在组件内
@Entry
@Component
struct BridgeDemo {
  controller: WebController = new WebController();
  bridge: NativeBridge = new NativeBridge();

  aboutToAppear() {
    // 注册对象:H5 window.nativeBridge
    this.controller.registerJavaScriptProxy(this.bridge, "nativeBridge", ["getDeviceInfo", "showToast"]);
    // 开启JS能力
    this.controller.setJavaScriptEnabled(true);
  }

  build() {
    ArkWeb({
      controller: this.controller,
      src: $rawfile("index.html")
    })
    .width('100%').height('100%')
  }
}
3.1.2 H5 端 index.html JSBridge 封装

html

预览

<!DOCTYPE html>
<html>
<body>
<button onclick="callNativeToast()">调用原生Toast</button>
<script>
// 保存回调池
const callbackMap = {};
let callbackId = 1;

// 全局回调入口,原生调用这个方法回传数据
window._JSBridgeCallback = function (cbId, data) {
  const fn = callbackMap[cbId];
  if (fn) {
    fn(data);
    delete callbackMap[cbId];
  }
}

// H5封装调用原生方法
function nativeInvoke(method, params) {
  return new Promise((resolve) => {
    const id = callbackId++;
    callbackMap[id] = resolve;
    // 调用注入的nativeBridge对象方法
    window.nativeBridge[method](id, JSON.stringify(params));
  })
}

// 测试调用原生
async function callNativeToast() {
  const result = await nativeInvoke("showToast", {msg:"Hello ArkWeb JSBridge"});
  console.log("原生返回", result);
}

// 获取设备信息
async function getDevice() {
  const info = await nativeInvoke("getDeviceInfo", {});
  console.log("设备信息", info);
}
</script>
</body>
</html>

3.2 通信流程拆解

  1. ArkTS 在页面加载前 registerJavaScriptProxy,把 nativeBridge 挂载到 H5 window;
  2. H5 调用 nativeBridge.showToast(callbackId);
  3. ArkTS 的 showToast 方法被触发,执行原生业务;
  4. 原生通过 runJavaScript 执行 H5 全局回调函数 _JSBridgeCallback,带上 callbackId 和结果;
  5. H5 根据 callbackId 找到 Promise resolve,拿到返回数据。

为什么不能直接传回调函数? H5 传入的 function 无法序列化传递到 ArkTS,鸿蒙 ArkWeb 不支持跨线程传递函数对象,所以业界统一用 callbackId 方案。

四、JSBridge 通用封装(推荐工程化方案)

上面是最简 Demo,工程中需要统一封装:

  1. 统一消息体结构:{method, params, callbackId}
  2. 增加超时机制,防止回调丢失
  3. 增加错误码、异常捕获
  4. 统一日志打印便于调试

消息协议约定

json

{
  "method": "showToast",
  "params": {"msg": "xxx"},
  "callbackId": "cb_1001"
}

五、ArkWeb 重要配置项 & 安全注意事项

5.1 Web 常用配置

typescript

运行

// 开启JS
this.controller.setJavaScriptEnabled(true);
// 是否允许访问文件
this.controller.setAllowFileAccess(false);
// 是否允许JS打开新窗口
this.controller.setJavaScriptCanOpenWindowsAutomatically(false);
// 缓存模式
this.controller.setCacheMode(CacheMode.DEFAULT);

5.2 安全红线(Hybrid 重点)

  1. 不要随便注入大量原生对象,H5 页面如果不可信,会造成安全风险;
  2. 远程 H5 页面必须校验域名白名单,不要无限制开放原生能力;
  3. registerJavaScriptProxy 暴露的方法必须做参数校验,防止注入攻击;
  4. 禁止在 JSBridge 中传递敏感信息(密码、密钥);
  5. 拦截页面跳转 onUrlLoadIntercept,防止跳转到恶意网页。

typescript

运行

// 拦截url跳转示例
.onUrlLoadIntercept((event) => {
  const url = event.url;
  // 白名单校验
  if (!url.startsWith("https://xxx.com")) {
    return true; // true 拦截本次加载
  }
  return false;
})

六、常见坑点(上篇踩坑汇总)

  1. ❌ 页面加载之后才调用 registerJavaScriptProxy → 注入失败,H5 拿不到 nativeBridge;

✅ 必须在加载 src 之前注册。

  1. ❌ H5 直接传递 Object 给原生方法 → ArkWeb 无法解析;

✅ H5 把对象 JSON.stringify,原生内部再 JSON.parse。

  1. ❌ runJavaScript 脚本语法错误,没有捕获异常 → 静默失败;

✅ 增加 try-catch,hilog 打印 JS 执行异常。

  1. ❌ 快速连续调用原生,callbackId 重复;

✅ 使用自增唯一 id。

  1. ❌ 页面销毁时,WebController 没有销毁,内存泄漏;

✅ aboutToDisappear 调用 controller.destroy ()

typescript

运行

aboutToDisappear() {
  this.controller.destroy();
}

七、上篇小结 & 下篇预告

本篇完成:

  • ArkWeb 组件基础使用;
  • Hybrid 鸿蒙化迁移思路;
  • JSBridge 双向通信原理 + 完整可运行 Demo;
  • 安全规范与高频踩坑。

下篇内容预告

  1. ArkWeb 本地静态资源部署、资源拦截(替代 WebView shouldInterceptRequest)
  2. Cookie、LocalStorage、会话同步方案
  3. 文件上传 / 下载、图片选择 JSBridge 封装
  4. Web 性能优化:预加载、缓存策略
  5. 调试手段:DevTools 远程调试 H5 页面
  6. 完整工程级 JSBridge 开源封装库

https://gitee.com/skysoft2593/mqhc/blob/master/VyZzk_nQI4.md
https://gitee.com/skysoft2593/mqhc/blob/master/76eEK_uurs.md
https://gitee.com/skysoft2593/mqhc/blob/master/XJLNn_YPgA.md
https://gitee.com/skysoft2593/mqhc/blob/master/WtAkF_fgEd.md
https://gitee.com/skysoft2593/mqhc/blob/master/Nsa9d_pcn4.md
https://gitee.com/skysoft2593/mqhc/blob/master/MzMa0_XnHu.md
https://gitee.com/skysoft2593/mqhc/blob/master/4Wrhi_JL6O.md
https://gitee.com/skysoft2593/mqhc/blob/master/E09mf_qS5i.md
https://gitee.com/skysoft2593/mqhc/blob/master/Mct2U_vzTh.md
https://gitee.com/skysoft2593/mqhc/blob/master/zFArw_SygU.md
https://gitee.com/skysoft2593/mqhc/blob/master/GHZcp_1QpW.md
https://gitee.com/skysoft2593/mqhc/blob/master/nNcq1_B37V.md
https://gitee.com/skysoft2593/mqhc/blob/master/mZzU6_tdE9.md
https://gitee.com/skysoft2593/mqhc/blob/master/7cP1A_ZHqT.md
https://gitee.com/skysoft2593/mqhc/blob/master/fnigZ_cfqu.md
https://gitee.com/skysoft2593/mqhc/blob/master/QFocE_pR3B.md
https://gitee.com/skysoft2593/mqhc/blob/master/oLoHE_aKJj.md
https://gitee.com/skysoft2593/mqhc/blob/master/N2Cj4_cWq9.md
https://gitee.com/skysoft2593/mqhc/blob/master/57iKK_5vWO.md
https://gitee.com/skysoft2593/mqhc/blob/master/CUtng_5m5X.md
https://gitee.com/skysoft2593/mqhc/blob/master/qGoP5_aOVl.md
https://gitee.com/skysoft2593/mqhc/blob/master/2WIQ5_CLdM.md
https://gitee.com/skysoft2593/mqhc/blob/master/86ISL_J5ik.md
https://gitee.com/skysoft2593/mqhc/blob/master/xyLII_7rHK.md
https://gitee.com/skysoft2593/mqhc/blob/master/i1FbO_dMxN.md
https://gitee.com/skysoft2593/mqhc/blob/master/rHvTy_qdUN.md
https://gitee.com/skysoft2593/mqhc/blob/master/Uf89Z_tKo2.md
https://gitee.com/skysoft2593/mqhc/blob/master/mBENC_RCGs.md
https://gitee.com/skysoft2593/mqhc/blob/master/CGYSq_JFTE.md
https://gitee.com/skysoft2593/mqhc/blob/master/chEcf_Ou8O.md
https://gitee.com/skysoft2593/mqhc/blob/master/GT0YA_LTce.md
https://gitee.com/skysoft2593/mqhc/blob/master/RCSFq_gV3A.md
https://gitee.com/skysoft2593/mqhc/blob/master/kwjJK_A4Bo.md
https://gitee.com/skysoft2593/mqhc/blob/master/QDrMn_Pb1l.md
https://gitee.com/skysoft2593/mqhc/blob/master/SXFgW_ioOx.md
https://gitee.com/skysoft2593/mqhc/blob/master/VDyc6_BbKo.md
https://gitee.com/skysoft2593/mqhc/blob/master/ZObHD_gri7.md
https://gitee.com/skysoft2593/mqhc/blob/master/6H5VY_yKlE.md
https://gitee.com/skysoft2593/mqhc/blob/master/jTjjL_L5Bc.md
https://gitee.com/skysoft2593/mqhc/blob/master/yliS3_ePp9.md
https://gitee.com/skysoft2593/mqhc/blob/master/0pdQp_kmnG.md
https://gitee.com/skysoft2593/mqhc/blob/master/6FnyD_xJxc.md
https://gitee.com/skysoft2593/mqhc/blob/master/ywRYt_MFgP.md
https://gitee.com/skysoft2593/mqhc/blob/master/8mM3i_9WAX.md
https://gitee.com/skysoft2593/mqhc/blob/master/z1A8I_DBdB.md
https://gitee.com/skysoft2593/mqhc/blob/master/8i3XE_xTY6.md
https://gitee.com/skysoft2593/mqhc/blob/master/96TtM_ts45.md
https://gitee.com/skysoft2593/mqhc/blob/master/yxBcq_WKXK.md
https://gitee.com/skysoft2593/mqhc/blob/master/3AnKd_cw7M.md
https://gitee.com/skysoft2593/mqhc/blob/master/beTvf_07Ku.md
https://gitee.com/skysoft2593/mqhc/blob/master/N1ZJJ_1i8j.md
https://gitee.com/skysoft2593/mqhc/blob/master/c5OkS_PvaO.md
https://gitee.com/skysoft2593/mqhc/blob/master/6aiVL_pHUS.md
https://gitee.com/skysoft2593/mqhc/blob/master/vhKbe_CIGO.md
https://gitee.com/skysoft2593/mqhc/blob/master/1wdLj_0ciZ.md
https://gitee.com/skysoft2593/mqhc/blob/master/yv9lj_mjwF.md
https://gitee.com/skysoft2593/mqhc/blob/master/Lw8zj_K95d.md
https://gitee.com/skysoft2593/mqhc/blob/master/jDIjB_TIbm.md
https://gitee.com/skysoft2593/mqhc/blob/master/fwTbE_UDBi.md
https://gitee.com/skysoft2593/mqhc/blob/master/tdtNA_1lu5.md
https://gitee.com/skysoft2593/mqhc/blob/master/fI7ym_kSLi.md
https://gitee.com/skysoft2593/mqhc/blob/master/RJT39_WH1j.md
https://gitee.com/skysoft2593/mqhc/blob/master/dd2g5_MNDc.md
https://gitee.com/skysoft2593/mqhc/blob/master/JfpeU_bwjl.md
https://gitee.com/skysoft2593/mqhc/blob/master/JkZF5_QVs5.md
https://gitee.com/skysoft2593/mqhc/blob/master/m8zwi_pMPv.md
https://gitee.com/skysoft2593/mqhc/blob/master/BagvI_wrVr.md
https://gitee.com/skysoft2593/mqhc/blob/master/4b886_j6Bj.md
https://gitee.com/skysoft2593/mqhc/blob/master/I84ND_mz0Q.md
https://gitee.com/skysoft2593/mqhc/blob/master/rJYpw_M5UV.md
https://gitee.com/skysoft2593/mqhc/blob/master/tqjPO_42UD.md
https://gitee.com/skysoft2593/mqhc/blob/master/Kelpe_ERJN.md
https://gitee.com/skysoft2593/mqhc/blob/master/byMCx_lsKi.md
https://gitee.com/skysoft2593/mqhc/blob/master/zUA8O_O3d2.md
https://gitee.com/skysoft2593/mqhc/blob/master/JcRRp_FRwm.md
https://gitee.com/skysoft2593/mqhc/blob/master/hu6pa_32td.md
https://gitee.com/skysoft2593/mqhc/blob/master/IvBnH_c7Ul.md
https://gitee.com/skysoft2593/mqhc/blob/master/tqBTU_cNJx.md
https://gitee.com/skysoft2593/mqhc/blob/master/TmHNC_UY3a.md
https://gitee.com/skysoft2593/mqhc/blob/master/9fFEW_0hvr.md
https://gitee.com/skysoft2593/mqhc/blob/master/RBapf_ZjjN.md
https://gitee.com/skysoft2593/mqhc/blob/master/8hlX2_CkhF.md
https://gitee.com/skysoft2593/mqhc/blob/master/rWzNl_bTNa.md
https://gitee.com/skysoft2593/mqhc/blob/master/GCrB9_KTxk.md
https://gitee.com/skysoft2593/mqhc/blob/master/xyBc4_HD5x.md
https://gitee.com/skysoft2593/mqhc/blob/master/vQm2b_0Y32.md
https://gitee.com/skysoft2593/mqhc/blob/master/cgtNQ_QZWx.md
https://gitee.com/skysoft2593/mqhc/blob/master/dMBth_d0UY.md
https://gitee.com/skysoft2593/mqhc/blob/master/J3hOR_FUvJ.md
https://gitee.com/skysoft2593/mqhc/blob/master/xtnNn_WFp9.md
https://gitee.com/skysoft2593/mqhc/blob/master/FHtvH_ndmg.md
https://gitee.com/skysoft2593/mqhc/blob/master/2Wbv8_W3YM.md
https://gitee.com/skysoft2593/mqhc/blob/master/SyD5Z_S4I7.md
https://gitee.com/skysoft2593/mqhc/blob/master/0XmWv_YlXB.md
https://gitee.com/skysoft2593/mqhc/blob/master/TBDCb_8HsA.md
https://gitee.com/skysoft2593/mqhc/blob/master/3iKcU_iMnM.md
https://gitee.com/skysoft2593/mqhc/blob/master/21iPq_mYRW.md
https://gitee.com/skysoft2593/mqhc/blob/master/er9ee_7R7J.md
https://gitee.com/skysoft2593/mqhc/blob/master/M4vxA_5OY4.md
https://gitee.com/skysoft2593/mqhc/blob/master/dyau6_bVjw.md
https://gitee.com/skysoft2593/mqhc/blob/master/0mD3D_v3jr.md
https://gitee.com/skysoft2593/mqhc/blob/master/vTyzS_hEm2.md
https://gitee.com/skysoft2593/mqhc/blob/master/tyUVv_IDP0.md
https://gitee.com/skysoft2593/mqhc/blob/master/5lgKu_gy6N.md
https://gitee.com/skysoft2593/mqhc/blob/master/hhj2y_Hid0.md
https://gitee.com/skysoft2593/mqhc/blob/master/8mpaX_z1B1.md
https://gitee.com/skysoft2593/mqhc/blob/master/IbWRE_9Rza.md
https://gitee.com/skysoft2593/mqhc/blob/master/jFN6H_hyLy.md
https://gitee.com/skysoft2593/mqhc/blob/master/FLK0p_wauI.md
https://gitee.com/skysoft2593/mqhc/blob/master/2ewbn_XA3T.md
https://gitee.com/skysoft2593/mqhc/blob/master/gb6wC_YvOb.md
https://gitee.com/skysoft2593/mqhc/blob/master/m6FLs_eUl4.md
https://gitee.com/skysoft2593/mqhc/blob/master/ALWYP_TaVo.md
https://gitee.com/skysoft2593/mqhc/blob/master/ODxCi_bQHX.md
https://gitee.com/skysoft2593/mqhc/blob/master/ZNvzH_zB3a.md
https://gitee.com/skysoft2593/mqhc/blob/master/DYMXV_TfYu.md
https://gitee.com/skysoft2593/mqhc/blob/master/Tq6FP_qZ6C.md
https://gitee.com/skysoft2593/mqhc/blob/master/475F9_8HAA.md
https://gitee.com/skysoft2593/mqhc/blob/master/chewO_29LN.md
https://gitee.com/skysoft2593/mqhc/blob/master/oe4QV_DVRu.md
https://gitee.com/skysoft2593/mqhc/blob/master/hQQNc_raQh.md
https://gitee.com/skysoft2593/mqhc/blob/master/nxEbI_4vLu.md
https://gitee.com/skysoft2593/mqhc/blob/master/ET5wA_EikI.md
https://gitee.com/skysoft2593/mqhc/blob/master/XKWDw_2444.md
https://gitee.com/skysoft2593/mqhc/blob/master/QC0KI_4MiG.md
https://gitee.com/skysoft2593/mqhc/blob/master/G4DLl_2Qny.md
https://gitee.com/skysoft2593/mqhc/blob/master/k6bqQ_1sz1.md
https://gitee.com/skysoft2593/mqhc/blob/master/a5XTM_BHdL.md
https://gitee.com/skysoft2593/mqhc/blob/master/8X2zg_CFSk.md
https://gitee.com/skysoft2593/mqhc/blob/master/aB4Ik_G4Uy.md
https://gitee.com/skysoft2593/mqhc/blob/master/LYVSb_XIBx.md
https://gitee.com/skysoft2593/mqhc/blob/master/u3yfI_tMAx.md
https://gitee.com/skysoft2593/mqhc/blob/master/aNkB7_wknQ.md
https://gitee.com/skysoft2593/mqhc/blob/master/4zKKP_w5PF.md
https://gitee.com/skysoft2593/mqhc/blob/master/ImcE4_oC0c.md
https://gitee.com/skysoft2593/mqhc/blob/master/HWMeA_lBHu.md
https://gitee.com/skysoft2593/mqhc/blob/master/4MeRu_ASJp.md
https://gitee.com/skysoft2593/mqhc/blob/master/rgr5k_qBl0.md
https://gitee.com/skysoft2593/mqhc/blob/master/FTeAR_wnh6.md
https://gitee.com/skysoft2593/mqhc/blob/master/P7SsZ_Q1qy.md
https://gitee.com/skysoft2593/mqhc/blob/master/BVIJQ_sBcJ.md
https://gitee.com/skysoft2593/mqhc/blob/master/0bBDj_R7tH.md
https://gitee.com/skysoft2593/mqhc/blob/master/ad6bf_bS4q.md
https://gitee.com/skysoft2593/mqhc/blob/master/WJoPu_CLLz.md
https://gitee.com/skysoft2593/mqhc/blob/master/JhX4L_GHTz.md
https://gitee.com/skysoft2593/mqhc/blob/master/Opu8s_SBOq.md
https://gitee.com/skysoft2593/mqhc/blob/master/0ZxKb_Pd1o.md
https://gitee.com/skysoft2593/mqhc/blob/master/oMIBg_156q.md
https://gitee.com/skysoft2593/mqhc/blob/master/xInzx_4W1x.md
https://gitee.com/skysoft2593/mqhc/blob/master/bQLjQ_Csg3.md
https://gitee.com/skysoft2593/mqhc/blob/master/hHbDr_z9c2.md
https://gitee.com/skysoft2593/mqhc/blob/master/LoEdN_kS1D.md
https://gitee.com/skysoft2593/mqhc/blob/master/5hD30_KD0w.md
https://gitee.com/skysoft2593/mqhc/blob/master/Q21WM_3roS.md
https://gitee.com/skysoft2593/mqhc/blob/master/nllpe_IqYY.md
https://gitee.com/skysoft2593/mqhc/blob/master/egytn_r27D.md
https://gitee.com/skysoft2593/mqhc/blob/master/2BOOO_Dz3x.md
https://gitee.com/skysoft2593/mqhc/blob/master/MFiz8_TJwb.md
https://gitee.com/skysoft2593/mqhc/blob/master/12oPI_zW4f.md
https://gitee.com/skysoft2593/mqhc/blob/master/Fs6DO_DavO.md
https://gitee.com/skysoft2593/mqhc/blob/master/11r9f_TEKj.md
https://gitee.com/skysoft2593/mqhc/blob/master/uZA50_O8UW.md
https://gitee.com/skysoft2593/mqhc/blob/master/E1cGN_D2K6.md
https://gitee.com/skysoft2593/mqhc/blob/master/p0FzR_6SWg.md
https://gitee.com/skysoft2593/mqhc/blob/master/KmYkW_aQIi.md
https://gitee.com/skysoft2593/mqhc/blob/master/hF9mA_GnBH.md
https://gitee.com/skysoft2593/mqhc/blob/master/JDOB5_zXH3.md
https://gitee.com/skysoft2593/mqhc/blob/master/KPnGS_RCMN.md
https://gitee.com/skysoft2593/mqhc/blob/master/7Bf1w_0pg6.md
https://gitee.com/skysoft2593/mqhc/blob/master/bNt2n_o2yx.md
https://gitee.com/skysoft2593/mqhc/blob/master/wQRkh_rgP2.md
https://gitee.com/skysoft2593/mqhc/blob/master/wfZhL_VmN1.md
https://gitee.com/skysoft2593/mqhc/blob/master/9SDl6_t12L.md
https://gitee.com/skysoft2593/mqhc/blob/master/c6KEV_TzPk.md
https://gitee.com/skysoft2593/mqhc/blob/master/Zrl06_HpPE.md
https://gitee.com/skysoft2593/mqhc/blob/master/GcRjQ_oP0C.md
https://gitee.com/skysoft2593/mqhc/blob/master/SN9LU_uehL.md
https://gitee.com/skysoft2593/mqhc/blob/master/0WCDF_VJLs.md
https://gitee.com/skysoft2593/mqhc/blob/master/NZVjZ_cPKf.md
https://gitee.com/skysoft2593/mqhc/blob/master/0FYwb_HEfq.md
https://gitee.com/skysoft2593/mqhc/blob/master/2FKoQ_c40D.md
https://gitee.com/skysoft2593/mqhc/blob/master/V5rXL_3f7v.md
https://gitee.com/skysoft2593/mqhc/blob/master/YTOqr_IUu1.md
https://gitee.com/skysoft2593/mqhc/blob/master/ou8tm_ZM1C.md
https://gitee.com/skysoft2593/mqhc/blob/master/FY4nj_qQaF.md
https://gitee.com/skysoft2593/mqhc/blob/master/27wVp_aPTl.md
https://gitee.com/skysoft2593/mqhc/blob/master/mYH7k_V0Pp.md
https://gitee.com/skysoft2593/mqhc/blob/master/k1rnW_ok2i.md
https://gitee.com/skysoft2593/mqhc/blob/master/PHuPS_3KQs.md
https://gitee.com/skysoft2593/mqhc/blob/master/j6VkV_wnlf.md
https://gitee.com/skysoft2593/mqhc/blob/master/KUlH9_3JHb.md
https://gitee.com/skysoft2593/mqhc/blob/master/lzwLK_0rBW.md
https://gitee.com/skysoft2593/mqhc/blob/master/iOHgn_pAkM.md
https://gitee.com/skysoft2593/mqhc/blob/master/0wTe7_3Iaa.md
https://gitee.com/skysoft2593/mqhc/blob/master/Gy91J_wXkB.md
https://gitee.com/skysoft2593/mqhc/blob/master/AzoXT_qzau.md
https://gitee.com/skysoft2593/mqhc/blob/master/It53l_QFLI.md
https://gitee.com/skysoft2593/mqhc/blob/master/fhasw_6M7C.md
https://gitee.com/skysoft2593/mqhc/blob/master/qcIzP_RDYS.md
https://gitee.com/skysoft2593/mqhc/blob/master/OYUsX_VnEw.md


 

Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐