chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

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

京東云 ? 來源:京東零售 朱天健 ? 作者:京東零售 朱天健 ? 2024-11-27 11:42 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

作者:京東零售 朱天健

基于 Taro 打造的京東鴻蒙 APP 已跟隨鴻蒙 Next 系統(tǒng)公測(cè),本系列文章將深入解析 Taro 如何實(shí)現(xiàn)使用 React 開發(fā)高性能鴻蒙應(yīng)用的技術(shù)內(nèi)幕

背景

在鴻蒙生態(tài)系統(tǒng)中,雖然原生應(yīng)用通常基于 ArkTS 實(shí)現(xiàn),但在實(shí)際研發(fā)過程中發(fā)現(xiàn),使用 C++ 可以顯著提升應(yīng)用框架和業(yè)務(wù)的性能表現(xiàn)。隨著鴻蒙系統(tǒng)的不斷迭代升級(jí),不同語言環(huán)境間的協(xié)作已成為不可或缺的開發(fā)范式,共同構(gòu)建了更豐富的研發(fā)生態(tài)。

Taro 通過接入鴻蒙端的 C-API 相關(guān)能力,將組件、樣式布局等運(yùn)行時(shí)邏輯下沉到 C++ 層,從而極大地提升了頁面的渲染性能。

在這樣的背景下,構(gòu)建一套在 C++、ArkTS 等不同語言環(huán)境之間高效通信的事件系統(tǒng),成為了一個(gè)極具價(jià)值,對(duì)于 Taro 來說也是必修的課題。

多語言環(huán)境的事件處理機(jī)制

Harmony 端的適配過程中,事件系統(tǒng)扮演著雙重角色:不僅驅(qū)動(dòng)應(yīng)用、頁面和各模塊組件的生命周期,還因?yàn)?ArkTS 和業(yè)務(wù)代碼(JS)之間存在人為設(shè)定的界限,需要事件作為橋梁,以便 JS 能夠調(diào)用 ArkTS 的原生能力。

跨語言環(huán)境事件驅(qū)動(dòng)架構(gòu)的設(shè)計(jì)考量

在設(shè)計(jì)跨語言環(huán)境的事件驅(qū)動(dòng)架構(gòu)時(shí),需要同時(shí)考慮 ArkTS、JS 和 C++ 等多個(gè)語言環(huán)境的限制和運(yùn)行時(shí)差異。如何實(shí)現(xiàn)事件在這些環(huán)境之間的有序傳遞,以驅(qū)動(dòng)頁面和組件的生命周期,是事件系統(tǒng)設(shè)計(jì)的重要考量。

wKgZPGdGlSOAPZcrAAGmqc6Gcg8659.png

通過 C++ 實(shí)現(xiàn)事件的底層邏輯,構(gòu)建一個(gè)高效的事件管理系統(tǒng),可以有效避免冗余接口的設(shè)計(jì)。同時(shí),與鴻蒙的 C-API 支持的事件系統(tǒng)對(duì)接,將各類事件分發(fā)到不同語言環(huán)境,確??缯Z言環(huán)境的事件分發(fā)與處理的有序性、高效性。

wKgZO2dGlSSAf2CAAAHX5DoMO1s102.png

回顧 Taro 開始適配鴻蒙至今,事件系統(tǒng)也隨之經(jīng)歷了從簡單到完善的演進(jìn)歷程。從最初在 ArkTS 方案中的基礎(chǔ)實(shí)現(xiàn),到隨著 Taro for Harmony 方案迭代發(fā)展,事件系統(tǒng)的設(shè)計(jì)也面臨 ArkTS 帶來的一些限制。

在 ArkTS 語言環(huán)境中事件架構(gòu)的局限性

