一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

Taro on Harmony C-API 版本正式開(kāi)源

京東云 ? 來(lái)源:jf_75140285 ? 作者:jf_75140285 ? 2025-06-03 17:44 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Taro 是由京東發(fā)起并維護(hù)的開(kāi)放式跨端跨框架解決方案,支持以 Web 的開(kāi)發(fā)范式來(lái)實(shí)現(xiàn)小程序、H5、原生 APP 的跨端統(tǒng)一開(kāi)發(fā),從 18 年開(kāi)源至今,在 GitHub 已累計(jì)獲得 36,000+ Stars。

Taro x 純血鴻蒙

在過(guò)去的一年中,Taro 經(jīng)歷了顯著的蛻變,Taro on Harmony 方案完成從 ArkTS 方案到 C-API 方案的升級(jí),成功實(shí)現(xiàn)了對(duì)純血鴻蒙的完全適配,擴(kuò)展了 Taro 的兼容平臺(tái)家族,實(shí)現(xiàn)了對(duì) H5、小程序、RN、原生鴻蒙多端的統(tǒng)一開(kāi)發(fā)。

wKgZPGg-w_iAEA4fAAMoUb8Ux_U228.png

去年 9 月,京東 APP 純血鴻蒙 在鴻蒙應(yīng)用商城正式上線,APP 中核心購(gòu)物鏈路,如首頁(yè)、搜索、商詳、購(gòu)物車、訂單、結(jié)算和我京等頁(yè)面,都是通過(guò) Taro on Harmony C-API 版本進(jìn)行開(kāi)發(fā),并且一上線就獲得了華為的 S 級(jí)應(yīng)用認(rèn)證。

今天,我們正式開(kāi)源 Taro on Harmony C-API 版本,這次版本的發(fā)布,將帶來(lái)更豐富的樣式適配、更高效的渲染性能、更全面的組件支持,讓開(kāi)發(fā)者以 Web 范式的方式來(lái)開(kāi)發(fā)出媲美原生鴻蒙性能的應(yīng)用,為鴻蒙應(yīng)用生態(tài)的豐富注入強(qiáng)大的動(dòng)力。

對(duì)于開(kāi)發(fā)者來(lái)說(shuō),Taro on Harmony 技術(shù)方案為開(kāi)發(fā)者提供了顯著優(yōu)勢(shì):顯著降低鴻蒙應(yīng)用開(kāi)發(fā)門(mén)檻,讓開(kāi)發(fā)者能夠運(yùn)用熟悉的 Web 技術(shù)??焖贅?gòu)建純血鴻蒙應(yīng)用。同時(shí),基于鴻蒙 CAPI 構(gòu)建的高性能渲染管線,在保證開(kāi)發(fā)高效率的同時(shí)實(shí)現(xiàn)了與原生應(yīng)用媲美的性能表現(xiàn)。更重要的是,開(kāi)發(fā)者可以充分復(fù)用現(xiàn)有研發(fā)生態(tài),將存量 Taro 項(xiàng)目快速適配遷移至鴻蒙平臺(tái),大幅加速業(yè)務(wù)在鴻蒙生態(tài)的布局與上架進(jìn)程。

wKgZPGg-w_mANxNsACdUv0C8qFw123.jpg

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

Taro on Harmony 技術(shù)方案支持開(kāi)發(fā)者使用 React DSL 來(lái)開(kāi)發(fā)純血鴻蒙應(yīng)用,整體架構(gòu)可以簡(jiǎn)單分為三層:

wKgZO2g-w_qAfRa4AAG1vWhwYL8357.png

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

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

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

wKgZPGg-w_qAUR31AAHzyRx6Yic680.png

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

重點(diǎn)特性

豐富的能力支持

常用組件和 API 支持

在 C-API 版本的 Taro on Harmony 中,我們不僅完整支持了 React 18+,另外支持了 View、Text、Image、Video 等近 33 個(gè) Taro 組件,對(duì)于常用的 API,如 getSystemInfo、getStorage 等也是在 C-API 版本中得到了完整的支持,而且針對(duì)邏輯較為復(fù)雜的 API 如:createSelectorQuery 以及 createIntersectionObserver,我們將這些 API 在 C++ 側(cè)進(jìn)行了重新的實(shí)現(xiàn),大幅提升了他們的執(zhí)行性能。

常用樣式支持

