Taro 是由京东发起并维护的开放式跨端跨框架解决方案,支持以 Web 的开发范式来实现小程序、H5、原生 APP 的跨端统一开发,从 18 年开源至今,在 GitHub 已累计获得 36,000+ Stars。
Taro x 纯血鸿蒙
在过去的一年中,Taro 经历了显著的蜕变,Taro on Harmony 方案完成从 ArkTS 方案到 C-API 方案的升级,成功实现了对纯血鸿蒙的完全适配,扩展了 Taro 的兼容平台家族,实现了对 H5、小程序、RN、原生鸿蒙多端的统一开发。

去年 9 月,京东 APP 纯血鸿蒙 在鸿蒙应用商城正式上线,APP 中核心购物链路,如首页、搜索、商详、购物车、订单、结算和我京等页面,都是通过 Taro on Harmony C-API 版本进行开发,并且一上线就获得了华为的 S 级应用认证。
今天,我们正式开源 Taro on Harmony C-API 版本,这次版本的发布,将带来更丰富的样式适配、更高效的渲染性能、更全面的组件支持,让开发者以 Web 范式的方式来开发出媲美原生鸿蒙性能的应用,为鸿蒙应用生态的丰富注入强大的动力。
对于开发者来说,Taro on Harmony 技术方案为开发者提供了显著优势:显著降低鸿蒙应用开发门槛,让开发者能够运用熟悉的 Web 技术栈快速构建纯血鸿蒙应用。同时,基于鸿蒙 CAPI 构建的高性能渲染管线,在保证开发高效率的同时实现了与原生应用媲美的性能表现。更重要的是,开发者可以充分复用现有研发生态,将存量 Taro 项目快速适配迁移至鸿蒙平台,大幅加速业务在鸿蒙生态的布局与上架进程。
整体技术架构
Taro on Harmony 技术方案支持开发者使用 React DSL 来开发纯血鸿蒙应用,整体架构可以简单分为三层:

最上层是应用业务代码所在的 ArkVM 层,这一层在 C-API 版本中主要运行业务代码、React 的核心代码以及少量的 Taro 运行时代码。
中间层是 Taro 的 CSSOM 和 TaroElement 树,负责处理上层 Taro 运行时代码传递下来的指令,比如 TaroElement 节点树创建,绑定关系以及设置属性等操作。
最下层存放的是 TaroRenderNode 虚拟节点树,这棵节点树和真正的上屏节点树是一一对应的关系,同时在 TaroRenderNode 节点树内会创建对应的 Yoga 节点。
同时 Taro 还基于鸿蒙提供的 VSync 机制设置一套任务处理管线,来处理中间层和下层节点树产生的样式匹配、节点测量、节点布局、样式设置以及节点上屏等任务,来保证任务的时序性和最后上屏渲染结果的正确性。
重点特性
丰富的能力支持
常用组件和 API 支持
在 C-API 版本的 Taro on Harmony 中,我们不仅完整支持了 React 18+,另外支持了 View、Text、Image、Video 等近 33 个 Taro 组件,对于常用的 API,如 getSystemInfo、getStorage 等也是在 C-API 版本中得到了完整的支持,而且针对逻辑较为复杂的 API 如:createSelectorQuery 以及 createIntersectionObserver,我们将这些 API 在 C++ 侧进行了重新的实现,大幅提升了他们的执行性能。
常用样式支持
在 C-API 版本中,我们对支持了大部分常见的 CSS 能力:
支持常见的 CSS 样式和布局,支持 flex、伪类和伪元素
支持常见的 CSS 定位,绝对定位、fixed 定位
支持常见的 CSS 选择器和媒体查询
支持常见的 CSS 单位,比如 vh、vw 以及计算属性 calc
支持 CSS 变量以及安全区域等预定义变量
同时,我们参考浏览器 CSSOM 的实现方式,在 C++ 实现了一套 CSSOM 逻辑,里面包含了样式解析、样式匹配、样式合成和应用整个链路的样式处理逻辑。

另外,Taro 引入了 Yoga 布局引擎来计算渲染节点的位置和大小,最大程度保证 Taro 构建出来的鸿蒙应用中渲染样式和 W3C 规范的一致性。

媲美原生 ArkTS 的高性能
运行时逻辑下沉至 C++
在 C-API 的版本中,我们将 ArkVM 层的 Taro 运行时内容削减到极致的薄,将 TaroElement 的大部分内容都下沉到了 C++ 侧,并在 ArkVM 层取消了他们之间父子关系的绑定,极大地提升了 TaroElement 相关逻辑的性能。

另一方面,在 C++ 侧 Taro 会指令式地调用 ArkUI 在 C++ 侧提供的 API,来高效地创建节点、设置属性、绑定事件以及绘制上屏。
提供长列表组件应对长列表场景
Taro 还针对长列表场景针对性地提供了长列表类型组件,并对长列表类型组件进行了优化,提供了懒加载、预加载和节点复用等功能,有效地解决大数据量下的性能问题,提高应用的流畅度和用户体验。

支持 C-API 混合原生的渲染模式
Taro 的组件和 API 是以小程序作为基准来进行设计的,因此在实际的鸿蒙应用开发过程中,会出现部分所需的组件和 API 在 Taro 中不存在的情况,因为针对这种情况,在 C-API 版本中,Taro 提供了原生混合开发的能力,支持将原生页面或者原生组件混合编译到 Taro 鸿蒙项目中,支持 Taro 组件和鸿蒙原生组件在页面上的混合使用。

