色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創作中心

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

3天內不再提示

Taro on Harmony :助力業務高效開發純血鴻蒙應用

京東云 ? 來源:李偉濤 ? 作者:李偉濤 ? 2025-04-29 16:45 ? 次閱讀

作者;京東零售 李偉濤

背景

純血鴻蒙逐漸成為全球第三大操作系統,業界也掀起了適配鴻蒙原生的浪潮,用戶遷移趨勢明顯,京東作為國民應用,為鴻蒙用戶提供完整的購物體驗至關重要。


去年 9 月,京東 APP 純血鴻蒙 在鴻蒙應用商城正式上線,APP 中核心購物鏈路,如首頁、搜索、商詳、購物車、訂單、結算和我京等頁面,都是通過 Taro on Harmony 方案進行開發,并且一上線就獲得了華為的 S 級應用認證。

Taro 介紹

Taro 是由京東發起并維護的開放式跨端跨框架解決方案,支持以 Web 的開發范式來實現小程序、H5、原生 APP 的跨端統一開發,從 18 年開源至今,在 GitHub 已累計獲得 36,000+ Stars。


在過去的一年中,Taro 完成了鴻蒙適配方案的開發,Taro on Harmony 方案支持開發者使用 React DSL 來快速開發高性能原生鴻蒙應用,讓 Taro 具備了一份代碼同時跨鴻蒙、小程序、H5、React Native 多端的能力,可以讓開發者以熟悉的方式來開發鴻蒙應用,大幅降低鴻蒙開發門檻,并且存量的 Taro 業務也能快速轉成鴻蒙原生應用,可以節約大量研發成本。

Taro on Harmony 適配方案的演進

基于 ArkTS 的初始版本

Taro 適配鴻蒙方案經過了多個版本的演進迭代,最初版本我們采用的是對接到鴻蒙原生 ArkTS 語言的方式來實現,這和 Taro 適配微信小程序的方案類似,都是通過模擬瀏覽器 DOM/BOM 環境,然后運行 React 代碼構建出虛擬 DOM 樹,再將虛擬 DOM 樹以遞歸遍歷的方式構建出宿主環境(小程序/鴻蒙)的渲染節點樹,從而實現頁面渲染。


但這個方案的缺陷非常明顯,那就是在 ArkTS 之上再橋接一層轉換,導致性能相比原生存在一定差異,并且這個差異幾乎沒有辦法可以抹平。

基于 C API 的全新版本

恰逢此時,鴻蒙為了方便三方框架與應用接入鴻蒙生態,在官方開發語言 ArkTS 之外,開放了更底層 C API 能力,提供了 C++ 層的 UI 節點創建、屬性設置等能力(類似于 C++ 版本的 DOM),三方框架和應用可以基于 C API 構建高性能的解決方案和應用。


C API 就是 Taro 想要的能力,與 Taro 的架構完美契合,Taro React 構建出來的虛擬 DOM 樹可以通過 C API 直接去創建原生 UI 節點,省去了很多流程環節,并且可以將我們大部分的渲染管線處理沉到 C++ 中去,獲得飛躍式的性能提升,所以基于 C API 我們首先設計并開發了單線程架構版本。

單線程架構版本

單線程架構版本的示意圖如下,整個渲染過程均在主線程實現,業務代碼在 ArkVM 中執行獲得虛擬 DOM 樹,同時讀取樣式數據,通過 React Reconciler ,在構建虛擬樹時會調用 NAPI 在 C++ 側構建出對應的 Element Tree,同時也會進行樣式數據的解析處理,從而構建出 CSSOM 對象,Element Tree 和 CSSOM 對象會進行匹配從而構建出帶有樣式的 Render Tree,在這一步也會同時創建 yoga 節點,進行布局計算,最后會再基于布局計算的結果生成 C API 的 ArkNode Tree,從而實現上屏渲染。


目前京東鴻蒙 APP 中首頁、搜推、我京、核心購物流程均是使用 Taro 單線程版本進行開發,性能和穩定性位于第一梯隊。


多線程架構版本

單線程版本上線之后,我們也發現了單線程架構的不足,① 從業務代碼的執行到渲染流程的處理都發生在主線程上,這導致了主線程的過載,使得應用無法及時響應用戶的操作,從而引發了用戶體驗上的卡頓,隨著業務邏輯的增加和復雜性的提升,這種卡頓現象會越發明顯;② 在單線程架構下,代碼都是需要內置到應用包里,這樣就無法實現業務代碼的動態下發更新。

所以,為了解決以上問題,進一步提升應用性能,和應對未來更多業務場景需求的可能性,我們實現了多線程架構。


相較于單線程架構,多線程架構將整個業務代碼執行和渲染的過程拆分到了三個線程,每個線程各司其職,讓任務的執行更加合理,不會造成主線程的堵塞,這樣的架構主要帶來三個好處。

1.業務邏輯不再堵塞主流程,完全剝離到了單獨的線程執行,之前容易出現卡頓、甚至 APP Freeze 的頁面基本不再有問題,例如商詳接入之后滑動頁面變得更加流暢;

