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

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

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

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

Taro on Harmony :助力業(yè)務高效開發(fā)純血鴻蒙應用

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

作者;京東零售 李偉濤

背景

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


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

Taro 介紹

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


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

Taro on Harmony 適配方案的演進

基于 ArkTS 的初始版本

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


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

基于 C API 的全新版本

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


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

單線程架構(gòu)版本

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


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


多線程架構(gòu)版本

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

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


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

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

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

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

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

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è)進行了重新的實現(xiàn),大幅提升了他們的執(zhí)行性能。

常用樣式支持

在 C-API 版本中,我們對支持了大部分常見的 CSS 能力:

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

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

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

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

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

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


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


媲美原生 ArkTS 的高性能

運行時邏輯下沉至 C++

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


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

提供長列表組件應對長列表場景

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


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

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


總結(jié)

Taro 鴻蒙方案基于鴻蒙 CAPI 進行構(gòu)建,實現(xiàn)了將 React DSL 直接對接到 C++ 側(cè)來運行整體渲染管線,從而實現(xiàn)了與原生齊平的渲染性能,同時 Taro 鴻蒙方案是多線程架構(gòu)的方案,在應用渲染性能、操作響應時延上都在業(yè)界做到極致,并且 Taro 鴻蒙方案支持動態(tài)更新,是行業(yè)首創(chuàng)且經(jīng)過大規(guī)模 APP 應用場景驗證的開發(fā)框架,綜合性能、生態(tài)以及開發(fā)體驗來講,毫無疑問已經(jīng)成為了開發(fā)鴻蒙應用的最佳框架選型之一。

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

在近期,我們會將已經(jīng)在京東鴻蒙 APP 久經(jīng)考驗的單線程架構(gòu)版本開源出來,為開源社區(qū)貢獻一份力量,為鴻蒙應用生態(tài)的豐富注入強大的動力。

審核編輯 黃宇

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

    關注

    57

    文章

    2469

    瀏覽量

    43642
  • Harmony
    +關注

    關注

    0

    文章

    63

    瀏覽量

    2850
收藏 人收藏

    評論

    相關推薦

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

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

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

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

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

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

    鴻蒙,新賽道!

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

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

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

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

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

    鴻蒙到來,對開發(fā)者是機會嗎?

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

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

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

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

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

    華為“鴻蒙系統(tǒng) HarmonyOS NEXT 將于9月底推出正式版

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

    近期,除了“鴻蒙公測”,校園開發(fā)者還有這件事要知道!

    10 月 8 日, 華為 HarmonyOS?NEXT?(“鴻蒙”)正式開啟公測 。首批公測機型涵蓋華為 Mate?60 系列、Mate?X5 系列和 MatePad?Pro?13.2 系列
    的頭像 發(fā)表于 10-16 14:07 ?1145次閱讀
    近期,除了“<b class='flag-5'>純</b><b class='flag-5'>血</b><b class='flag-5'>鴻蒙</b>公測”,校園<b class='flag-5'>開發(fā)</b>者還有這件事要知道!

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

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

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

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

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

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

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

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