news 2026/2/13 13:59:42

H5 与 ArkTS 通信的完整设计模型

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
H5 与 ArkTS 通信的完整设计模型

网罗开发(小红书、快手、视频号同名)

大家好,我是展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、Harmony OS、Java、Python等方向。在移动端开发、鸿蒙开发、物联网、嵌入式、云原生、开源等领域有深厚造诣。

图书作者:《ESP32-C3 物联网工程开发实战》
图书作者:《SwiftUI 入门,进阶与实战》
超级个体:COC上海社区主理人
特约讲师:大学讲师,谷歌亚马逊分享嘉宾
科技博主:华为HDE/HDG

我的博客内容涵盖广泛,主要分享技术教程、Bug解决方案、开发工具使用、前沿科技资讯、产品评测与使用体验。我特别关注云服务产品评测、AI 产品对比、开发板性能测试以及技术报告,同时也会提供产品优缺点分析、横向对比,并分享技术沙龙与行业大会的参会体验。我的目标是为读者提供有深度、有实用价值的技术洞察与分析。

展菲:您的前沿技术领航员
👋 大家好,我是展菲!
📱 全网搜索“展菲”,即可纵览我在各大平台的知识足迹。
📣 公众号“Swift社区”,每周定时推送干货满满的技术长文,从新兴框架的剖析到运维实战的复盘,助您技术进阶之路畅通无阻。
💬 微信端添加好友“fzhanfei”,与我直接交流,不管是项目瓶颈的求助,还是行业趋势的探讨,随时畅所欲言。
📅 最新动态:2025 年 3 月 17 日
快来加入技术社区,一起挖掘技术的无限潜能,携手迈向数字化新征程!


文章目录

    • 前言
    • 通信的本质不是“能不能调”,而是“谁该知道谁”
    • 三种通信方式,对应三种场景
      • 同步调用:直接拿结果
      • 异步调用:发起请求,等待结果
      • ArkTS 主动通知 H5
    • 一个推荐的整体通信分层结构
      • 第一层:通信协议层
      • 第二层:桥接实现层
      • 第三层:业务能力层
    • 一个完整示例结构示意
    • methodList 本质上是“通信白名单”
    • 通信设计中最容易踩的几个坑
      • 把 Bridge 当成业务层
      • 同步接口偷偷做耗时操作
      • 没有统一的数据格式
    • 一个简单但好用的通信设计原则
    • 总结

前言

只要项目里引入了 Web 组件,通信设计一定会成为隐性复杂点

一开始可能只是:

  • H5 想调个原生方法
  • 原生想通知 H5 一个结果

但随着业务增长,问题会逐渐暴露出来:

  • 同步、异步混在一起
  • JS 想干的事情越来越多
  • ArkTS 端开始变成“万能工具箱”
  • 没人说得清这条通信链路的边界

所以这篇文章,我们不再从“怎么写代码”开始,而是先把通信模型本身理清楚。

通信的本质不是“能不能调”,而是“谁该知道谁”

在鸿蒙的 Web 场景里,H5 和 ArkTS 本质上是两个世界:

  • H5:偏业务表达、快速迭代
  • ArkTS:偏系统能力、稳定边界

通信的核心问题从来不是技术能力,而是:

哪些信息可以跨界,哪些必须隔离。

所以,一个合理的通信模型,至少要回答三件事:

  • 调用是同步还是异步
  • 主动权在谁
  • 是否允许返回结果

三种通信方式,对应三种场景

在实际项目里,我会把 H5 ↔ ArkTS 的通信明确拆成三类。

同步调用:直接拿结果

代表方式:javaScriptProxy

特点非常明确:

  • JS 主动调用
  • ArkTS 同步返回
  • 调用即完成

适合做什么?

  • 获取登录态
  • 获取配置
  • 获取环境信息

不适合做什么?

  • 网络请求
  • 文件操作
  • 长时间计算

你可以把它理解成:

“查询型接口”

异步调用:发起请求,等待结果

代表方式:

  • URL scheme
  • Web 消息机制

这一类通信通常是:

  • JS 发起动作
  • ArkTS 执行
  • 执行完成后再通知 JS

适合做什么?

  • 支付
  • 上传
  • 调系统能力

这里的关键不是“怎么调”,而是:

一定要有请求 ID 或状态回传机制

否则后期你会完全不知道某次调用是哪个 JS 发起的。

ArkTS 主动通知 H5

这一类在复杂项目里非常常见,但经常被忽略。

典型场景包括:

  • 登录状态变化
  • 网络状态变化
  • 权限变化
  • 页面生命周期变化

特点是:

  • ArkTS 是主动方
  • H5 是被通知方
  • 通常没有返回值

如果你没设计好这一层,后期就会出现:

  • H5 不知道状态变了
  • 原生状态和页面状态不同步
  • 各种“看不懂的偶现问题”

一个推荐的整体通信分层结构

在中大型项目里,我强烈建议把通信结构拆成三层。

第一层:通信协议层

这一层只关心一件事:

  • 数据怎么传

比如:

  • method 名
  • 参数结构
  • 返回值结构

不掺杂任何业务逻辑。

