99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

京東開源Taro on HarmonyOS C-API版本

HarmonyOS開發(fā)者 ? 來源:HarmonyOS開發(fā)者 ? 2025-06-09 09:19 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

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

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

283b7f5c-3dcd-11f0-b715-92fbcf53809c.png

圖片來源:Taro on HarmonyOS React

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

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

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

284e7148-3dcd-11f0-b715-92fbcf53809c.png

圖片來源:Taro on HarmonyOS React DOM

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

重點特性

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

(1)豐富的能力支持

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

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

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

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

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

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

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

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

285eb832-3dcd-11f0-b715-92fbcf53809c.png

圖片來源:Taro on HarmonyOS CSS

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

28708f9e-3dcd-11f0-b715-92fbcf53809c.png

圖片來源:Taro on HarmonyOS Style

(2)媲美 ArkTS 的高性能

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

2884068c-3dcd-11f0-b715-92fbcf53809c.png

圖片來源:Taro on HarmonyOS CAPI

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

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

28949e20-3dcd-11f0-b715-92fbcf53809c.png

圖片來源:Taro on HarmonyOS Virtual List

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

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

使用指南

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

https://github.com/NervJS/taro-harmony-capi-library

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

28b6f39e-3dcd-11f0-b715-92fbcf53809c.png

添加插件配置

28c3d668-3dcd-11f0-b715-92fbcf53809c.png

編譯項目

28d515a4-3dcd-11f0-b715-92fbcf53809c.png

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

28e508a6-3dcd-11f0-b715-92fbcf53809c.png

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

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 開源
    +關(guān)注

    關(guān)注

    3

    文章

    3690

    瀏覽量

    43840
  • 鴻蒙
    +關(guān)注

    關(guān)注

    60

    文章

    2621

    瀏覽量

    44067
  • HarmonyOS
    +關(guān)注

    關(guān)注

    80

    文章

    2126

    瀏覽量

    33113

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

