在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

京東鴻蒙上線前瞻——使用 Taro 打造高性能原生應用

京東云 ? 來源:jf_75140285 ? 作者:jf_75140285 ? 2024-09-11 15:57 ? 次閱讀

背景

2024 年 1 月,京東正式啟動鴻蒙原生應用開發,基于 HarmonyOS NEXT 的全場景、原生智能、原生安全等優勢特性,為消費者打造更流暢、更智能、更安全的購物體驗。同年 6 月,京東鴻蒙原生應用嘗鮮版上架華為應用市場,計劃 9 月完成正式版的上架。

早在 2020 年,京東與華為就簽署了戰略合作協議,不斷加大技術投入探索 HarmonyOS 的創新特性。作為華為鴻蒙生態的首批頭部合作伙伴,在適配鴻蒙操作系統的過程中,京東與華為一直保持著密切的技術溝通與共創,雙方共同攻堅行業適配難點,并推動多端統一開發解決方案 Taro 在業界率先實現對鴻蒙 ArkUI 的原生開發支持。

本文將闡述京東鴻蒙原生應用在開發時所采用的技術方案、技術特點、性能表現以及未來的優化計劃。通過介紹選擇 Taro 作為京東鴻蒙原生應用的開發框架的原因,分析 Taro 在支持 Web 范式開發、快速遷移存量項目、渲染性能優化、高階功能支持以及混合開發模式等方面的優勢。

技術方案

京東在開發鴻蒙原生應用的過程中,需要考慮如何在有限的時間內高效完成項目,同時兼顧應用的性能與用戶體驗。為了達成這一目標,選擇合適的技術方案至關重要。

在技術選型方面,開發一個鴻蒙原生應用,一般會有兩種選擇:

使用原生 ArkTS 進行鴻蒙開發

使用跨端框架進行鴻蒙開發

使用原生 ArkTS 進行鴻蒙開發,面臨著開發周期冗長、維護多端多套應用代碼成本高昂的挑戰。在交付時間緊、任務重的情況下,京東果斷選擇跨端框架來開發鴻蒙原生應用,以期在有限的時間內高效完成項目。

作為在業界具備代表性的開源跨端框架之一,Taro 是由京東凹凸實驗室團隊開發的一款開放式跨端跨框架解決方案,它支持開發者使用一套代碼,實現在 H5、小程序以及鴻蒙等多個平臺上的運行。

通過 Taro 提供的編譯能力,開發者可以將整個 Taro 項目輕松地轉換為一個獨立的鴻蒙應用,無需額外的開發工作。

image.png

另外,Taro 也支持將項目里的部分頁面以模塊化的形式打包進原生的鴻蒙應用中,京東鴻蒙原生應用便是使用這種模式進行開發的。

京東鴻蒙原生應用的基礎基建能力如路由、定位、權限等能力由京東零售 mpass 團隊來提供,而原生頁面的渲染以及與基建能力的橋接則由 Taro 來負責,業務方只需要將寫好的 Taro 項目通過執行相應的命令,就可以將項目以模塊的形式一鍵打包到鴻蒙應用中,最終在應用內渲染出對應的原生頁面,整個過程簡單高效。

技術特點

Taro 作為一款開放式跨端跨框架解決方案,在支持開發者一套代碼多端運行的同時,也為開發鴻蒙原生應用提供了諸多便利。在權衡多方因素后,我們最終選擇了 Taro 作為開發鴻蒙原生應用的技術方案,總的來說,使用 Taro 來開發鴻蒙原生應用會有下面幾點優勢:

支持開發者使用 Web 范式來開發鴻蒙原生應用

與鴻蒙原生開發相比,使用 Taro 進行開發的最大優點在于 Taro 支持開發者使用前端 Web 范式來開發鴻蒙原生應用,基于這一特點,我們對大部分 CSS 能力進行了適配

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

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

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

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

支持 CSS 變量以及安全區域等預定義變量

在編譯流程上,我們采用了 Rust 編寫的 LightningCSS,極大地提升了 CSS 文件的編譯和解析速度

image.png

(圖片來自 LightningCSS 官網)

在運行時上,我們參考了 WebKit 瀏覽器內核的處理流程,對于 CSS 規則的匹配和標臟進行了架構上的升級,大幅提升了 CSS 應用和更新的性能。

image.png

支持存量 Taro 項目的快速遷移

將現有業務適配到一個全新的端側平臺,無疑需要投入大量的人力物力。而 Taro 框架的主要優勢,正是能夠有效解決這種跨端場景下的項目遷移難題。通過 Taro,我們可以以極低的成本,在保證高度還原和高性能的前提下,快速地將現有的 Taro 項目遷移到鴻蒙系統上。

image.png

渲染性能比肩原生開發

在 Taro 轉換鴻蒙原生頁面的技術實現上,我們摒棄了之前使用 ArkTS 原生組件遞歸渲染節點樹的方案將更多的運行時邏輯如組件、動效、測算和布局等邏輯下沉到了 C++,極大地提升了頁面的渲染性能。

