国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

3天內不再提示

一文總結 ACE 代碼框架

電子發燒友開源社區 ? 來源:未知 ? 2023-01-11 03:30 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群


田可輝

鴻湖萬聯高級技術專家

鴻湖萬聯產品推薦官

一、前言

ACE_Engine框架是OpenAtom OpenHarmony(簡稱“OpenHarmony”)的UI開發框架,為開發者提供在進行應用UI開發時所必需的各種組件,以及定義這些組件的屬性、樣式、事件及方法,通過這些組件可以方便進行OpenHarmony上UI應用的開發。

ACE_Engine提供的組件分為兩種類型,即類Web開發范式類型和聲明式開發范式類型。其中類Web開發范式中定義一個頁面需要三個文件,html,css和js文件。html文件負責頁面布局,css文件負責定義組件的樣式,js文件負責業務邏輯實現。而聲明式范式僅需要1個ets文件,頁面布局和組件的樣式以及業務邏輯實現都在此文件中。如圖:


二、ACE_Engine框架模塊劃分

對于類Web開發范式組件,根據組件從前端到后端的過程,可以將整個框架劃分為JsFrameWork、DomNode、ComPonent、RenderNode四個模塊。其作用分別如下:

?JsFrameWork:負責解析前端html和css文件,創建出DomNode樹。該樹的結構和前端頁面是一一對應的。

?DomNode:負責將Dom樹轉換為Component樹。注意一個Dom節點轉換過后的Component節點實際上并不是一個單獨的節點,而是一棵以rootComponent為根節點的組件樹。該樹中逐層包裹了對應的功能組件,最內部才是真正的主節點(這樣的作用是功能解耦合,將某一特定的功能放到對應的組件中去)。如BoxComponet負責組件的邊框繪制,DisplayComponent負責組件透明度繪制,TouchComponent負責組件觸摸時間的處理等,一個詳細過程見DOMNode::GenerateComponentNode函數。

?ComPonent:負責將Component樹中所有繼承自RenderComponent的節點(可繪制節點)創建對應的RendNode節點,生成對應的RendNode樹。見RenderComponent ::CreateRenderNode虛函數。

?RenderNode:RenderNode即可繪制的節點,負責組件的最終布局和繪制。其中布局函數為PerformLayout虛函數,由每個組件對應的實現類Render***類來實現。繪制函數為Paint虛函數,由每個組件對應的子類FlutterRender***類來實現。

對于聲明式開發范式組件,根據組件從前端到后端的過程,可以將整個框架劃分為EtsLoader、JsView、ComPonent、RenderNode四個模塊。其作用分別如下:

?EtsLoader:負責解析ets頁面,根據組件的tag標簽創建對應的JsView對象,生成jsView樹。
?JsView:負責處理組件的屬性,方法和事件。并通過Create函數創建對應的Component樹。
?ComPonent:同Web開發范式組件中的Component
?RenderNode:同Web開發范式組件中的RenderNode

各模塊創建示意圖如下圖所示:


各模塊間的調用關系及主要函數如下:


三、組件的屬性和樣式的傳遞過程

1.組件的屬性和樣式是保存在前端頁面的,通過JsframeWork解析頁面,并調用JsEngine的CreateDomNode接口創建Dom節點的同時傳遞新節點屬性和樣式。如果頁面中屬性樣式發生變化,則單獨調用SetAttr或SetStyle來更新屬性和樣式。

2.DomNode收到屬性和樣式之后,會將通用屬性保存在Declaration類中,將組件特有的屬性通過SetSpecialAttr和SetSpecialStyle函數保存在自身。

3.DomNode調用對應Component類的Set***函數,將所有屬性和樣式設置到Component中。

4.RenderNode創建后,會調用其Update函數。該函數內調用對應Component的Get***函數,來接收組件的所有屬性和樣式。

5.在PipeLine中會遍歷每個RenderNode進行布局和繪制,此時,就依據RenderNode中接收的屬性和樣式,進行布局并繪制。


四、總結