使用教程
项目开源地址
Taro 本地开源地址:https://github.com/NervJS/taro
Taro 鸿蒙 C-API 开源地址:https://github.com/NervJS/taro-harmony-capi-library
安装和使用
安装 harmony 插件
# 使用 npm 安装 $ npm i @tarojs/plugin-platform-harmony-cpp # 使用 pnpm 安装 $ pnpm i @tarojs/plugin-platform-harmony-cpp
添加插件配置
import os from 'os'
import path from 'path'
const config = {
// ...
plugins: ['@tarojs/plugin-platform-harmony-cpp'],
harmony: {
// 当前仅支持使用 Vite 编译鸿蒙应用
compiler: 'vite',
// Note: 鸿蒙工程路径,可以参考 [鸿蒙应用创建导读](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V2/start-with-ets-stage-0000001477980905-V2) 创建
projectPath: path.join(os.homedir(), 'projects/my-business-project'),
// Taro 项目编译到对应鸿蒙模块名,默认为 entry
hapName: 'entry',
},
// ...
}
编译项目
# 编译鸿蒙应用 $ taro build --type harmony_cpp # 编译鸿蒙原生组件 $ taro build native-components --type harmony_cpp
如果需要编译鸿蒙应用,同时使用编译鸿蒙原生组件,可以在页面配置中添加 entryOption: false 表示该页面是组件,同时可以用过 componentName 指定组件导出名。
export default {
navigationBarTitleText: 'Hello World',
+ componentName: 'MyComponent',
+ entryOption: false,
}
总结与展望
Taro on Harmony C-API 版本经历了京东鸿蒙 APP 的实践,综合性能、生态以及开发体验来讲,毫无疑问已经成为了开发鸿蒙应用的最佳框架选型之一。
当下,我们也仍然在不断完善着鸿蒙的适配方案,基于当前的 Taro on Harmony C-API 方案,我们会进行多线程的架构升级以及 React 的 C++ 化,进一步提升 Taro 在鸿蒙端侧的性能,并极大地降低应用的丢帧率,整体进展也已经处于验证和测试阶段。
也欢迎大家一起参与 Taro on Harmony 的共建,你们的每一个建议,每一次提交,都是推进 Taro 继续往前走最大的动力。
审核编辑 黄宇
- 随机文章
- 热门文章
- 热评文章
- 监管引导新股询价定价日趋合理 年内破发率仅为3.03%
- 热潮涌动的人工智能距离科技“奇点”还有多远
- 佩戴分享:欧米茄全新超霸专业月球表白盘款
- IMAX与博纳影业集团扩展合作 新建3家激光影院
- 恒丰银行扎实开展全民国家安全教育日活动
- “浙里办”上能买演唱会门票了?记者进行了实测
- 马棕油期货:地缘政治风险与需求潜力交错,价格何去何从?
- 浙北白天雨水不扰,为何春雨喜欢随风潜入夜
- 超90家房企入局代建行业 一季度中标项目增量创新高
- 扎心!多名美联储决策者一致发声:年内不降息
- 日银周五料维持利率不变,可能在夏季或秋季加息
- IPO观察|湖北银行IPO进程难题:刚获290万元罚单 又股权近六折拍卖无人要
- 美国多地高校因巴以局势爆发大规模示威,我驻美使馆发提醒
- 1“赛事+”提升城市“流量” 陕西商洛拓经济发展新“赛道”
- 2“五一”临近 持基过节的投资者要注意这几点
- 3华发股份:成功入选“人民优选”品牌 五一黄金周热销30亿
- 4到2027年产业规模达到2000亿元 浙江发布历史经典产业高质量发展计划
- 5IDC:24Q1全球PC出货量恢复增长 达到疫情前水平
- 6钟鼓楼老街区的古都新事
- 7非常危险!女子摔成粉碎性骨折!又是因为洞洞鞋,夏天多人中招……
- 8金税四期试点上线,财税体制改革拉开帷幕!或有资金借道信创ETF基金(562030)逢跌进场布局
- 9初步数据:我国一季度经常账户顺差392亿美元
- 10“发现山西之美”TDC旅游发现者大会举办:共话文旅新生态 邀客体验新玩法
- 11国门“夫妻档” 国庆共坚守
- 12北交所一周审核动态:2家企业更新进展 胜业电气二轮问询回复中称家电头部客户对价格敏感度较低
- 13甘肃白银县域经济:从“一枝独秀”到“多点开花”
- 1小方制药两专利受让信披出错,产品挂网价申报出差池
- 2高考在即,如何拿出最好状态?这份“锦囊”请收好
- 3【央视快评】继续弘扬“爱国、革命”的黄埔精神 为同心共圆中国梦广泛凝心聚力
- 4EBC GROUP平台外汇行情播报|科技股疲态和过热情绪引起不安
- 5父母“上瘾”,凌晨3点都不睡!儿女一查账单惊呆了……
- 6我国最大海上公务执法船“海巡09”巡航惠州港
- 7星环科技:9月10日召开业绩说明会,投资者参与
- 8四川双江口水电站库周交通工程“8·18”较大坍塌事故调查报告公布
- 9红旗天工08正式上市 售价23.98万元起
- 10国证2000指数表现亮眼 景顺长城量化策略助力捕获超额收益
- 112025年华北地区联合招聘活动在京举办
- 12小摩:料宁德时代(03750)股价短期或回调 目标价400港元 维持“增持”评级
- 139月首周港股三大指数收涨 机构对后续持乐观态度,9月首周港股三大指数收涨 机构对后续持乐观态度