另外,我們對于 Taro 項目中 CSS 樣式的處理架構進行了一次整體的重構和升級,并引入布局引擎Yoga,將頁面的測量和布局放在 Taro 側進行實現,基于這些優化,實現一套高效的渲染任務管線,使得 Taro 開發的鴻蒙頁面在性能上足以和鴻蒙 ArkTS 原生頁面比肩。

image.png

支持虛擬列表和節點復用等高階功能

長列表渲染是應用開發普遍會遇到的場景,在商品列表、訂單列表、消息列表等需要無限滾動的組件和頁面中廣泛存在,這些場景如果不進行特殊的處理,只是單純對數據進行渲染和更新,在數據量非常大的情況下,可能會引發嚴重的性能問題,導致視圖在一段時間內無法響應用戶操作。

在這個背景下,Taro 在鴻蒙端提供了長列表類型組件(WaterFlow & List),并對長列表類型組件進行了優化,提供了懶加載、預加載和節點復用等功能,有效地解決大數據量下的性能問題,提高應用的流暢度和用戶體驗。

image.png

(圖片來自 HarmonyOS 官網)

支持原生混合開發等多種開發模式

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

image.png

性能表現

京東鴻蒙原生應用性能數據

經過對 Taro 的屢次優化和打磨,使得京東鴻蒙原生應用取得了優秀的性能表現,最終首頁的渲染耗時 1062ms,相比于之前的 ArkTS 版本,性能提升了 23.9%;商詳的渲染耗時 560 ms,相比于之前的 ArkTS 版本,性能提升 74.2%

值得注意的是商詳頁性能提升顯著,經過分析發現商詳樓層眾多,CSS 樣式也復雜多樣,因此在 ArkTS 版本中,在 CSS 的解析和屬性應用階段占用了過多的時間,在 CAPI 版本進行了CSSOM 模塊的架構升級后,帶來了明顯的性能提升。

iShot_2024-09-03_22.57.29.png

基于 Taro 開發的頁面,在華為性能工廠的專業測試下,大部分都以優異的成績通過了性能驗收,充分證明了 Taro 在鴻蒙端的高性能表現。

總結和未來展望

Taro 目前已經成為一個全業務域的跨端開發解決方案,實現 Web 類(如小程序、Hybrid)和原生類(iOSAndroid、鴻蒙)的一體化開發,在高性能的鴻蒙適配方案的加持下,業務能快速拓展到新興的鴻蒙系統中去,可以極大滿足業務集約化開發的需求。

未來計劃

后續,Taro 還會持續在性能上進行優化,以更好地適配鴻蒙系統:

將開發者的 JS 業務代碼和應用框架層的 JS 代碼與主線程的 UI 渲染邏輯分離,另起一條 JavaScript 線程,執行這些 JS 代碼,避免上層業務邏輯堵塞主線程運行,防止頁面出現卡頓、丟幀的現象。

image.png

實現視圖節點拍平,將不影響布局的視圖節點進行整合,減少實際繪制上屏的頁面組件節點數量,提升頁面的渲染性能。

image.png

(圖片來自 React Native 官網)

實現原生性能級別的動態更新能力,支持開發者在不重新編譯和發布應用的情況下,動態更新應用中的頁面和功能。

總結

京東鴻蒙原生應用是 Taro 打響在鴻蒙端側適配的第一槍,證明了 Taro 方案適配鴻蒙原生應用的可行性。這標志著 Taro 在多端統一開發上的新突破,意味著 Taro 將為更多的企業和開發者提供優秀的跨端解決方案,使開發者能夠以更高的效率開發出適配鴻蒙系統的高性能應用。

審核編輯 黃宇

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

    關注

    2

    文章

    999

    瀏覽量

    48500
  • 鴻蒙
    +關注

    關注

    57

    文章

    2352

    瀏覽量

    42856
  • HarmonyOS
    +關注

    關注

    79

    文章

    1975

    瀏覽量

    30194