ACE_Engine框架整體代碼較復雜,涉及的類別也比較多。本文介紹了一個ACE組件從前端的頁面描述,到中間層三棵樹的創建和屬性傳遞,以及最終進行UI布局和繪制的整個過程。該過程總結一下就是:JS頁面 —> Dom樹 —> Component樹 —> Render樹,最后繪制Render樹。大家只要理解這個基本過程,再結合代碼關注重點流程,就能夠對ACE_Engine框架的代碼有整體的理解。在此基礎上可以進行ACE組件的增強功能開發,包括新增一個ACE組件等。

參考

新增一個類Web范式組件開發指南

https://gitee.com/yan-shuifeng/arkui_docs/blob/master/wiki/Ace1.0前端新增組件開發指南%EF%BC%9A以新增MyCircle組件為例_ver1.0.md

新增一個聲明式范式組件開發指南

https://gitee.com/yan-shuifeng/arkui_docs/blob/master/wiki/Ace2.0前端新增組件開發指南%EF%BC%9A以新增MyCircle組件為例_ver1.0.md



更多熱點文章閱讀
  • DevEco Studio新特性分享-跨語言調試,讓調試更便捷高效
  • 基于 OpenHarmony 的智聯北斗海防系統
  • 玩轉OpenHarmony智能家居:如何實現樹莓派“碰一碰”設備控制
  • 玩轉OpenHarmony社交場景:即時通訊平臺
  • HarmonyOS多媒體框架介紹


提示:本文由電子發燒友社區發布,轉載請注明以上來源。如需社區合作及入群交流,請添加微信EEFans0806,或者發郵箱liuyong@huaqiu.com。


原文標題:一文總結 ACE 代碼框架

文章出處:【微信公眾號:電子發燒友開源社區】歡迎添加關注!文章轉載請注明出處。

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

    關注

    34

    文章

    591

    瀏覽量

    34135
  • 開源社區
    +關注

    關注

    1

    文章

    95

    瀏覽量

    798

原文標題:一文總結 ACE 代碼框架