基于 ArkTS 語言環(huán)境實(shí)現(xiàn)的事件架構(gòu),在性能方面存在較大局限性。特別是在事件冒泡過程中,性能較差的語法,和回調(diào)邏輯可能會(huì)導(dǎo)致性能嚴(yán)重劣化,甚至阻塞主線程。這不僅會(huì)影響應(yīng)用的響應(yīng)速度,更有甚者可能對(duì)整體用戶體驗(yàn)產(chǎn)生負(fù)面影響。

wKgZPGdGlSSAHGGSAADA2t22D_w421.png

為了解決這些問題,提升性能以保證用戶體驗(yàn)成為關(guān)鍵目標(biāo)。通過將事件處理邏輯下沉到 C++ 層,并置于后臺(tái)線程執(zhí)行等優(yōu)化手段。能夠有效提高代碼執(zhí)行效率,同時(shí)避免邏輯阻塞主線程導(dǎo)致的延遲響應(yīng),以提升應(yīng)用的流暢性,提供更佳的用戶體驗(yàn)。

wKgZO2dGlSWAFW8dAADnlqBBExY053.png

構(gòu)建多語言環(huán)境下的事件系統(tǒng)

在構(gòu)建多語言環(huán)境下的事件系統(tǒng)時(shí),首要考慮各種類型的事件,比如:鴻蒙提供的組件通用事件、手勢(shì)等。事件系統(tǒng)需要有效地管理這些不同的事件來源,并根據(jù)框架和用戶的監(jiān)聽行為有序進(jìn)行事件的分發(fā)。

wKgZPGdGlSWAV9nbAADVPJmdvnw220.png

在這些事件類型中,大致可以分為普通事件和節(jié)點(diǎn)事件兩類。前者涵蓋系統(tǒng)層面和應(yīng)用、組件等生命周期的變化,通常由系統(tǒng)或應(yīng)用狀態(tài)的改變觸發(fā),主要由事件中心(eventCenter)來處理;節(jié)點(diǎn)事件則與 DOM Tree 緊密相關(guān),這些事件通常需要快速響應(yīng),以確保用戶界面的流暢性和交互的即時(shí)性。

事件中心(eventCenter)的實(shí)現(xiàn)

作為 Taro 運(yùn)行時(shí)中的基礎(chǔ)模塊,事件中心專注于處理系統(tǒng)事件和生命周期。它允許框架和應(yīng)用開發(fā)者在后臺(tái)線程注冊(cè)事件隊(duì)列,并異步分發(fā)事件,從而有效減輕主線程的負(fù)擔(dān)。事件中心能夠快速響應(yīng)各種事件,同時(shí)具備健壯的錯(cuò)誤處理機(jī)制,幫助開發(fā)者快速定位和解決事件回調(diào)中的問題,從而提升開發(fā)效率和系統(tǒng)穩(wěn)定性。

事件監(jiān)聽與分發(fā)

開發(fā)者可以在 C++ 和 ArkTS 等多種語言環(huán)境中創(chuàng)建事件監(jiān)聽器,并將相應(yīng)的回調(diào)函數(shù)添加到事件隊(duì)列中。這一機(jī)制允許開發(fā)者在不同的編程語言中靈活地定義和處理事件響應(yīng)邏輯。

當(dāng)事件觸發(fā)時(shí),會(huì)根據(jù)不同語言環(huán)境的運(yùn)行時(shí)差異,將事件參數(shù)轉(zhuǎn)換為對(duì)應(yīng)的格式。這種參數(shù)轉(zhuǎn)換確保了各語言環(huán)境能夠正確理解并處理事件及包含的數(shù)據(jù),無論是簡單的數(shù)據(jù)類型還是復(fù)雜的對(duì)象結(jié)構(gòu),都能在不同語言之間無縫傳遞。

wKgZO2dGlSWAX-UNAAC4KKWUoWs688.png