收藏 人收藏

    評論

    相關推薦

    鴻蒙千帆起】《開心消消樂》完成鴻蒙原生應用開發,創新多端聯動用戶體驗

    《開心消消樂》已經完成鴻蒙原生應用開發,樂元素成為率先完成鴻蒙原生應用開發的 20+游戲廠商之一。作為一款經典游戲,《開心消消樂》已經擁有 8 億玩家,加入
    發表于 01-03 10:22

    HarmonyOS SDK,助力開發者打造煥然一新的鴻蒙原生應用

    場景推出場景化控件,幫助開發者快速地打造更純凈、更智能、更精致、更易用的鴻蒙原生應用。 提供六大領域,能力豐富完備 HarmonyOS SDK 擁有近 30000 個 API,覆蓋了鴻蒙
    發表于 01-19 10:31

    騰訊突然宣布,微信鴻蒙版要來了!

    提供了一種高效的方式來處理大量的鍵值對數據,特別是在需要頻繁讀寫的場景下。 直白來說,想要讓 「微信」 成功運行在原生鴻蒙上邊,就得先把這個底層組件適配搞定才行,這可能是微信適配鴻蒙較慢的原因,現在,難
    發表于 04-30 19:34

    實錘!騰訊終于擁抱鴻蒙生態,微信鴻蒙原生版本即將上線

    大家都知道, 目前已知純血鴻蒙星河版next將于今年6月份開啟Bate版本的測試 ,也就是說原生鴻蒙系統快上線了。 而目前對于鴻蒙生態的發展
    發表于 04-30 21:14

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

    ## 配置鴻蒙環境 ### 下載安裝 DevEco ### 配置IDE 打開 `Prefreences`, `OpenHarmony SDK`, 勾選 `API Version 12
    發表于 11-06 16:42

    鴻蒙上使用Python進行物聯網編程

    炫耀!然而,這卻是非常重要的一步:在鴻蒙上用使用 Python 進行物聯網編程是可行的!!! 既然可行,加上 Python 語言天生的優勢(易于掌握,開發效率高),那么真的值得持續打造,將鴻蒙上的 Python 進行到底。 所以
    的頭像 發表于 09-28 09:55 ?4298次閱讀
    在<b class='flag-5'>鴻蒙上</b>使用Python進行物聯網編程

    鴻蒙上實現“數字華容道”小游戲

    本篇文章教大家如何在鴻蒙上實現“數字華容道”小游戲。
    的頭像 發表于 12-26 09:52 ?1251次閱讀

    京東與華為鴻蒙合作 京東啟動鴻蒙原生應用開發

     1月10日,華為和京東宣布正式合作,共同推動鴻蒙原生應用的開發,進一步完善鴻蒙生態系統。
    的頭像 發表于 01-11 16:22 ?986次閱讀

    京東正式啟動鴻蒙原生應用開發

    華為與京東于近日宣布達成一項重要合作,正式啟動鴻蒙原生應用開發。這一合作旨在利用HarmonyOS NEXT的獨特優勢,為消費者提供更出色的購物體驗。
    的頭像 發表于 01-18 15:02 ?786次閱讀

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

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

    京東攜手華為應用市場,正式上架鴻蒙原生應用

    6月18日,京東集團官方發布重磅聲明,稱已經圓滿完成了鴻蒙操作系統原生應用的核心版本開發工作,并且準備在近期登錄華為應用商店面向廣大用戶開放下載服務。   據悉,本次研發推出的京東
    的頭像 發表于 06-19 15:32 ?631次閱讀

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

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

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

    作者:京東零售 馬銀濤 ? 基于 Taro 打造京東鴻蒙 APP 已跟隨鴻蒙 Next 系統公
    的頭像 發表于 10-31 10:54 ?164次閱讀
    <b class='flag-5'>Taro</b> <b class='flag-5'>鴻蒙</b>技術內幕系列(二):如何讓 W3C 標準的 CSS跑在<b class='flag-5'>鴻蒙上</b>

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

    作者:京東零售 朱天健 基于 Taro 打造京東鴻蒙 APP 已跟隨鴻蒙 Next 系統公測,
    的頭像 發表于 11-27 11:42 ?201次閱讀
    <b class='flag-5'>Taro</b> <b class='flag-5'>鴻蒙</b>技術內幕系列(三) - 多語言場景下的通用事件系統設計

    鴻蒙原生開源庫ViewPool在OpenHarmony社區正式上線

    近日,由伙伴參與共建的鴻蒙原生開源庫“ViewPool”在OpenHarmony社區正式上線。這個開發庫是基于OpenHarmony技術孵化的成果,充分發揮了平臺的技術特性,同時融入了伙伴在應用開發
    的頭像 發表于 12-20 14:44 ?217次閱讀
    主站蜘蛛池模板: 色播激情五月| 国产精品综合色区在线观看| 国产精品虐乳在线播放| 日韩一级特黄毛片在线看| 日韩视频高清| 在线免费看片| 欧美高清另类| 色综合天天色综合| china3p单男精品自拍| 欧美午夜免费观看福利片| 色涩网站在线观看| 李老汉的性生生活2| 欧美一级黄色录相| www.99色| 37pao强力打造免费高速高清| 四虎精品免费国产成人| 4tube高清性欧美| heyzo在线播放4k岛国| 中国videos偷窥| 日韩免费三级| 天天做.天天爱.天天综合网| 亚洲一区中文字幕在线| 拍拍拍成人免费高清视频| 天天摸天天碰成人免费视频| 免费精品99久久国产综合精品 | 日韩美女奶水喂男人在线观看 | 日本一道dvd在线中文字幕| 国模伊人| 亚洲成a人片77777kkk| 色妇网| 天天夜天天干| 淫www| 在线天堂中文在线网| 亚洲 欧美 91| 黄色视屏日本| 欧美极品一区| 噜色| 日本特黄特色视频| 亚洲影视大全| 亚洲第一视频| 1区2区|