第二层:桥接实现层

这一层是:

  • javaScriptProxy
  • Web 消息
  • URL scheme

它只负责:

  • 把 JS 请求转成 ArkTS 调用
  • 把 ArkTS 结果转回 JS

这里不允许写业务判断

第三层:业务能力层

真正的业务逻辑放在这里:

  • 登录
  • 权限
  • 设备能力
  • 数据处理

这一层完全不知道:

  • 调用来自 H5 还是 ArkTS 页面

它只关心:

“这是不是一个合法的业务请求”

一个完整示例结构示意

在 ArkTS 侧,结构可以像这样:

web/ ├── bridge/ │ ├── JsBridge.ts // 仅定义可暴露方法 │ └── BridgeProtocol.ts // 参数与返回结构 ├── service/ │ ├── UserService.ts │ └── DeviceService.ts └── page/ └── WebPage.ets

这样拆的好处是:

  • JS 能调用什么,一眼可见
  • 业务逻辑不会被“Web 特性”污染
  • 后期重构成本极低

methodList 本质上是“通信白名单”

回到javaScriptProxy,很多人只是把它当成配置项。

但在架构上,它其实是:

通信权限控制点

methodList:['getUserId','getEnv']

意味着:

  • JS 只能访问这两个能力
  • ArkTS 内部再复杂,也不会泄露

这一步非常关键,尤其是在:

  • 多人协作
  • 外包 H5
  • 活动页频繁更新的项目里

通信设计中最容易踩的几个坑

把 Bridge 当成业务层

结果就是:

  • 一个类几十个方法
  • 什么都往里塞
  • 谁都不敢改

同步接口偷偷做耗时操作

表面看没问题,实际是:

  • Web 偶发卡死
  • 定位极其困难

没有统一的数据格式

JS 端各种判断:

if(res===true)if(res.code===0)if(res.success)

最后没人知道“标准结果”长什么样。

一个简单但好用的通信设计原则

如果你只记住一句话,我建议是这一句:

同步只做查询,异步只做动作,Bridge 只做边界。

这个原则,在鸿蒙 Web 项目里,几乎不会出错。

总结

H5 和 ArkTS 的通信问题,
本质上是一个边界设计问题

不是“怎么连”,而是:

  • 哪些能力该暴露
  • 哪些状态该同步
  • 哪些事情必须隔离

当你把通信模型想清楚,
具体用javaScriptProxy还是消息机制,反而只是实现细节。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/12 20:37:20

图解说明Proteus仿真软件连线与节点处理

深入理解Proteus中的连线与节点:从“画线”到“通电”的关键一步你有没有遇到过这种情况?电路图明明画得整整齐齐,导线也一根不少地连上了,可仿真一启动——MCU不启动、信号没输出、示波器一片死寂。检查了一遍又一遍,…

作者头像 李华
网站建设 2026/2/8 2:46:07

PDF-Extract-Kit参数调优手册:图像尺寸与置信度阈值详解

PDF-Extract-Kit参数调优手册:图像尺寸与置信度阈值详解 1. 引言:PDF智能提取的工程挑战 在处理PDF文档时,尤其是扫描版或复杂排版的学术论文、技术报告等文件,传统OCR工具往往难以准确识别结构化内容。PDF-Extract-Kit 是由科哥…

作者头像 李华
网站建设 2026/1/30 15:59:28

74194移位寄存器电路连接图解:通俗解释

74194移位寄存器实战解析:从原理到流水灯的完整指南你有没有试过用单片机控制8个LED?如果只靠GPIO口,很快就发现I/O资源捉襟见肘。这时候,像74194四位双向移位寄存器这样的经典逻辑芯片就派上用场了——它不仅能帮你“无中生有”地…

作者头像 李华
网站建设 2026/2/13 12:30:42

二次元技术生态宝典:探索Awesome ACG的无限可能

二次元技术生态宝典:探索Awesome ACG的无限可能 【免费下载链接】awesome-acg A curated list of awesome technologies related to Anime, Comic and Games 项目地址: https://gitcode.com/gh_mirrors/aw/awesome-acg 在数字娱乐的浪潮中,二次元…

作者头像 李华
网站建设 2026/2/5 6:37:56

AutoGLM-Phone-9B性能优化:90亿参数轻量化模型实战

AutoGLM-Phone-9B性能优化:90亿参数轻量化模型实战 1. AutoGLM-Phone-9B简介 AutoGLM-Phone-9B 是一款专为移动端优化的多模态大语言模型,融合视觉、语音与文本处理能力,支持在资源受限设备上高效推理。该模型基于 GLM 架构进行轻量化设计&…

作者头像 李华
网站建设 2026/2/10 12:56:39

AutoGLM-Phone-9B参数详解:轻量化设计背后的技术

AutoGLM-Phone-9B参数详解:轻量化设计背后的技术 1. AutoGLM-Phone-9B简介 AutoGLM-Phone-9B 是一款专为移动端优化的多模态大语言模型,融合视觉、语音与文本处理能力,支持在资源受限设备上高效推理。该模型基于 GLM 架构进行轻量化设计&am…

作者头像 李华