事件隊(duì)列會(huì)根據(jù)監(jiān)聽器的類型,按照預(yù)定義的順序,將事件分發(fā)到相應(yīng)的語言環(huán)境中。這樣一來,每個(gè)監(jiān)聽器都能在其所屬的環(huán)境中高效地執(zhí)行對(duì)應(yīng)的回調(diào)函數(shù)。通過這種方式,不僅可以實(shí)現(xiàn)了跨語言的事件處理,優(yōu)化事件的分發(fā)效率,并確保應(yīng)用在響應(yīng)用戶交互時(shí)保持高性能和高穩(wěn)定性。

需要注意的是,受限于底層限制,在 ArkTS 環(huán)境中注冊(cè)的事件需要回到主線程執(zhí)行,同時(shí)在鴻蒙端不支持 Symbol 類型的事件。

節(jié)點(diǎn)事件處理(domEvent)

在 HTML 中,節(jié)點(diǎn)事件處理流程會(huì)如下圖所示,事件從根節(jié)點(diǎn)開始向下傳播至目標(biāo)節(jié)點(diǎn),觸發(fā)后再從目標(biāo)節(jié)點(diǎn)順著節(jié)點(diǎn)樹向上冒泡。在鴻蒙端實(shí)現(xiàn)中,Taro 基于這一事件傳播流程,為開發(fā)者提供一致的事件處理機(jī)制。

事件類型

在 Taro 框架中,節(jié)點(diǎn)主要處理三種類型的事件:鴻蒙事件、鴻蒙手勢(shì)事件和自定義事件。這些事件都是從TaroElement上進(jìn)行監(jiān)聽和觸發(fā)的。根據(jù)事件的類型不同,節(jié)點(diǎn)會(huì)從相應(yīng)的事件源設(shè)置Receiver(事件接收器)來進(jìn)行監(jiān)聽并處理回調(diào)邏輯。

wKgZPGdGlSaAPAyhAAFa9l80Ruk679.png

鴻蒙事件和鴻蒙手勢(shì)事件分別通過RenderNode注冊(cè)到Receiver,確保事件能夠正確地傳遞和觸發(fā)。而自定義事件則根據(jù)節(jié)點(diǎn)實(shí)現(xiàn)或用戶自行觸發(fā),以滿足各種不同類型的交互響應(yīng)。

事件傳播

當(dāng)TaroElement上的事件被觸發(fā)后,事件會(huì)沿著節(jié)點(diǎn)樹向上傳播。每個(gè)節(jié)點(diǎn)依次接收到事件,并執(zhí)行相應(yīng)的回調(diào)。執(zhí)行完回調(diào)后,會(huì)檢查開發(fā)者是否阻止冒泡,以決定是否繼續(xù)向上傳播。事件從目標(biāo)節(jié)點(diǎn)開始,逐級(jí)往上直到根節(jié)點(diǎn)或者冒泡被阻止。

wKgZO2dGlSaAZxgwAABZX9izNiM649.png


這允許開發(fā)者在事件傳播過程中,通過任意節(jié)點(diǎn)處理或攔截事件來調(diào)整業(yè)務(wù)邏輯實(shí)現(xiàn),以更靈活的方式在特定節(jié)點(diǎn)上執(zhí)行邏輯,或通過阻止冒泡避免對(duì)上層節(jié)點(diǎn)的影響。這樣的設(shè)計(jì)對(duì)于前端開發(fā)者來說,更加熟悉、直觀。

鴻蒙系統(tǒng)的底層節(jié)點(diǎn)事件也有自己的傳播邏輯,但由于其機(jī)制與 ArkNode 節(jié)點(diǎn)樹差異,為避免其事件干擾,需要阻止其冒泡行為并接管其傳播流程,以確保事件傳播與節(jié)點(diǎn)樹正確關(guān)聯(lián)。

事件回調(diào)

