91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

OpenHarmony ACE 代碼框架總結(jié)

電子發(fā)燒友開源社區(qū) ? 來(lái)源:未知 ? 2022-12-30 19:05 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一:ACE_Engine框架概述:

ACE_Engine框架是OpenHarmony 的UI開發(fā)框架,提供開發(fā)者在進(jìn)行應(yīng)用UI開發(fā)時(shí)所必需的各種組件,以及定義這些組件的屬性,樣式,事件及方法。通過(guò)這些組件可以很方便的進(jìn)行OpenHarmony上UI應(yīng)用的開發(fā)。 ACE_Engine提供的組件分為兩種類型,即:類Web開發(fā)范式類型和聲明式開發(fā)范式類型。其中類Web開發(fā)范式中定義一個(gè)頁(yè)面需要三個(gè)文件,html,css和js文件。html文件負(fù)責(zé)頁(yè)面布局,css文件負(fù)責(zé)定義組件的樣式,js文件負(fù)責(zé)業(yè)務(wù)邏輯實(shí)現(xiàn)。而聲明式范式僅需要1個(gè)ets文件,頁(yè)面布局和組件的樣式以及業(yè)務(wù)邏輯實(shí)現(xiàn)都在此文件中。如圖:c7ab3cee-8830-11ed-bfe3-dac502259ad0.png ?二:ACE_Engine框架模塊劃分對(duì)于類Web開發(fā)范式組件,根據(jù)組件從前端到后端的過(guò)程,可以將整個(gè)框架劃分為JsFrameWork,DomNode, ComPonent, RenderNode四個(gè)模塊。其作用分別如下:
  • JsFrameWork:
負(fù)責(zé)解析前端html和css文件,創(chuàng)建出DomNode樹。該樹的結(jié)構(gòu)和前端頁(yè)面是一一對(duì)應(yīng)的。2. DomNode: 負(fù)責(zé)將Dom樹轉(zhuǎn)換為Component樹。注意一個(gè)Dom節(jié)點(diǎn)轉(zhuǎn)換過(guò)后的Component節(jié)點(diǎn)實(shí)際上并不是一個(gè)單獨(dú)的節(jié)點(diǎn),而是一顆以rootComponent為跟節(jié)點(diǎn)的組件樹。該樹中逐層包裹了對(duì)應(yīng)的功能組件,最內(nèi)部才是真正的主節(jié)點(diǎn)(這樣的作用是功能解耦合,將某一特定的功能放到對(duì)應(yīng)的組件中去)。如BoxComponet負(fù)責(zé)組件的邊框繪制,DisplayComponent負(fù)責(zé)組件透明度繪制,TouchComponent負(fù)責(zé)組件觸摸時(shí)間的處理等。,一個(gè)詳細(xì)過(guò)程見DOMNode::GenerateComponentNode函數(shù)。3. ComPonent: 負(fù)責(zé)將Component樹中所有繼承自RenderComponent的節(jié)點(diǎn)(可繪制節(jié)點(diǎn))創(chuàng)建對(duì)應(yīng)的RendNode節(jié)點(diǎn),生成對(duì)應(yīng)的RendNode樹。見RenderComponent ::CreateRenderNode虛函數(shù),4. RenderNode: RenderNode即可繪制的節(jié)點(diǎn),負(fù)責(zé)組件的最終布局和繪制。其中布局函數(shù)為PerformLayout虛函數(shù),由每個(gè)組件對(duì)應(yīng)的實(shí)現(xiàn)類Render***類來(lái)實(shí)現(xiàn)。繪制函數(shù)為Paint虛函數(shù),由每個(gè)組件對(duì)應(yīng)的子類FlutterRender***類來(lái)實(shí)現(xiàn)。 對(duì)于聲明式開發(fā)范式組件,根據(jù)組件從前端到后端的過(guò)程,可以將整個(gè)框架劃分為EtsLoader,JsView, ComPonent, RenderNode四個(gè)模塊。其作用分別如下:
  • EtsLoader
