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

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

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

3天內不再提示

鴻蒙ACE開發框架總結

OpenHarmony技術社區 ? 來源:OST開源開發者 ? 作者:OST開源開發者 ? 2023-01-09 10:05 ? 次閱讀

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

ACE_Engine 框架概述

ACE_Engine 提供的組件分為兩種類型,即:類 Web 開發范式類型和聲明式開發范式類型。其中類 Web 開發范式中定義一個頁面需要三個文件,html,css 和 js 文件。

html 文件負責頁面布局,css 文件負責定義組件的樣式,js 文件負責業務邏輯實現。

而聲明式范式僅需要 1 個 ets 文件,頁面布局和組件的樣式以及業務邏輯實現都在此文件中。

如下圖:

311141fc-8f42-11ed-bfe3-dac502259ad0.png

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。 各模塊創建示意圖如下圖所示:

312a91ca-8f42-11ed-bfe3-dac502259ad0.png

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

31450564-8f42-11ed-bfe3-dac502259ad0.png

組件的屬性/樣式的傳遞過程

組件的屬性和樣式是保存在前端頁面的,通過 JsframeWork 解析頁面,并調用 JsEngine 的 CreateDomNode 接口創建 Dom 節點的同時傳遞新節點屬性和樣式。

如果頁面中屬性樣式發生變化,則單獨調用SetAttr或SetStyle來更新屬性和樣式。

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

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

RenderNode 創建后,會調用其 Update 函數。

該函數內調用對應 Component 的 Get*** 函數,來接收組件的所有屬性和樣式。

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

316beca6-8f42-11ed-bfe3-dac502259ad0.png

總結

ACE_Engine 框架整體代碼較復雜,涉及的類也比較多。本文簡單介紹了一個 ACE 組件從前端的頁面描述,到中間層三棵樹的創建和屬性傳遞,以及最終進行UI布局和繪制的整個過程。

該過程簡單總結一下就是:JS 頁面→Dom 樹→Component 樹→Render 樹,最后繪制 Render 樹。

大家只要理解這個基本過程,在結合代碼關注重點流程。相信一定能夠對 ACE_Engine 框架的代碼有整體的理解。在此基礎上可以進行 ACE 組件的增強功能開發,包括新增一個 ACE 組件等。

審核編輯:湯梓紅

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

    關注

    0

    文章

    403

    瀏覽量

    17477
  • 開源
    +關注

    關注

    3

    文章

    3323

    瀏覽量

    42475
  • ACE
    ACE
    +關注

    關注

    0

    文章

    21

    瀏覽量

    10652
  • 鴻蒙
    +關注

    關注

    57

    文章

    2345

    瀏覽量

    42822
  • OpenHarmony
    +關注

    關注

    25

    文章

    3716

    瀏覽量

    16273

原文標題:鴻蒙ACE開發框架總結

