写点什么

京东正式开源 Taro on HarmonyOS C-API 版本,为鸿蒙应用跨端开发提供高性能框架

  • 2025-06-23
    北京
  • 本文字数:1826 字

    阅读完需:约 6 分钟

京东正式开源Taro on HarmonyOS C-API版本,为鸿蒙应用跨端开发提供高性能框架

近日,京东正式开源了 Taro on HarmonyOS C-API 版本,为鸿蒙应用跨端开发提供高性能框架。这次版本的发布,带来了更丰富的样式适配、更高效的渲染性能、更全面的组件支持,让开发者以 Web 范式的方式来开发出媲美鸿蒙性能的应用,为鸿蒙应用生态的丰富注入强大的动力。

图:京东鸿蒙版应用

 

整体技术架构

Taro on HarmonyOS 技术方案支持开发者使用 React DSL 来开发鸿蒙应用,在整体架构上可以简单分为三层:

 图:Taro on HarmonyOS React


最上层是应用业务代码所在的 ArkVM 层,这一层在 C-API 版本中主要运行业务代码、React 的核心代码以及少量的 Taro 运行时代码。

 

中间层是 Taro 的 CSSOM 和 TaroElement 树,负责处理上层 Taro 运行时代码传递下来的指令,比如 TaroElement 节点树创建,绑定关系以及设置属性等操作。

 

最下层存放的是 TaroRenderNode 虚拟节点树,这棵节点树和真正的上屏节点树是一一对应的关系,同时在 TaroRenderNode 节点树内会创建对应的 Yoga 节点。

 图:Taro on HarmonyOS React DOM

 

同时,Taro 还基于鸿蒙提供的 VSync 机制设置一套任务处理管线,来处理中间层和下层节点树产生的样式匹配、节点测量、节点布局、样式设置以及节点上屏等任务,来保证任务的时序性和最后上屏渲染结果的正确性。

 

重点特性

在特性方面,Taro on HarmonyOS 技术方案具备“丰富的能力支持、媲美 ArkTS 的高性能、支持 C-API 渲染模式”等三大重点特性。

 

(1) 丰富的能力支持

C-API 版本的 Taro on HarmonyOS 支持常用组件和 API,不仅支持 React 18+,还支持 View、Text、Image、Video 等近 33 个 Taro 组件,以及支持如 getSystemInfo、getStorage 等常用的 API,针对逻辑较为复杂的 API 如:createSelectorQuery 以及 createIntersectionObserver,也在 C++侧进行了重新的实现,大幅提升了执行性能。

 

此外 C-API 版本支持大部分常见的 CSS 能力:

支持常见的 CSS 样式和布局,支持 flex、伪类和伪元素

支持常见的 CSS 定位,绝对定位、fixed 定位

支持常见的 CSS 选择器和媒体查询

支持常见的 CSS 单位,比如 vh、vw 以及计算属性 calc

支持 CSS 变量以及安全区域等预定义变量

同时,在参考浏览器 CSSOM 的实现方式基础上,在 C++实现了一套 CSSOM 逻辑,里面包含了样式解析、样式匹配、样式合成和应用整个链路的样式处理逻辑。

 图:Taro on HarmonyOS CSS

 

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

 图:Taro on HarmonyOS Style

 

(2)媲美 ArkTS 的高性能

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

 图:Taro on HarmonyOS CAPI


另一方面,在 C++侧 Taro 会指令式地调用 ArkUI 在 C++侧提供的 API,来高效地创建节点、设置属性、绑定事件以及绘制上屏。

 

Taro 还针对长列表场景针对性地提供了长列表类型组件,并对长列表类型组件进行了优化,提供了懒加载、预加载和节点复用等功能,有效地解决大数据量下的性能问题,提高应用的流畅度和用户体验。

 图:Taro on HarmonyOS Virtual List

 

(3)支持 C-API 的渲染模式

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

 图:Taro on HarmonyOS CAPI Hybrid

 

使用指南

Taro on HarmonyOS 技术方案已开源至 Github,开发者可搜索“taro”以获取更多信息:

使用前,开发者可先安装 Harmony 插件

添加插件配置

 编译项目

如果需要编译鸿蒙应用,同时使用编译鸿蒙组件,可以在页面配置中添加 entryOption: false  表示该页面是组件,同时可以用过 componentName 指定组件导出名。

 

Taro on HarmonyOS C-API 版本经历了京东鸿蒙 APP 的实践,从综合性能、生态以及开发体验都更上一层楼。未来,京东团队还会基于当前的 Taro on HarmonyOS C-API 方案,进行多线程的架构升级以及 React 的 C++化,进一步提升 Taro 在鸿蒙端侧的性能,并极大地降低应用的丢帧率。欢迎广大开发者一起参与 Taro on HarmonyOS 的共建,推动 Taro 更好发展。

 

华为在未来也将持续携手生态伙伴共建创新,面向底座技术、通用能力、垂类行业等场景推出系列开发者场景化解决方案,不断提升鸿蒙应用的创新体验和开发效率,与广大开发者共建繁荣的鸿蒙生态。

 

2025-06-23 15:235669

评论

发布
暂无评论

NumPy_2021.07.05

Flychen

系统故障防不胜防?不存在的,让大佬来给你上一课!

TakinTalks稳定性社区

高可用 测试 全链路压测 测试工具 生产环境全链路压测

云图说 | 华为云医疗智能体智联大健康:AI医学影像

华为云开发者联盟

AI 医学影像 医疗智能体 华为云医疗智能体 大健康

快看吧系统开发|快看吧软件APP开发

聚星公社软件开发|聚星公社APP系统开发

JAVA 九种排序算法详解(中)

加百利

Java 数组 排序 7月日更

Serverless 崛起背后的五大挑战

Serverless Devs

Serverless

《持之以恒的从事运动》二

Changing Lin

从零实现一个 k-v 存储引擎

roseduan

存储 Go 语言 KV存储引擎 存储系统

今天,「浪潮云说」直播间开讲啦!

云计算

Camtasia实用技巧之智能聚焦

淋雨

视频剪辑 Camtasia 专业录屏

BHDEX币挖矿APP系统开发内容

真happy软件开发|真happy系统APP开发

微摩尔WMO软件系统开发介绍

Go 学习笔记之 整型数据类型

架构精进之路

Go 语言 7月日更

Nacos配置中心交互模型是 push 还是 pull ?你应该这么回答

程序员小富

Java 编程 程序员 分布式 nacos

2022秋招vue面试题+答案

buchila11

Vue Vue 3

国家网信办:“滴滴出行” 下架整改!

学神来啦

免费分享学习Java框架Netty的优秀图书

Java入门到架构

Java 书籍推荐

从结构体、内存池初始化到申请释放,详细解读鸿蒙轻内核的动态内存管理

华为云开发者联盟

鸿蒙

聊聊数据仓库中维度表设计的二三事

云祁

数据仓库 维度建模 7月日更

北鲲云超算平台——致力于提高科研效率,降低计算成本的云超算平台

北鲲云

项目经理的职责和权限分别是什么?

万事ONES

项目管理 ONES 项目经理

如何做需求分析?

万事ONES

产品经理 需求分析 ONES

Java开发从二面被拒到收割阿里架构offer,我花了一年时间,复盘成功经历!

Java架构追梦

Java 阿里巴巴 架构 offer 成长笔记

并发王者课-铂金6:青出于蓝-Condition如何把等待与通知玩出新花样

MetaThoughts

Java 多线程 并发

GIN钱包挖矿系统开发|GIN钱包挖矿软件APP开发

如何给MindSpore添加一个新的硬件后端?快速构建测试环境!

华为云开发者联盟

AI 模型 框架 mindspore

DDD笔记

topsion

XRP瑞波币系统开发|XRP瑞波币软件APP开发

数字化转型提升太平洋保险风险治理能力

数据湖洞见

大数据

京东正式开源Taro on HarmonyOS C-API版本,为鸿蒙应用跨端开发提供高性能框架_HarmonyOS_HarmonyOS_InfoQ精选文章