負(fù)責(zé)解析ets頁(yè)面,根據(jù)組件的tag標(biāo)簽創(chuàng)建對(duì)應(yīng)的JsView對(duì)象,生成jsView樹。2. JsView 負(fù)責(zé)處理組件的屬性,方法和事件。并通過(guò)Create函數(shù)創(chuàng)建對(duì)應(yīng)的Component樹。3. ComPonent: 同Web開發(fā)范式組件中的Component4. RenderNode: 同Web開發(fā)范式組件中的RenderNode 各模塊創(chuàng)建示意圖如下圖所示:c7c84d84-8830-11ed-bfe3-dac502259ad0.png ?各模塊見的調(diào)用關(guān)系及主要函數(shù)如下:c7eb86aa-8830-11ed-bfe3-dac502259ad0.png ?三:組件的屬性/樣式的傳遞過(guò)程
  1. 組件的屬性和樣式是保存在前端頁(yè)面的,通過(guò)JsframeWork解析頁(yè)面,并調(diào)用JsEngine的CreateDomNode接口創(chuàng)建Dom節(jié)點(diǎn)的同時(shí)傳遞新節(jié)點(diǎn)屬性和樣式。 如果頁(yè)面中屬性樣式發(fā)生變化,則單獨(dú)調(diào)用SetAttr或SetStyle來(lái)更新屬性和樣式。
  2. DomNode收到屬性和樣式之后,會(huì)將通用屬性保存在Declation類中,將組件特有的屬性通過(guò)SetSpecialAttr和SetSpectialStyle函數(shù)保存在自身。
  3. DomNode調(diào)用對(duì)應(yīng)Component類的Set***函數(shù),將所有屬性和樣式設(shè)置到Component中。
  4. RenderNode創(chuàng)建后,會(huì)調(diào)用其Update函數(shù)。 該函數(shù)內(nèi)調(diào)用對(duì)應(yīng)Component的Get***函數(shù),來(lái)接收組件的所有屬性和樣式。
  5. PipeLine中會(huì)遍歷每個(gè)RenderNode進(jìn)行布局和繪制,此時(shí),就依據(jù)RenderNode中接收的屬性和樣式,進(jìn)行布局并繪制。
c80423ae-8830-11ed-bfe3-dac502259ad0.png ? ?四:總結(jié)ACE_Engine框架整體代碼較復(fù)雜,涉及的類也比較多。本文簡(jiǎn)單介紹了一個(gè)ACE組件從前端的頁(yè)面描述,到中間層三棵樹的創(chuàng)建和屬性傳遞,以及最終進(jìn)行UI布局和繪制的整個(gè)過(guò)程。該過(guò)程簡(jiǎn)單總結(jié)一下就是:JS頁(yè)面 —> Dom樹 —> Component樹 —> Render樹,最后繪制Render樹。大家只要理解這個(gè)基本過(guò)程,在結(jié)合代碼關(guān)注重點(diǎn)流程。相信一定能夠?qū)CE_Engine框架的代碼有整體的理解。再此基礎(chǔ)上可以進(jìn)行ACE組件的增強(qiáng)功能開發(fā),包括新增一個(gè)ACE組件等。 文章轉(zhuǎn)自:鴻湖萬(wàn)聯(lián) 參考:新增一個(gè)類Web范式組件開發(fā)指南:https://gitee.com/yan-shuifeng/arkui_docs/blob/master/wiki/Ace1.0前端新增組件開發(fā)指南%EF%BC%9A以新增MyCircle組件為例_ver1.0.md 新增一個(gè)聲明式范式組件開發(fā)指南https://gitee.com/yan-shuifeng/arkui_docs/blob/master/wiki/Ace2.0前端新增組件開發(fā)指南%EF%BC%9A以新增MyCircle組件為例_ver1.0.md 更多熱點(diǎn)文章閱讀
  • 玩轉(zhuǎn)OpenHarmony PID:教你打造兩輪平衡車
  • 基于 OpenHarmony 的智聯(lián)北斗海防系統(tǒng)
  • 玩轉(zhuǎn)OpenHarmony智能家居:如何實(shí)現(xiàn)樹莓派“碰一碰”設(shè)備控制
  • 帶你玩轉(zhuǎn)OpenHarmony AI:基于Seetaface2的人臉識(shí)別
  • 帶你玩轉(zhuǎn)OpenHarmony AI:打造智能語(yǔ)音子系統(tǒng)

提示:本文由電子發(fā)燒友社區(qū)發(fā)布,轉(zhuǎn)載請(qǐng)注明以上來(lái)源。如需社區(qū)合作及入群交流,請(qǐng)?zhí)砑游⑿臙EFans0806,或者發(fā)郵箱liuyong@huaqiu.com。


原文標(biāo)題:OpenHarmony ACE 代碼框架總結(jié)

文章出處:【微信公眾號(hào):電子發(fā)燒友開源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。


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

    關(guān)注

    34

    文章

    591

    瀏覽量

    34137
  • 開源社區(qū)
    +關(guān)注

    關(guān)注

    1

    文章

    95

    瀏覽量

    798

原文標(biāo)題:OpenHarmony ACE 代碼框架總結(jié)