由于節(jié)點(diǎn)事件也需要回調(diào) JS 環(huán)境中執(zhí)行,根據(jù)事件類型的不同,按照 Web 標(biāo)準(zhǔn)將相應(yīng)的節(jié)點(diǎn)、值和方法如 target、stopPropagation、value 等等掛載到事件對(duì)象上。通過執(zhí)行當(dāng)前回調(diào)的序列化方法,確保事件在不同語言環(huán)境傳遞時(shí),可以保證其回調(diào)對(duì)象能力一致、參數(shù)完整。

在 C++ 中,許多組件依賴于事件機(jī)制來實(shí)現(xiàn)功能。例如,通過鴻蒙事件更新組件屬性,還有各個(gè)組件節(jié)點(diǎn)間的事件傳遞等。這些組件利用事件機(jī)制來確保數(shù)據(jù)變化能夠及時(shí)反映,并且用戶交互能夠順利傳遞到系統(tǒng)的各個(gè)部分。

總結(jié)與展望

在多語言環(huán)境中,確保事件在不同語言環(huán)境傳遞時(shí)的一致性尤為重要,各個(gè)模塊以及應(yīng)用內(nèi)不同頁面或組件通過事件解耦驅(qū)動(dòng)來提升可維護(hù)性。當(dāng)前的解決方案有效提升了系統(tǒng)的響應(yīng)速度和模塊間的協(xié)作能力。

當(dāng)下方案實(shí)現(xiàn)中仍然存在一些問題,比如早期通過事件繞過 ArkTS 與 JS 之間相互調(diào)用限制等場(chǎng)景,可以通過 TurboModule 來提供更加直接的調(diào)用方案。

未來,在 Taro for Harmony 場(chǎng)景下,各語言模塊的協(xié)同將進(jìn)一步增強(qiáng)。基于事件系統(tǒng)的設(shè)計(jì),可以有效地解耦模塊間邏輯,實(shí)現(xiàn)更靈活的組合。