文章出處:【微信號:HarmonyOS_Community,微信公眾號:電子發燒友開源社區】歡迎添加關注!文章轉載請注明出處。

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    RK平臺聲卡基礎知識總結(基于ALSA框架

    RK 平臺聲卡基于ALSA(Advanced Linux Sound Architecture)框架構建,核心目標是實現音頻數據的“采集 - 傳輸 - 處理 - 輸出” 全鏈路管理。其本質是通過
    的頭像 發表于 02-06 16:58 ?3187次閱讀
    RK平臺聲卡基礎知識<b class='flag-5'>總結</b>(基于ALSA<b class='flag-5'>框架</b>)

    LuatOS框架的使用(上)

    在資源受限的物聯網終端設備中,如何實現快速開發與穩定運行是關鍵挑戰。LuatOS框架通過將Lua語言與底層硬件抽象層深度融合,提供了套簡潔高效的開發范式。本文將圍繞LuatOS框架的使用展開,從
    的頭像 發表于 01-27 19:38 ?158次閱讀
    LuatOS<b class='flag-5'>框架</b>的使用(上)

    搞清 BLE 藍牙 UUID

    帶你搞清楚藍牙 UUID ...... 矜辰所致
    的頭像 發表于 12-18 11:23 ?4264次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>文</b>搞清 BLE 藍牙 UUID

    Coherent高意公司全新ACE摻銩光纖激光器及手術用光纖組合的強大優勢

    強大的組合旨在重新定義眾多醫療手段,特別是在泌尿外科領域,能提供無與倫比的精度、效率和患者益處。 ACE FL摻銩光纖激光器為何是顛覆性創新? ACE FL系列代表了新代TFL平臺,專為滿足各種治療性醫療應用的嚴苛要求而設計。
    的頭像 發表于 12-09 06:38 ?403次閱讀
    Coherent高意公司全新<b class='flag-5'>ACE</b>摻銩光纖激光器及手術用光纖組合的強大優勢

    NVIDIA ACE現已支持開源Qwen3-8B小語言模型

    為助力打造實時、動態的 NPC 游戲角色,NVIDIA ACE 現已支持開源 Qwen3-8B 小語言模型(SLM),可實現 PC 游戲中的本地部署。
    的頭像 發表于 10-29 16:59 ?1229次閱讀

    請問STM32如何移植Audio框架

    最近在學習音頻解碼,想用下Audio框架。 1、這個該如何移植到自己創建的BSP并對接到device框架中?看了官方移植文檔沒有對沒有對該部分的描述。 2、我只想實現個簡單的播放功
    發表于 09-25 07:17

    知乎開源“智能預渲染框架” 幾行代碼實現鴻蒙應用頁面“秒開”

    ,交互延遲等核心痛點,通過智能預測用戶瀏覽目標進行提前渲染,只需幾行代碼即可顯著提升復雜頁面的加載性能,實現“頁面秒開”的高效體驗,為鴻蒙開發者帶來開發效率和用戶體驗的雙重飛躍。 隨著鴻蒙生態快速發展,應用開發者難免會遇到些性能問題
    的頭像 發表于 08-29 14:32 ?628次閱讀
    知乎開源“智能預渲染<b class='flag-5'>框架</b>” 幾行<b class='flag-5'>代碼</b>實現鴻蒙應用頁面“秒開”

    BitsButton嵌入式按鍵處理框架

    參考鏈接)的思想基礎上,開發的此按鍵檢測框架,感謝幫助思考我的小伙伴shawnfeng0以及正在使用此模塊的小伙伴,歡迎起開發改進! ? 參與開發 歡迎貢獻代碼!當前路線圖 基礎按鍵檢測功能 組合按鍵
    發表于 08-02 11:24

    兆芯率先展開心系列模型深度技術合作

    6月30日,百度正式開源心大模型4.5系列等10款模型,并實現預訓練權重和推理代碼的完全開源,兆芯率先與心系列模型展開深度技術合作。 兆芯高性能處理器與心大模型在開源首日展開適配
    的頭像 發表于 07-01 10:49 ?971次閱讀

    ArkUI-X框架LogInterface使用指南

    ArkUI-X框架支持日志攔截能力,Android側提供原生接口,用于注入LogInterface接口,框架日志及ts日志通過該接口輸出,本文的核心內容是介紹如何在Android平臺上有效利用
    發表于 06-15 23:20

    Ace 5至尊版搭載聯發科天璣9400+處理器

    想要成為掌管游戲的“神”?當然要性能、觸控、網絡都在線!新發布的Ace 5 至尊版搭載游戲全鏈路芯片級硬件解決方案「電競三芯」,集天璣 9400+ 旗艦芯、靈犀觸控芯、電競 Wi-Fi 芯片 G1 于體,打造超流暢的至尊
    的頭像 發表于 06-03 17:28 ?1655次閱讀

    電競三芯 游戲至尊 Ace 5 至尊系列售價 2499 元起

    2025年5月27日,加正式推出Ace5至尊系列,包含Ace5至尊版與
    的頭像 發表于 05-27 16:55 ?2728次閱讀
    電競三芯 游戲至尊 <b class='flag-5'>一</b>加 <b class='flag-5'>Ace</b> 5 至尊系列售價 2499 元起

    電競三芯,游戲至尊 Ace 5 至尊系列正式定檔5月27日

    5月20日,加官方宣布Ace5至尊系列正式定檔5月27日。Ace5至尊系列搭載天璣9400系列旗艦性能芯的同時,集靈犀觸控芯、電競
    的頭像 發表于 05-20 16:04 ?980次閱讀
    電競三芯,游戲至尊 <b class='flag-5'>一</b>加 <b class='flag-5'>Ace</b> 5 至尊系列正式定檔5月27日

    APP自動化測試框架

    APP自動化測試框架套結合工具鏈、設計模式和技術規范的集成解決方案。以下是基于主流技術實踐的核心要點總結、核心模塊構成 環境管理? 支持物理機/虛擬機/容器化部署,集成ADB
    的頭像 發表于 05-07 07:35 ?672次閱讀
    APP自動化測試<b class='flag-5'>框架</b>

    STM32如何移植Audio框架

    最近在學習音頻解碼,想用下Audio框架。 1、這個該如何移植到自己創建的BSP并對接到device框架中?看了官方移植文檔沒有對沒有對該部分的描述。 2、我只想實現個簡單的播放功
    發表于 04-01 08:08