文章出處:【微信號(hào):HarmonyOS_Community,微信公眾號(hào):電子發(fā)燒友開源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    #OpenHarmony HDC調(diào)試

    OpenHarmony
    視美泰
    發(fā)布于 :2026年01月16日 09:46:28

    #OpenHarmony 開發(fā)環(huán)境準(zhǔn)備

    OpenHarmony
    視美泰
    發(fā)布于 :2026年01月16日 09:44:31

    #OpenHarmony 鏡像燒錄

    OpenHarmony
    視美泰
    發(fā)布于 :2026年01月16日 09:42:36

    #OpenHarmony 系統(tǒng)概述

    OpenHarmony
    視美泰
    發(fā)布于 :2026年01月16日 09:39:20

    #OpenHarmony Hello World應(yīng)用以及部署

    OpenHarmony
    視美泰
    發(fā)布于 :2026年01月16日 09:32:52

    OpenHarmony系統(tǒng)】本期視頻將為您介紹怎樣將鏡像燒錄到板卡中。

    OpenHarmony
    視美泰
    發(fā)布于 :2026年01月15日 14:29:55

    知乎開源“智能預(yù)渲染框架” 幾行代碼實(shí)現(xiàn)鴻蒙應(yīng)用頁(yè)面“秒開”

    近日,知乎在Gitee平臺(tái)開源了其自研的鴻蒙“智能預(yù)渲染框架”,并將該框架的Har包上架到OpenHarmony三方庫(kù)中心倉(cāng)。該框架在鴻蒙平臺(tái)首創(chuàng)“智能預(yù)渲染”技術(shù),旨在破解應(yīng)用復(fù)雜頁(yè)
    的頭像 發(fā)表于 08-29 14:32 ?636次閱讀
    知乎開源“智能預(yù)渲染<b class='flag-5'>框架</b>” 幾行<b class='flag-5'>代碼</b>實(shí)現(xiàn)鴻蒙應(yīng)用頁(yè)面“秒開”

    第三屆大會(huì)回顧第3期 | FFRT并發(fā)框架OpenHarmony中的設(shè)計(jì)與實(shí)踐

    演講嘉賓 | 黃佑鐘 回顧整理 | 廖 ? 濤 排版校對(duì) | 宋夕明 嘉賓介紹 開發(fā)框架分論壇? 黃佑鐘 ,海思Kirin解決方案并行與異構(gòu)計(jì)算專家。 正文內(nèi)容 多任務(wù)并發(fā)能更有效地利用CPU資源
    的頭像 發(fā)表于 06-21 16:53 ?1277次閱讀
    第三屆大會(huì)回顧第3期 | FFRT并發(fā)<b class='flag-5'>框架</b>在<b class='flag-5'>OpenHarmony</b>中的設(shè)計(jì)與實(shí)踐

    ArkUI-X框架LogInterface使用指南

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

    貢獻(xiàn) OpenHarmony 庫(kù)關(guān)鍵配置

    # 貢獻(xiàn) OpenHarmony 庫(kù)關(guān)鍵配置 #自研框架#ArkUI-X#三方框架#OpenHarmony#HarmonyOS ## 創(chuàng)建第三方庫(kù) - 打開 DevEco Stud
    發(fā)表于 05-28 13:46

    電競(jìng)?cè)?游戲至尊 一加 Ace 5 至尊系列售價(jià) 2499 元起

    2025年5月27日,一加正式推出一加Ace5至尊系列,包含一加Ace5至尊版與一加Ace5競(jìng)速版兩款機(jī)型。一加Ace5至尊系列配備了由9400系列旗艦芯、靈犀觸控芯和電競(jìng)Wi-Fi芯
    的頭像 發(fā)表于 05-27 16:55 ?2738次閱讀
    電競(jìng)?cè)?游戲至尊 一加 <b class='flag-5'>Ace</b> 5 至尊系列售價(jià) 2499 元起

    ArkUI-X跨平臺(tái)框架接入指南

    ArkUI跨平臺(tái)框架(ArkUI-X)進(jìn)一步將ArkUI開發(fā)框架擴(kuò)展到了多個(gè)OS平臺(tái):目前支持OpenHarmony、Android、 iOS,后續(xù)會(huì)逐步增加更多平臺(tái)支持。開發(fā)者基于一套主代碼
    發(fā)表于 05-18 18:21

    請(qǐng)問(wèn)下,openharmony支持哪一款龍芯的開發(fā)板?有沒(méi)有開源的龍芯的openharmony源碼?

    想買個(gè)2k0300的開發(fā)板學(xué)習(xí)龍芯和openharmony,愣是沒(méi)有看到提供openharmony源碼的,也沒(méi)與看到開源的代碼。gitee上,openharmony的龍芯sig倉(cāng)庫(kù)也是
    發(fā)表于 04-26 13:06

    北京迅為RK3568開發(fā)板OpenHarmony系統(tǒng)南向驅(qū)動(dòng)開發(fā)內(nèi)核HDF驅(qū)動(dòng)框架架構(gòu)

    北京迅為RK3568開發(fā)板OpenHarmony系統(tǒng)南向驅(qū)動(dòng)開發(fā)內(nèi)核HDF驅(qū)動(dòng)框架架構(gòu)
    的頭像 發(fā)表于 03-11 14:13 ?1874次閱讀
    北京迅為RK3568開發(fā)板<b class='flag-5'>OpenHarmony</b>系統(tǒng)南向驅(qū)動(dòng)開發(fā)內(nèi)核HDF驅(qū)動(dòng)<b class='flag-5'>框架</b>架構(gòu)