審核編輯 黃宇

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

    關(guān)注

    0

    文章

    173

    瀏覽量

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

    關(guān)注

    60

    文章

    2958

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    京東多語言質(zhì)量解決方案

    一、業(yè)界多語言面臨的通用挑戰(zhàn)是什么 做這個(gè)事之前,我們先看看業(yè)界做了什么。 ??阿里巴巴全球化測(cè)試技術(shù)介紹? ??螞蟻全球化無線端質(zhì)量解決方案? ??談?wù)?b class='flag-5'>多語言測(cè)試? 總結(jié)下來,需要面
    的頭像 發(fā)表于 01-13 16:18 ?897次閱讀
    京東<b class='flag-5'>多語言</b>質(zhì)量解決方案

    場(chǎng)景多語言同傳,時(shí)空壺X1定義專業(yè)同傳終端新標(biāo)準(zhǔn)

    技術(shù)創(chuàng)新回應(yīng)專業(yè)場(chǎng)景需求,時(shí)空壺X1獨(dú)立AI同傳翻譯終端憑借在獨(dú)立運(yùn)算、多人同傳、演講播報(bào)等維度的核心優(yōu)勢(shì),打破傳統(tǒng)同傳設(shè)備“專業(yè)級(jí)昂貴、消費(fèi)級(jí)局限”的市場(chǎng)格局,為跨國商務(wù)、學(xué)術(shù)交流、國際活動(dòng)等
    的頭像 發(fā)表于 01-05 12:03 ?347次閱讀
    全<b class='flag-5'>場(chǎng)景</b><b class='flag-5'>多語言</b>同傳,時(shí)空壺X1定義專業(yè)同傳終端新標(biāo)準(zhǔn)

    開源鴻蒙技術(shù)大會(huì)2025丨編譯器與編程語言分論壇:語言驅(qū)動(dòng)系統(tǒng)創(chuàng)新,編譯賦能生態(tài)繁榮

    在萬物智聯(lián)的時(shí)代背景,操作系統(tǒng)底層能力的構(gòu)建離不開編程語言與編譯器的關(guān)鍵支撐。作為開源鴻蒙生態(tài)的核心技術(shù),
    的頭像 發(fā)表于 11-20 17:24 ?890次閱讀
    開源<b class='flag-5'>鴻蒙</b><b class='flag-5'>技術(shù)</b>大會(huì)2025丨編譯器與編程<b class='flag-5'>語言</b>分論壇:<b class='flag-5'>語言</b>驅(qū)動(dòng)<b class='flag-5'>系統(tǒng)</b>創(chuàng)新,編譯賦能生態(tài)繁榮

    【置頂公告】視美泰開源鴻蒙系列產(chǎn)品業(yè)務(wù)咨詢與商務(wù)合作通道正式開啟!

    設(shè)計(jì)。 生態(tài)解決方案整合智慧政務(wù)、智慧醫(yī)療、智慧園區(qū)、智慧教育、智慧安平、工業(yè)物聯(lián)網(wǎng)等領(lǐng)域鴻蒙系統(tǒng)集成與場(chǎng)景落地。 技術(shù)授權(quán)與聯(lián)合創(chuàng)新OpenHarmony生態(tài)兼容性認(rèn)證、
    發(fā)表于 10-20 16:23

    阿里巴巴國際站關(guān)鍵字搜索 API 實(shí)戰(zhàn):3 步搞定多語言適配 + 限流破局,詢盤量提升 40%

    跨境電商API開發(fā)常陷合規(guī)、多語言、限流等坑。本文詳解從國際合規(guī)(GDPR/CCPA)到參數(shù)優(yōu)化、數(shù)據(jù)結(jié)構(gòu)化及區(qū)域化搜索的全鏈路方案,附Python代碼模板與緩存重試架構(gòu),助力提升調(diào)用成功率至99%+,精準(zhǔn)詢盤增長42%。
    的頭像 發(fā)表于 10-20 14:44 ?1653次閱讀

    速賣通全球運(yùn)營利器:商品詳情接口多語言 + 合規(guī) + 物流適配技術(shù)全解析

    速賣通全球化適配是跨境成功關(guān)鍵!本文詳解2025最新接口方案,涵蓋多語言智能翻譯、合規(guī)自動(dòng)校驗(yàn)、物流精準(zhǔn)推薦與性能優(yōu)化四大模塊,助力商家提升轉(zhuǎn)化率30%+,降低風(fēng)險(xiǎn),提效80%。附實(shí)操代碼與新手步走策略,適合所有想出海的賣家。
    的頭像 發(fā)表于 10-16 09:30 ?513次閱讀
    速賣通全球運(yùn)營利器:商品詳情接口<b class='flag-5'>多語言</b> + 合規(guī) + 物流適配<b class='flag-5'>技術(shù)</b>全解析

    貨拉拉開源兩款方庫,為鴻蒙應(yīng)用高效開發(fā)貢獻(xiàn)力量

    自HarmonyOS 5發(fā)布以來,鴻蒙應(yīng)用開發(fā)加速推進(jìn)。通過共建的方式,華為與眾多生態(tài)伙伴一道,針對(duì)鴻蒙的底座技術(shù)、通用能力及各垂直行業(yè)應(yīng)用場(chǎng)景
    的頭像 發(fā)表于 08-26 14:02 ?547次閱讀
    貨拉拉開源兩款<b class='flag-5'>三</b>方庫,為<b class='flag-5'>鴻蒙</b>應(yīng)用高效開發(fā)貢獻(xiàn)力量

    Taro on HarmonyOS 技術(shù)架構(gòu)深度解析

    2025 年 6 月,在華為開發(fā)者大會(huì) 2025 開發(fā)者場(chǎng)景技術(shù)共建分論壇,本文作者進(jìn)行了《京東 Taro 框架鴻蒙版本正式開源 助力鴻蒙
    的頭像 發(fā)表于 08-04 16:10 ?761次閱讀
    <b class='flag-5'>Taro</b> on HarmonyOS <b class='flag-5'>技術(shù)</b>架構(gòu)深度解析

    EASY EAl Orin Nano(RK3576) whisper語音識(shí)別訓(xùn)練部署教程

    1Whisper簡介Whisper是OpenAI開源的,識(shí)別語音識(shí)別能力已達(dá)到人類水準(zhǔn)自動(dòng)語音識(shí)別系統(tǒng)。Whisper作為一個(gè)通用的語音識(shí)別模型,它使用了大量的多語言和多任務(wù)的監(jiān)督數(shù)據(jù)來訓(xùn)練,能夠在
    的頭像 發(fā)表于 07-25 15:21 ?822次閱讀
    EASY EAl Orin Nano(RK3576) whisper語音識(shí)別訓(xùn)練部署教程

    開源系統(tǒng)適配:聚徽分享國產(chǎn)工控平板在 Linux / 鴻蒙系統(tǒng)技術(shù)優(yōu)化

    工控平板進(jìn)行技術(shù)優(yōu)化,實(shí)現(xiàn)與 Linux、鴻蒙系統(tǒng)的高效適配,成為行業(yè)關(guān)注的焦點(diǎn)。 一、Linux 系統(tǒng)國產(chǎn)工控平板的
    的頭像 發(fā)表于 06-13 16:29 ?986次閱讀

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

    近日,京東正式開源了Taro on HarmonyOS C-API 版本,為鴻蒙應(yīng)用跨端開發(fā)提供高性能框架。這次版本的發(fā)布,帶來了更豐富的樣式適配、更高效的渲染性能、更全面的組件支持,讓開發(fā)者以Web范式的方式來開發(fā)出媲美鴻蒙
    的頭像 發(fā)表于 06-09 09:19 ?1116次閱讀
    京東開源<b class='flag-5'>Taro</b> on HarmonyOS C-API版本

    開源鴻蒙開發(fā)新體驗(yàn),開鴻Bot系列今日開啟預(yù)售!

    技術(shù)支持與配套文檔資源支持、打造開源鴻蒙開發(fā)者的“標(biāo)準(zhǔn)配置”等,這將進(jìn)一步降低開發(fā)者參與開源鴻蒙生態(tài)建設(shè)的門檻。 開鴻Bot系列的推出,開啟了開源
    發(fā)表于 05-16 14:13

    快手上線鴻蒙應(yīng)用高性能解決方案:數(shù)據(jù)反序列化性能提升90%

    、通用能力、垂類行業(yè)等場(chǎng)景推出系列開發(fā)者場(chǎng)景化解決方案,不斷提升鴻蒙應(yīng)用的創(chuàng)新體驗(yàn)和開發(fā)效率,與廣大開發(fā)者共建繁榮的
    發(fā)表于 05-15 10:01

    語言康復(fù)行業(yè)首家!陽光語言正式接入DeepSeek

    “新”與“老”的結(jié)合,將融合和迸發(fā)更多可能性,為更多語言障礙者提供更加科學(xué)、智能、精準(zhǔn)的服務(wù)。 智能問答 一觸即達(dá) 在陪伴孩子成長的過程中,家長會(huì)面臨方方面面的問題,發(fā)音不準(zhǔn)、口吃、語言發(fā)育遲緩等等。面對(duì)這些語言發(fā)育問題,家長該
    的頭像 發(fā)表于 03-06 14:14 ?596次閱讀
    <b class='flag-5'>語言</b>康復(fù)行業(yè)首家!陽光<b class='flag-5'>語言</b>正式接入DeepSeek

    鴻蒙文件傳輸方庫上線開源鴻蒙社區(qū) 十行代碼實(shí)現(xiàn)大文件高速傳輸

    “super_fast_file_trans”,下載使用。未來,華為也將持續(xù)創(chuàng)新,面向底座技術(shù)、通用能力、垂類行業(yè)等場(chǎng)景推出系列開發(fā)者場(chǎng)景
    發(fā)表于 03-06 10:29