2.動畫執行和渲染不再卡頓,動畫的執行交由 Background 線程管控,不再和 JS 線程有沖突問題,動畫支持滿幀渲染;

3.支持動態化的能力,在性能上可以與原生相媲美,同時還能支持動態下發,支持更新遠端 JS 資源來實現 APP 內容的更新,讓業務具備快速驗證和免發版的能力。

目前多線程版本正在我們的業務中進行試點接入,很快就會正式上線。

Taro on Harmony 方案特性

豐富的能力支持

常用組件和 API 支持

在 C-API 版本的 Taro For 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 鴻蒙方案基于鴻蒙 CAPI 進行構建,實現了將 React DSL 直接對接到 C++ 側來運行整體渲染管線,從而實現了與原生齊平的渲染性能,同時 Taro 鴻蒙方案是多線程架構的方案,在應用渲染性能、操作響應時延上都在業界做到極致,并且 Taro 鴻蒙方案支持動態更新,是行業首創且經過大規模 APP 應用場景驗證的開發框架,綜合性能、生態以及開發體驗來講,毫無疑問已經成為了開發鴻蒙應用的最佳框架選型之一。

目前,我們也仍然在不斷完善著鴻蒙的適配方案,目前在渲染性能提升方面我們正在進行 React C++ 化的探索,整體進展也已經處于驗證和測試階段,同時也在進行自研布局引擎的探索,在進一步提升渲染性能的同時,為業務提供更豐富的樣式寫法支持;此外,在開發效率提升方面,我們也正在進行開發調試工具的探索開發,為業務提供熱重載、源碼定位、斷點調試、元素審查等能力,提升效率和開發體驗。

在近期,我們會將已經在京東鴻蒙 APP 久經考驗的單線程架構版本開源出來,為開源社區貢獻一份力量,為鴻蒙應用生態的豐富注入強大的動力。

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 鴻蒙
    +關注

    關注

    59

    文章

    2532

    瀏覽量

    43795
  • Harmony
    +關注

    關注

    0

    文章

    64

    瀏覽量

    2897
