新聞中心

        EEPW首頁 > 新聞縱覽 > 京東正式開源Taro on HarmonyOS C-API 版本,為鴻蒙應(yīng)用跨端開發(fā)提供高性能框架

        京東正式開源Taro on HarmonyOS C-API 版本,為鴻蒙應(yīng)用跨端開發(fā)提供高性能框架

        作者: 時間:2025-06-03 來源: 收藏

        近日,京東正式開源了Taro on HarmonyOS C-API 版本,為鴻蒙應(yīng)用跨端開發(fā)提供高性能框架。這次版本的發(fā)布,帶來了更豐富的樣式適配、更高效的渲染性能、更全面的組件支持,讓開發(fā)者以Web范式的方式來開發(fā)出媲美鴻蒙性能的應(yīng)用,為鴻蒙應(yīng)用生態(tài)的豐富注入強(qiáng)大的動力。

        本文引用地址:http://www.104case.com/article/202506/471027.htm

        圖片 1.png

        圖:京東鴻蒙版應(yīng)用

        整體技術(shù)架構(gòu)

        Taro on HarmonyOS 技術(shù)方案支持開發(fā)者使用 React DSL 來開發(fā)鴻蒙應(yīng)用,在整體架構(gòu)上可以簡單分為三層:

        圖片 2.png

        圖:Taro on HarmonyOS React

        最上層是應(yīng)用業(yè)務(wù)代碼所在的 ArkVM 層,這一層在 C-API 版本中主要運(yùn)行業(yè)務(wù)代碼、React 的核心代碼以及少量的 Taro 運(yùn)行時代碼。

        中間層是 Taro 的 CSSOM 和 TaroElement 樹,負(fù)責(zé)處理上層 Taro 運(yùn)行時代碼傳遞下來的指令,比如 TaroElement 節(jié)點(diǎn)樹創(chuàng)建,綁定關(guān)系以及設(shè)置屬性等操作。

        最下層存放的是 TaroRenderNode 虛擬節(jié)點(diǎn)樹,這棵節(jié)點(diǎn)樹和真正的上屏節(jié)點(diǎn)樹是一一對應(yīng)的關(guān)系,同時在 TaroRenderNode 節(jié)點(diǎn)樹內(nèi)會創(chuàng)建對應(yīng)的 Yoga 節(jié)點(diǎn)。

        圖片 3.png

        圖:Taro on HarmonyOS React DOM

        同時,Taro還基于鴻蒙提供的VSync機(jī)制設(shè)置一套任務(wù)處理管線,來處理中間層和下層節(jié)點(diǎn)樹產(chǎn)生的樣式匹配、節(jié)點(diǎn)測量、節(jié)點(diǎn)布局、樣式設(shè)置以及節(jié)點(diǎn)上屏等任務(wù),來保證任務(wù)的時序性和最后上屏渲染結(jié)果的正確性。

        重點(diǎn)特性

        在特性方面,Taro on HarmonyOS 技術(shù)方案具備“豐富的能力支持、媲美 ArkTS 的高性能、支持 C-API 渲染模式”等三大重點(diǎn)特性。

        (1) 豐富的能力支持

        C-API 版本的 Taro on HarmonyOS支持常用組件和 API ,不僅支持React 18+,還支持View、Text、Image、Video 等近33個Taro組件,以及支持如getSystemInfo、getStorage 等常用的API,針對邏輯較為復(fù)雜的 API 如:createSelectorQuery 以及 createIntersectionObserver,也在C++側(cè)進(jìn)行了重新的實(shí)現(xiàn),大幅提升了執(zhí)行性能。

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

        支持常見的 CSS 樣式和布局,支持 flex、偽類和偽元素

        支持常見的 CSS 定位,絕對定位、fixed 定位

        支持常見的 CSS 選擇器和媒體查詢

        支持常見的 CSS 單位,比如 vh、vw 以及計(jì)算屬性 calc

        支持 CSS 變量以及安全區(qū)域等預(yù)定義變量

        同時,在參考瀏覽器 CSSOM 的實(shí)現(xiàn)方式基礎(chǔ)上,在C++實(shí)現(xiàn)了一套 CSSOM 邏輯,里面包含了樣式解析、樣式匹配、樣式合成和應(yīng)用整個鏈路的樣式處理邏輯。

        圖片 4.png

        圖:Taro on HarmonyOS CSS

        另外,Taro 引入了 Yoga 布局引擎來計(jì)算渲染節(jié)點(diǎn)的位置和大小,最大程度保證 Taro 構(gòu)建出來的鴻蒙應(yīng)用中渲染樣式和 W3C 規(guī)范的一致性。

        圖片 5.png

        圖:Taro on HarmonyOS Style

        (2)媲美 ArkTS 的高性能

        在 C-API 的版本中,ArkVM 層的 Taro 運(yùn)行時內(nèi)容已削減到非常薄,將 TaroElement 的大部分內(nèi)容都下沉到了 C++ 側(cè),并在 ArkVM 層取消了他們之間父子關(guān)系的綁定,極大地提升了 TaroElement 相關(guān)邏輯的性能。

        圖片 6.png

        圖:Taro on HarmonyOS CAPI

        另一方面,在 C++ 側(cè) Taro 會指令式地調(diào)用 ArkUI 在 C++ 側(cè)提供的 API,來高效地創(chuàng)建節(jié)點(diǎn)、設(shè)置屬性、綁定事件以及繪制上屏。

        Taro 還針對長列表場景針對性地提供了長列表類型組件,并對長列表類型組件進(jìn)行了優(yōu)化,提供了懶加載、預(yù)加載和節(jié)點(diǎn)復(fù)用等功能,有效地解決大數(shù)據(jù)量下的性能問題,提高應(yīng)用的流暢度和用戶體驗(yàn)。

        圖片 7.png

        圖:Taro on HarmonyOS Virtual List

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

        Taro 的組件和 API 是以小程序作為基準(zhǔn)來進(jìn)行設(shè)計(jì)的,因此在實(shí)際的鴻蒙應(yīng)用開發(fā)過程中,會出現(xiàn)部分所需的組件和 API 在 Taro 中不存在的情況,因?yàn)獒槍@種情況,在 C-API 版本中,Taro 支持將初始頁面或者組件混合編譯到 Taro 鴻蒙項(xiàng)目中,支持 Taro 組件和鴻蒙組件在頁面上的混合使用。

        圖片 8.png

        圖:Taro on HarmonyOS CAPI Hybrid

        使用指南

        Taro on HarmonyOS技術(shù)方案已開源至Github,開發(fā)者可搜索“taro”以獲取更多信息:

        圖片 9.png

        使用前,開發(fā)者可先安裝Harmony插件

        圖片 10.png

        添加插件配置

        圖片 11.png

        編譯項(xiàng)目

        圖片 12.png

        如果需要編譯鴻蒙應(yīng)用,同時使用編譯鴻蒙組件,可以在頁面配置中添加 entryOption: false  表示該頁面是組件,同時可以用過 componentName 指定組件導(dǎo)出名。

        圖片 13.png

        Taro on HarmonyOS C-API 版本經(jīng)歷了京東鴻蒙 APP 的實(shí)踐,從綜合性能、生態(tài)以及開發(fā)體驗(yàn)都更上一層樓。未來,京東團(tuán)隊(duì)還會基于當(dāng)前的 Taro on HarmonyOS C-API 方案,進(jìn)行多線程的架構(gòu)升級以及 React 的 C++ 化,進(jìn)一步提升 Taro 在鴻蒙端側(cè)的性能,并極大地降低應(yīng)用的丟幀率。歡迎廣大開發(fā)者一起參與 Taro on HarmonyOS 的共建,推動 Taro 更好發(fā)展。

        華為在未來也將持續(xù)攜手生態(tài)伙伴共建創(chuàng)新,面向底座技術(shù)、通用能力、垂類行業(yè)等場景推出系列開發(fā)者場景化解決方案,不斷提升鴻蒙應(yīng)用的創(chuàng)新體驗(yàn)和開發(fā)效率,與廣大開發(fā)者共建繁榮的鴻蒙生態(tài)。




        關(guān)鍵詞:

        評論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 农安县| 南投县| 安义县| 兴化市| 柳州市| 商都县| 平度市| 景泰县| 香河县| 麦盖提县| 奎屯市| 桃源县| 四平市| 永春县| 清苑县| 西华县| 阿拉善左旗| 镇巴县| 凉山| 巴东县| 嵩明县| 筠连县| 大冶市| 监利县| 万盛区| 西畴县| 嘉鱼县| 内乡县| 沿河| 平利县| 伊通| 邯郸市| 宜川县| 桃园市| 泰宁县| 前郭尔| 日喀则市| 将乐县| 东丽区| 鸡西市| 民丰县|