文章出處:【微信號:HarmonyOS_Dev,微信公眾號:HarmonyOS開發(fā)者】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    淘寶 vs 京東電商 API 接口,誰才是數(shù)據(jù)王者?

    ? 在當(dāng)今數(shù)字化電商時代,API(應(yīng)用程序編程接口)是企業(yè)獲取和分析數(shù)據(jù)的關(guān)鍵工具。淘寶和京東作為中國兩大電商巨頭,其API接口的優(yōu)劣直接影響開發(fā)者和企業(yè)的決策。本文將從多個維度對淘寶API
    的頭像 發(fā)表于 07-08 15:51 ?178次閱讀
    淘寶 vs <b class='flag-5'>京東</b>電商 <b class='flag-5'>API</b> 接口,誰才是數(shù)據(jù)王者?

    京東電商 API 接口,訂單管理高效解決方案!

    ? 在當(dāng)今電商高速發(fā)展的時代,京東作為領(lǐng)先的電商平臺,其 API 接口為商家和開發(fā)者提供了強大的工具,幫助實現(xiàn)訂單管理的高效化。本文將逐步解析京東電商 API 接口的核心功能、優(yōu)勢及實
    的頭像 發(fā)表于 07-04 16:12 ?168次閱讀
    <b class='flag-5'>京東</b>電商 <b class='flag-5'>API</b> 接口,訂單管理高效解決方案!

    鴻蒙NEXT-鴻蒙老版本遷移最新版本API19,modelVersion5.1.1)

    摘要:本文介紹鴻蒙(HarmonyOS)最新API19的遷移更新教程。首先需修改三個配置文件(hvigor-config.json5、build-profile.json5
    的頭像 發(fā)表于 06-30 22:15 ?209次閱讀
    鴻蒙NEXT-鴻蒙老<b class='flag-5'>版本</b>遷移最新<b class='flag-5'>版本</b>(<b class='flag-5'>API</b>19,modelVersion5.1.1)

    針對“您的應(yīng)用使用了HarmonyOS beta版本API”的解決方法##HarmonyOS應(yīng)用上架##

    API。 修改建議:為提升消費者使用體驗,請使用HarmonyOS release版本API開發(fā)應(yīng)用,申請上架 我看到這個是有點懵的,因為我清楚的知道,我的項目是基于
    發(fā)表于 06-30 17:30

    鴻蒙開發(fā)API9 到 API12,有哪些不同

    ? ##HarmonyOS 應(yīng)用開發(fā)## 雖然API9已經(jīng)屬于過時了,但是現(xiàn)在很多學(xué)校里教的還是基于API9的鴻蒙開發(fā),當(dāng)學(xué)生需要在畢業(yè)設(shè)計中使用API12進行開發(fā)時,還是需要先掌握一
    發(fā)表于 06-29 22:47

    華為推出首款搭載HarmonyOS 5的鴻蒙電腦

    近日,華為正式發(fā)布搭載基于開源鴻蒙5.0.2 Release版本打造的全新HarmonyOS 5的鴻蒙電腦HUAWEI MateBook Pro與HUAWEI MateBook Fold非凡大師
    的頭像 發(fā)表于 05-26 09:28 ?648次閱讀

    使用HarmonyOS NEXT實現(xiàn)簽名板的功能

    個功能太簡單了。這期主要講一下之前實現(xiàn)功能有多難受,以及如何實現(xiàn)。,現(xiàn)在這套代碼也是可以直接遷移到API12版本的。 對了,目前我們開發(fā)的圖表組件已經(jīng)開源了,有興趣的伙伴可以參與一下。日常開發(fā)項目需要用圖表組件的也可以安裝立即使
    的頭像 發(fā)表于 03-16 16:00 ?447次閱讀

    AKI跨語言調(diào)用庫神助攻C/C++代碼遷移至HarmonyOS NEXT

    跨語言調(diào)用,成為開發(fā)者和廠商面臨的重要挑戰(zhàn)。為解決這一痛點,一款名為AKI (Alpha Kernel Interacting)的開源三方庫應(yīng)運而生,它通過高效封裝跨語言調(diào)用接口,幫助開發(fā)者將C
    發(fā)表于 01-02 17:08

    TMS320F280013x/15x閃存API版本 2.00.10.00

    電子發(fā)燒友網(wǎng)站提供《TMS320F280013x/15x閃存API版本 2.00.10.00.pdf》資料免費下載
    發(fā)表于 12-05 14:20 ?1次下載
    TMS320F280013x/15x閃存<b class='flag-5'>API</b><b class='flag-5'>版本</b> 2.00.10.00

    Taro 鴻蒙技術(shù)內(nèi)幕系列(三) - 多語言場景下的通用事件系統(tǒng)設(shè)計

    生態(tài)系統(tǒng)中,雖然原生應(yīng)用通常基于 ArkTS 實現(xiàn),但在實際研發(fā)過程中發(fā)現(xiàn),使用 C++ 可以顯著提升應(yīng)用框架和業(yè)務(wù)的性能表現(xiàn)。隨著鴻蒙系統(tǒng)的不斷迭代升級,不同語言環(huán)境間的協(xié)作已成為不可或缺的開發(fā)范式,共同構(gòu)建了更豐富的研發(fā)生態(tài)。 Taro 通過接入鴻蒙端的
    的頭像 發(fā)表于 11-27 11:42 ?609次閱讀
    <b class='flag-5'>Taro</b> 鴻蒙技術(shù)內(nèi)幕系列(三) - 多語言場景下的通用事件系統(tǒng)設(shè)計

    C2000 Position Manager PTO API參考指南

    電子發(fā)燒友網(wǎng)站提供《C2000 Position Manager PTO API參考指南.pdf》資料免費下載
    發(fā)表于 11-26 14:20 ?0次下載
    <b class='flag-5'>C</b>2000 Position Manager PTO <b class='flag-5'>API</b>參考指南

    TMS320F28003x閃存API版本1.58.11.00

    電子發(fā)燒友網(wǎng)站提供《TMS320F28003x閃存API版本1.58.11.00.pdf》資料免費下載
    發(fā)表于 11-19 14:15 ?1次下載
    TMS320F28003x閃存<b class='flag-5'>API</b><b class='flag-5'>版本</b>1.58.11.00

    鴻蒙Taro實戰(zhàn):01-搭建開發(fā)環(huán)境

    **4.0.0** 5. Module name: entry 注意,上面當(dāng)前 Taro 支持的 SDK 版本為 4.0.0 點擊 `Finish` 完成項目創(chuàng)建。 ## 安裝 Taro 4.x
    發(fā)表于 11-06 16:42

    Taro 鴻蒙技術(shù)內(nèi)幕系列(二):如何讓 W3C 標(biāo)準(zhǔn)的 CSS跑在鴻蒙上

    HarmonyOS 采用自研的 ArkUI 框架作為原生 UI 開發(fā)方案,這套方案有完善的布局系統(tǒng)和樣式控制,但是他的標(biāo)準(zhǔn)與 W3C 的 CSS 標(biāo)準(zhǔn)存在不一致性。這意味著,如果 Taro 直接
    的頭像 發(fā)表于 10-31 10:54 ?536次閱讀
    <b class='flag-5'>Taro</b> 鴻蒙技術(shù)內(nèi)幕系列(二):如何讓 W3<b class='flag-5'>C</b> 標(biāo)準(zhǔn)的 CSS跑在鴻蒙上

    Taro鴻蒙技術(shù)內(nèi)幕系列(一):如何將React代碼跑在ArkUI上

    基于 Taro 打造的京東鴻蒙 APP 已跟隨鴻蒙 Next 系統(tǒng)公測,本系列文章將深入解析 Taro 如何實現(xiàn)使用 React 開發(fā)高性能鴻蒙應(yīng)用的技術(shù)內(nèi)幕。
    的頭像 發(fā)表于 10-25 17:24 ?753次閱讀
    <b class='flag-5'>Taro</b>鴻蒙技術(shù)內(nèi)幕系列(一):如何將React代碼跑在ArkUI上