在 C-API 版本中,我們對(duì)支持了大部分常見(jiàn)的 CSS 能力:

支持常見(jiàn)的 CSS 樣式和布局,支持 flex、偽類和偽元素

支持常見(jiàn)的 CSS 定位,絕對(duì)定位、fixed 定位

支持常見(jiàn)的 CSS 選擇器和媒體查詢

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

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

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

wKgZO2g-w_qAI-0KAADBTmNQ0Ek567.png

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

wKgZPGg-w_uAP8CkAAUjSa4QtbI956.png

媲美原生 ArkTS 的高性能

運(yùn)行時(shí)邏輯下沉至 C++

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

wKgZO2g-w_yABbFtAAUYsbR7NzE071.png

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

提供長(zhǎng)列表組件應(yīng)對(duì)長(zhǎng)列表場(chǎng)景

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

wKgZPGg-w_yAMrjlAADMBQoBLKg486.png

支持 C-API 混合原生的渲染模式

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

wKgZO2g-w_2AOdOmAAZSdMhlNhw834.png

使用教程

項(xiàng)目開(kāi)源地址

Taro 本地開(kāi)源地址:https://github.com/NervJS/taro

Taro 鴻蒙 C-API 開(kāi)源地址: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: {
    // 當(dāng)前僅支持使用 Vite 編譯鴻蒙應(yīng)用
    compiler: 'vite',
    // Note: 鴻蒙工程路徑,可以參考 [鴻蒙應(yīng)用創(chuàng)建導(dǎo)讀](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V2/start-with-ets-stage-0000001477980905-V2) 創(chuàng)建
    projectPath: path.join(os.homedir(), 'projects/my-business-project'),
    // Taro 項(xiàng)目編譯到對(duì)應(yīng)鴻蒙模塊名,默認(rèn)為 entry
    hapName: 'entry',
  },
  // ...
}

編譯項(xiàng)目

# 編譯鴻蒙應(yīng)用
$ taro build --type harmony_cpp
# 編譯鴻蒙原生組件
$ taro build native-components --type harmony_cpp

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

export default {
  navigationBarTitleText: 'Hello World',
+  componentName: 'MyComponent',
+  entryOption: false,
}

總結(jié)與展望

Taro on Harmony C-API 版本經(jīng)歷了京東鴻蒙 APP 的實(shí)踐,綜合性能、生態(tài)以及開(kāi)發(fā)體驗(yàn)來(lái)講,毫無(wú)疑問(wèn)已經(jīng)成為了開(kāi)發(fā)鴻蒙應(yīng)用的最佳框架選型之一。

當(dāng)下,我們也仍然在不斷完善著鴻蒙的適配方案,基于當(dāng)前的 Taro on Harmony C-API 方案,我們會(huì)進(jìn)行多線程的架構(gòu)升級(jí)以及 React 的 C++ 化,進(jìn)一步提升 Taro 在鴻蒙端側(cè)的性能,并極大地降低應(yīng)用的丟幀率,整體進(jìn)展也已經(jīng)處于驗(yàn)證和測(cè)試階段。

也歡迎大家一起參與 Taro on Harmony 的共建,你們的每一個(gè)建議,每一次提交,都是推進(jìn) Taro 繼續(xù)往前走最大的動(dòng)力。


