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

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

    瀏覽量

    17510
  • 開源
    +關注

    關注

    3

    文章

    3370

    瀏覽量

    42577
  • ACE
    ACE
    +關注

    關注

    0

    文章

    21

    瀏覽量

    10672
  • 鴻蒙
    +關注

    關注

    57

    文章

    2370

    瀏覽量

    42905
  • OpenHarmony
    +關注

    關注

    25

    文章

    3728

    瀏覽量

    16401

原文標題:鴻蒙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 ?2023次閱讀

    基于鴻蒙的JS框架ace_lite_jsfwk開發

    world 程序,還順手給鴻蒙文檔提了 2 個 PR。 當然我最感興趣的就是鴻蒙的 JS 框架 ace_lite_jsfwk,從名字中可以看出來這是一個非常輕量級的
    的頭像 發表于 02-26 10:54 ?2881次閱讀
    基于<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 ?5180次閱讀
    OpenHarmony源碼剖析之<b class='flag-5'>ACE</b>(JavaScript運行環境初始化)

    OpenHarmony ACE 代碼框架總結

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

    一文總結 ACE 代碼框架

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

    鴻蒙開發用什么語言?

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

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

    鴻蒙上使用的Http網絡框架,里面包含純Java實現的HttpNet,類似okhttp使用,支持同步和異步兩種請求方式;還有鴻蒙版retrofit,和Android版Retrofit相似的使用,解放雙手般優雅使用注解、自動解析j
    的頭像 發表于 04-12 16:58 ?860次閱讀
    <b class='flag-5'>鴻蒙</b>OS<b class='flag-5'>開發</b>實例:【HarmonyHttpClient】網絡<b class='flag-5'>框架</b>
    主站蜘蛛池模板: 欧美大色网| 久久中文字幕一区二区三区| 日本免费www| 尻逼尻逼| 免费jlzzjlzz在线播放视频| 久久波多野结衣| 性欧美欧美| 69日本xxxxxxxx59| 男生女生靠逼视频| 亚洲最大色网站| 中文字幕第一区| 三级a黄| 伊人久久大香线蕉影院95| 日本一区二区在线不卡| 欧美 亚洲 国产 精品有声| 中文三级视频| 色播久久| 久久精品亚洲一级毛片| 美女视频黄又黄又免费高清| 三级五月天| 免费爱爱网址| 免费黄色小视频| 国产毛片久久久久久国产毛片| 亚洲午夜在线观看| 夜夜爽爽爽| 久久婷婷色综合老司机| 好大好硬好爽免费视频| 丁香激情六月| 曰本女人色黄网站| 日本理论午夜中文字幕第一页| 国产婷婷色一区二区三区深爱网 | 中文字幕一区二区三区四区| 精品国产免费观看一区高清| 女同性大尺度床戏视频| 亚偷熟乱区视频在线观看| 欧美性videofree精品| 欧美视频一区在线观看| 国产精品igao在线观看樱花日本| 天天操欧美| 在线视频亚洲一区| 婷婷狠狠|