收藏 0人收藏

    評論

    相關推薦
    熱點推薦

    鴻蒙Harmony是如何影響Android工程師的呢?

    其實鴻蒙在2019就已經出來了,那時候還是套殼Android的。從2023年9月的發布會上,華為宣布鴻蒙原生應用全面啟動、HarmonyOS NEXT亮相以后,圍繞著
    發表于 01-14 22:14

    名單公布!【書籍評測活動NO.47】HarmonyOS NEXT啟程:零基礎構建鴻蒙應用

    要在2000萬 。這一呼吁引起了全球開發者的關注,也意味著市場對HarmonyOS開發人才的需求將快速增長。 什么是鴻蒙 Harmony
    發表于 10-14 14:36

    鴻蒙Taro實戰:01-搭建開發環境

    !? 安裝鴻蒙插件 yarn add @tarojs/plugin-platform-harmony-ets yarn add path 修改編譯配置 找到 config/index.ts 文件
    發表于 11-06 16:42

    鴻蒙,新賽道!

    鴻蒙,新賽道!對于像我這樣的大齡程序員,可以嘗試一下。大家都是在同一起點上,以前積累的經驗成了優勢!不管結果如何,干就是了,重要的是參與進來。
    發表于 11-07 11:27

    【「極速探索HarmonyOS NEXT 」閱讀體驗】 初印象:一本鴻蒙應用開發入門的好書

    非常有幸的于近日收到了電子發燒友寄來的《 極速探索HarmonyOS NEXT **** 鴻蒙應用開發實踐》這本由清華大學出版社出版的一本
    發表于 03-04 12:41

    鴻蒙鴻蒙星河版公開!原生應用千帆起航

    的各大第三方商用發行版。 ? 華為常務董事、終端BG CEO余承東表示,鴻蒙生態設備發展迅猛,如今包括手機、穿戴、座艙、智慧屏等在內的鴻蒙全場景設備已經突破8億。1月18日,華為在深圳召開了鴻蒙生態千帆儀式,正式揭開了
    的頭像 發表于 01-19 01:13 ?5017次閱讀
    “<b class='flag-5'>純</b><b class='flag-5'>血</b><b class='flag-5'>鴻蒙</b>”<b class='flag-5'>鴻蒙</b>星河版公開!原生應用千帆起航

    鴻蒙到來,對開發者是機會嗎?

    一、前言 華為宣布HarmonyOS NEXT鴻蒙星河版面向開發者開放申請,這一最新版本的鴻蒙系統也被喻為“
    的頭像 發表于 01-24 13:44 ?1425次閱讀
    “<b class='flag-5'>純</b><b class='flag-5'>血</b>”<b class='flag-5'>鴻蒙</b>到來,對<b class='flag-5'>開發</b>者是機會嗎?

    使用 Taro 開發鴻蒙原生應用 —— 快速上手,鴻蒙應用開發指南

    隨著鴻蒙系統的不斷完善,許多應用廠商都希望將自己的應用移植到鴻蒙平臺上。最近,Taro 發布了 v4.0.0-beta.x 版本,支持使用 Taro 快速
    的頭像 發表于 02-02 16:09 ?1314次閱讀
    使用 <b class='flag-5'>Taro</b> <b class='flag-5'>開發</b><b class='flag-5'>鴻蒙</b>原生應用 —— 快速上手,<b class='flag-5'>鴻蒙</b>應用<b class='flag-5'>開發</b>指南

    華為:升級鴻蒙設備性能提升30%

    在華為HDC2024開發者大會的盛大舞臺上,華為揭開了鴻蒙HarmonyOS NEXT的神秘面紗,并正式啟動了其Beta測試。這一消息不僅標志著華為在操作系統領域的又一次重大突破,
    的頭像 發表于 06-25 17:47 ?2013次閱讀

    華為“鴻蒙系統 HarmonyOS NEXT 將于9月底推出正式版

    據報道,正在舉行的 2024 年中國國際服務貿易交易會(以下簡稱“服貿會”)一場論壇上,華為鴻蒙行業解決方案總經理陳欣欣透露,華為完全自主開發、原生安全、原生智能的華為“
    的頭像 發表于 09-14 14:27 ?2277次閱讀

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

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

    Taro 鴻蒙技術內幕系列(二):如何讓 W3C 標準的 CSS跑在鴻蒙

    作者:京東零售 馬銀濤 ? 基于 Taro 打造的京東鴻蒙 APP 已跟隨鴻蒙 Next 系統公測,本系列文章將深入解析 Taro 如何實現使用 React
    的頭像 發表于 10-31 10:54 ?458次閱讀
    <b class='flag-5'>Taro</b> <b class='flag-5'>鴻蒙</b>技術內幕系列(二):如何讓 W3C 標準的 CSS跑在<b class='flag-5'>鴻蒙</b>上

    Taro 鴻蒙技術內幕系列(三) - 多語言場景下的通用事件系統設計

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

    深度融入“鴻蒙”|芯??萍计煜驴佃諳KOK首批入駐鴻蒙NEXT系統

    3月20日,隨著首款全面搭載鴻蒙系統的"寬折疊"手機PuraX的發布,全面鴻蒙時代正悄然到來。鴻蒙NEXT(
    的頭像 發表于 03-21 18:04 ?794次閱讀
    深度融入“<b class='flag-5'>純</b><b class='flag-5'>血</b><b class='flag-5'>鴻蒙</b>”|芯??萍计煜驴佃諳KOK首批入駐<b class='flag-5'>鴻蒙</b>NEXT系統

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

    近日,京東正式開源了Taro on HarmonyOS C-API 版本,為鴻蒙應用跨端開發提供高性能框架。這次版本的發布,帶來了更豐富的樣式適配、更高效的渲染性能、更全面的組件支持,
    的頭像 發表于 06-09 09:19 ?243次閱讀
    京東開源<b class='flag-5'>Taro</b> on HarmonyOS C-API版本
    主站蜘蛛池模板: 高清国语自产拍免费 | 啦啦啦 中国 日本 高清 在线 | 国产69精品久久久久乱码 | 丰满老熟女白浆直流 | 扒开老师大腿猛进AAA片软件 | 午夜日本大胆裸艺术 | 欧美极限扩肛 | 国产精品午夜小视频观看 | 亚洲国产欧美日韩在线一区 | 亚洲、国产综合视频 | 久久免费看少妇高潮A片特爽 | 美女屁股软件 | 麻豆官网入口 | 九九热久久只有精品2 | 免费被靠视频动漫 | 免费国产成人高清在线观看视频 | 乱码午夜-极品国产内射 | 小776 论坛 | 久久机热视频 这里只有精品首页 | 在线天天看片视频免费观看 | 天堂精品国产自在自线 | 嗯 用力啊 嗯 c我 啊哈老师 | 久久国产亚洲精品AV麻豆 | 看免费人成va视频全 | YELLOW在线观看高清视频免费 | 国产午夜精品理论片在线 | 偷窥自拍性综合图区 | 一个人HD在线观看免费高清视频 | 亚欧免费观看在线观看更新 | 久久综合中文字幕佐佐木希 | 99视频偷窥在线精品国自产拍 | 乌克兰美女x?x?y?y | ASIAN大陆明星裸休合成PICS | 纯肉腐文高H总受男男 | 国产精品久久久久影院 | 色偷偷伊人 | 7723手机游戏破解版下载 | 国产AV精品国语对白国产 | 越南女子杂交内射BBWXZ | 天天久久狠狠色综合 | 久久高清免费视频 |

    電子發燒友

    中國電子工程師最喜歡的網站

    • 2931785位工程師會員交流學習
    • 獲取您個性化的科技前沿技術信息
    • 參加活動獲取豐厚的禮品