審核編輯 黃宇

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

    關(guān)注

    2

    文章

    1567

    瀏覽量

    63721
  • Harmony
    +關(guān)注

    關(guān)注

    0

    文章

    65

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

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

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

    320 C-API/PPR編程參考

    The Opt. 320 C-API/PPR Programming Reference describes all C functions, types and definitions
    發(fā)表于 08-13 14:19

    PCI-X系列選項(xiàng)320 C-API/PPR編程指南

    The E2920 C-API/PPR Programming Guide contains detailed information on how to program the Exerciser
    發(fā)表于 08-20 14:39

    C-API/PPR編程參考

    A C-API/PPR Programming Reference Guide for the Keysight E2922 and E2923 explaining different functions, error handling, and type definitions.
    發(fā)表于 08-22 13:47

    Taro下拉加載更多,上拉刷新是什么

    Taro下拉加載更多,上拉刷新
    發(fā)表于 06-15 17:10

    Harmony os java api對(duì)應(yīng)的實(shí)現(xiàn)代碼沒(méi)有開(kāi)放嗎?

    Harmony os java api對(duì)應(yīng)的實(shí)現(xiàn)代碼沒(méi)有開(kāi)放嗎?
    發(fā)表于 11-30 18:06

    Open Harmony如何接入開(kāi)源圖形驅(qū)動(dòng)呢

    Open Harmony如何接入開(kāi)源圖形驅(qū)動(dòng)呢?在OpenHarmony上使能開(kāi)源GPU
    發(fā)表于 03-02 06:03

    Harmony和Android的內(nèi)核版本有什么含義呢?

    |Android的內(nèi)核版本指的是linux版本嗎?Harmony的內(nèi)核版本指的也是linux嗎?他們兩個(gè)的內(nèi)核版本有大佬講解一下嗎?
    發(fā)表于 05-19 14:44

    The MySQL C API 編程實(shí)例

    在網(wǎng)上找了一些MYSQL C API編程的文章,如《The MySQL C API 編程實(shí)例》,看了后覺(jué)得還是寫(xiě)的不夠充分,根據(jù)自己經(jīng)驗(yàn)又?jǐn)U充了一些知識(shí),希望對(duì)需要調(diào)用到MYSQL的
    發(fā)表于 04-13 15:01 ?5次下載

    harmony官方開(kāi)源社區(qū)

    harmony官方開(kāi)源社區(qū) harmony官方開(kāi)源社區(qū),2019業(yè)界開(kāi)發(fā)者調(diào)查報(bào)告中顯示,61%的開(kāi)發(fā)者認(rèn)為文檔和代碼樣例是企業(yè)需要提供開(kāi)發(fā)者最重要的內(nèi)容。但在
    的頭像 發(fā)表于 06-21 19:22 ?2567次閱讀

    OpenHarmony生態(tài)論壇:關(guān)于開(kāi)源Harmony OS教育行業(yè)發(fā)行版介紹

    OpenHarmony生態(tài)論壇:關(guān)于開(kāi)源Harmony OS教育行業(yè)發(fā)行版,深度賦能智能硬件行業(yè)
    的頭像 發(fā)表于 04-25 15:19 ?1253次閱讀
    OpenHarmony生態(tài)論壇:關(guān)于<b class='flag-5'>開(kāi)源</b><b class='flag-5'>Harmony</b> OS教育行業(yè)發(fā)行版介紹

    使用 Taro 開(kāi)發(fā)鴻蒙原生應(yīng)用 —— 快速上手,鴻蒙應(yīng)用開(kāi)發(fā)指南

    隨著鴻蒙系統(tǒng)的不斷完善,許多應(yīng)用廠商都希望將自己的應(yīng)用移植到鴻蒙平臺(tái)上。最近,Taro 發(fā)布了 v4.0.0-beta.x 版本,支持使用 Taro 快速開(kāi)發(fā)鴻蒙原生應(yīng)用,也可將現(xiàn)有的小程序轉(zhuǎn)換
    的頭像 發(fā)表于 02-02 16:09 ?1350次閱讀
    使用 <b class='flag-5'>Taro</b> 開(kāi)發(fā)鴻蒙原生應(yīng)用 —— 快速上手,鴻蒙應(yīng)用開(kāi)發(fā)指南

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

    HarmonyOS 采用自研的 ArkUI 框架作為原生 UI 開(kāi)發(fā)方案,這套方案有完善的布局系統(tǒng)和樣式控制,但是他的標(biāo)準(zhǔn)與 W3C 的 CSS 標(biāo)準(zhǔn)存在不一致性。這意味著,如果 Taro 直接
    的頭像 發(fā)表于 10-31 10:54 ?493次閱讀
    <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)幕系列(三) - 多語(yǔ)言場(chǎng)景下的通用事件系統(tǒng)設(shè)計(jì)

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

    京東開(kāi)源Taro on HarmonyOS C-API版本

    近日,京東正式開(kāi)源Taro on HarmonyOS C-API 版本,為鴻蒙應(yīng)用跨端開(kāi)發(fā)提供高性能框架。這次版本的發(fā)布,帶來(lái)了更豐富的樣
    的頭像 發(fā)表于 06-09 09:19 ?468次閱讀
    京東<b class='flag-5'>開(kāi)源</b><b class='flag-5'>Taro</b> on HarmonyOS <b class='flag-5'>C-API</b><b class='flag-5'>版本</b>