文章出處:【微信號:gh_834c4b3d87fe,微信公眾號:OpenHarmony技術社區】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    【課程連載】高級硬件工程師張飛帶你學習鴻蒙驅動開發和系統燒錄

    的燒錄5、使用Hi3516DV300開發板搭載鴻蒙操作系統如何運行一個簡單的驅動程序6、Hi3516DV300開發板搭載鴻蒙操作系統對WiFi外設驅動程序調試
    發表于 09-17 09:36

    鴻蒙開發AI應用(八)JS框架訪問內核層

    + CSS + HTML的技術上進行,相關內容可以回顧用鴻蒙開發AI應用(五)UI篇。JS應用開發框架原理在第六篇里,我們已經體驗了一下使用JS
    發表于 02-06 19:36

    JS應用開發框架組件

    應用開發框架源代碼在/foundation/ace/ace_engine_lite下,目錄結構如下圖所示:/foundation/ace/
    發表于 04-23 18:05

    openharmony ACE開發框架詳解

      ACE(Ability Cross-platform Environment)開發框架ACE框架的輕量實現。它可以提供一套跨平臺的類w
    發表于 04-07 14:52

    鴻蒙應用開發的JS UI框架如何實現高德地圖的訪問?

    鴻蒙應用,現在分為Java UI框架和Ark UI框架,其中JS UI開發框架Ark UI框架
    發表于 04-28 11:44

    一文總結ACE代碼框架

    一、前言ACE_Engine框架是OpenAtom OpenHarmony(簡稱“OpenHarmony”)的UI開發框架,為開發者提供在進
    發表于 01-10 11:09

    ACE代碼框架總結

    一.ACE_Engine框架概述:ACE_Engine框架是OpenHarmony 的UI開發框架
    發表于 03-22 09:11

    基于Struts框架和Procedure的Web開發模式

    介紹基于MVC設計模式的Struts框架的組成和實現原理,總結開發框架的應用特點和開發步驟。在分析和比較其他基于Struts
    發表于 04-23 10:16 ?79次下載

    鴻蒙系統中JS框架的逐行分析

    其實是由 C++ 來承擔的。JavaScript 代碼只是其中的 ViewModel 層。 鴻蒙 JS 框架是零依賴的,只在開發打包過程中
    的頭像 發表于 10-21 14:37 ?2006次閱讀

    基于鴻蒙的JS框架ace_lite_jsfwk開發

    world 程序,還順手給鴻蒙文檔提了 2 個 PR。 當然我最感興趣的就是鴻蒙的 JS 框架 ace_lite_jsfwk,從名字中可以看出來這是一個非常輕量級的
    的頭像 發表于 02-26 10:54 ?2866次閱讀
    基于<b class='flag-5'>鴻蒙</b>的JS<b class='flag-5'>框架</b><b class='flag-5'>ace</b>_lite_jsfwk<b class='flag-5'>開發</b>

    OpenHarmony源碼剖析之ACE(JavaScript運行環境初始化)

    ? 張亮亮 深圳開鴻數字產業發展有限公司 ??? 簡介 ? ? JS UI 框架引擎? ACE? 全稱 Ability Cross-platform Environment
    的頭像 發表于 11-18 10:40 ?5140次閱讀
    OpenHarmony源碼剖析之<b class='flag-5'>ACE</b>(JavaScript運行環境初始化)

    OpenHarmony ACE 代碼框架總結

    一:ACE_Engine框架概述: ACE_Engine框架是OpenHarmony 的UI開發框架
    的頭像 發表于 12-30 19:05 ?1172次閱讀

    一文總結 ACE 代碼框架

    田可輝 鴻湖萬聯高級技術專家 鴻湖萬聯產品推薦官 一、前言 ACE_Engine框架是OpenAtom OpenHarmony(簡稱“OpenHarmony”)的UI開發框架,為
    的頭像 發表于 01-11 03:30 ?1808次閱讀

    鴻蒙開發用什么語言?

    兩種開發方向 我們常說鴻蒙開發,但是其實鴻蒙開發分為兩個方向: 一個是系統級別的開發,比如驅動,
    的頭像 發表于 01-30 16:12 ?1532次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>開發</b>用什么語言?

    鴻蒙OS開發實例:【HarmonyHttpClient】網絡框架

    鴻蒙上使用的Http網絡框架,里面包含純Java實現的HttpNet,類似okhttp使用,支持同步和異步兩種請求方式;還有鴻蒙版retrofit,和Android版Retrofit相似的使用,解放雙手般優雅使用注解、自動解析j
    的頭像 發表于 04-12 16:58 ?827次閱讀
    <b class='flag-5'>鴻蒙</b>OS<b class='flag-5'>開發</b>實例:【HarmonyHttpClient】網絡<b class='flag-5'>框架</b>
    主站蜘蛛池模板: 免费完整版观看| HEYZO精品无码一区二区三区| 日本最新免费区中文| 老师在讲桌下边h边讲课| 国内精品久久久久久久999下| 国产精品69人妻无码久久| 耽肉高h喷汁呻吟| 成片在线看一区二区草莓| beeg xxx日本老师| ass亚洲熟妇毛耸耸pics| 91蜜桃视频| 免费撕开胸罩吮胸视频| 免费鲁丝片一级在线观看| 快播可乐网| 快播h网站| 暖暖 免费 高清 日本 在线| 女人和男人插曲视频大全| 免费国产精品视频| 欧美人与动牲交A精品| 青草在线在线d青草在线| 日本午夜视频在线| 四虎国产精品高清在线观看| 涩涩免费视频软件| 午夜国产精品免费观看| 亚洲国产高清福利视频| 一本到2019线观看| 在线不卡日本v二区| 97蜜桃网123| 刺激一区仑乱| 粉色视频午夜网站入口| 国产伦精品一区二区免费| 激情办公室| 免费韩伦影院在线观看| 青草久久影院| 星空无限传媒视频在线观看视频| 亚洲精品拍拍央视网出文| 中文字幕精品在线观看| www.av一区| 国产网址在线观看| 久久www免费人成高清| 欧美成人亚洲高清在线观看|