0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

OpenHarmony ACE 代码框架总结

电子发烧友开源社区 来源:未知 2022-12-30 19:05 次阅读

一:ACE_Engine框架概述:

ACE_Engine框架是OpenHarmony 的UI开发框架,提供开发者在进行应用UI开发时所必需的各种组件,以及定义这些组件的属性,样式,事件及方法。通过这些组件可以很方便的进行OpenHarmony上UI应用的开发。 ACE_Engine提供的组件分为两种类型,即:类Web开发范式类型和声明式开发范式类型。其中类Web开发范式中定义一个页面需要三个文件,html,css和js文件。html文件负责页面布局,css文件负责定义组件的样式,js文件负责业务逻辑实现。而声明式范式仅需要1个ets文件,页面布局和组件的样式以及业务逻辑实现都在此文件中。如图:c7ab3cee-8830-11ed-bfe3-dac502259ad0.png  二:ACE_Engine框架模块划分对于类Web开发范式组件,根据组件从前端到后端的过程,可以将整个框架划分为JsFrameWork,DomNode, ComPonent, RenderNode四个模块。其作用分别如下:
  • JsFrameWork:
负责解析前端html和css文件,创建出DomNode树。该树的结构和前端页面是一一对应的。2. DomNode: 负责将Dom树转换为Component树。注意一个Dom节点转换过后的Component节点实际上并不是一个单独的节点,而是一颗以rootComponent为跟节点的组件树。该树中逐层包裹了对应的功能组件,最内部才是真正的主节点(这样的作用是功能解耦合,将某一特定的功能放到对应的组件中去)。如BoxComponet负责组件的边框绘制,DisplayComponent负责组件透明度绘制,TouchComponent负责组件触摸时间的处理等。,一个详细过程见DOMNode::GenerateComponentNode函数。3. ComPonent: 负责将Component树中所有继承自RenderComponent的节点(可绘制节点)创建对应的RendNode节点,生成对应的RendNode树。见RenderComponent ::CreateRenderNode虚函数,4. RenderNode: RenderNode即可绘制的节点,负责组件的最终布局和绘制。其中布局函数为PerformLayout虚函数,由每个组件对应的实现类Render***类来实现。绘制函数为Paint虚函数,由每个组件对应的子类FlutterRender***类来实现。 对于声明式开发范式组件,根据组件从前端到后端的过程,可以将整个框架划分为EtsLoader,JsView, ComPonent, RenderNode四个模块。其作用分别如下:
  • EtsLoader
负责解析ets页面,根据组件的tag标签创建对应的JsView对象,生成jsView树。2. JsView 负责处理组件的属性,方法和事件。并通过Create函数创建对应的Component树。3. ComPonent: 同Web开发范式组件中的Component4. RenderNode: 同Web开发范式组件中的RenderNode 各模块创建示意图如下图所示:c7c84d84-8830-11ed-bfe3-dac502259ad0.png  各模块见的调用关系及主要函数如下:c7eb86aa-8830-11ed-bfe3-dac502259ad0.png  三:组件的属性/样式的传递过程
  1. 组件的属性和样式是保存在前端页面的,通过JsframeWork解析页面,并调用JsEngine的CreateDomNode接口创建Dom节点的同时传递新节点属性和样式。 如果页面中属性样式发生变化,则单独调用SetAttr或SetStyle来更新属性和样式。
  2. DomNode收到属性和样式之后,会将通用属性保存在Declation类中,将组件特有的属性通过SetSpecialAttr和SetSpectialStyle函数保存在自身。
  3. DomNode调用对应Component类的Set***函数,将所有属性和样式设置到Component中。
  4. RenderNode创建后,会调用其Update函数。 该函数内调用对应Component的Get***函数,来接收组件的所有属性和样式。
  5. PipeLine中会遍历每个RenderNode进行布局和绘制,此时,就依据RenderNode中接收的属性和样式,进行布局并绘制。
c80423ae-8830-11ed-bfe3-dac502259ad0.png    四:总结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 更多热点文章阅读
  • 玩转OpenHarmony PID:教你打造两轮平衡车
  • 基于 OpenHarmony 的智联北斗海防系统
  • 玩转OpenHarmony智能家居:如何实现树莓派“碰一碰”设备控制
  • 带你玩转OpenHarmony AI:基于Seetaface2的人脸识别
  • 带你玩转OpenHarmony AI:打造智能语音子系统

提示:本文由电子发烧友社区发布,转载请注明以上来源。如需社区合作及入群交流,请添加微信EEFans0806,或者发邮箱liuyong@huaqiu.com。


原文标题:OpenHarmony ACE 代码框架总结

文章出处:【微信公众号:电子发烧友开源社区】欢迎添加关注!文章转载请注明出处。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 电子发烧友
    +关注

    关注

    33

    文章

    549

    浏览量

    32962
  • 开源社区
    +关注

    关注

    0

    文章

    94

    浏览量

    406

原文标题:OpenHarmony ACE 代码框架总结

文章出处:【微信号:HarmonyOS_Community,微信公众号:电子发烧友开源社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    【龙芯2K0300蜂鸟板试用】OpenHarmony代码

    收到龙芯2K0300蜂鸟开发板后,对开发板做了一些了解和研究,现将OpenHarmony代码提供给大家测试,也希望大家能更多的认识龙芯2K0300蜂鸟开发板,下面先简单介绍一下这块开发板。 广东
    发表于 09-18 11:42

    400万!深开鸿OpenHarmony主仓代码贡献量再创里程碑!

    2024年7月8日,据OpenAtomOpenHarmony(以下简称“OpenHarmony”)官网显示,深开鸿在OpenHarmony社区主仓代码贡献总量超过400万行,在华为以外
    的头像 发表于 07-09 08:33 349次阅读
    400万!深开鸿<b class='flag-5'>OpenHarmony</b>主仓<b class='flag-5'>代码</b>贡献量再创里程碑!

    鸿蒙开发ArkUI-X基础知识:【ArkUI代码工程及构建介绍】

    ArkUI作为OpenHarmony的默认开发框架,在本项目(ArkUI-X)中需要做到一套代码同时支持多平台构建,所以会采取共仓开发的方式,部分仓直接指向OpenHarmony相关开
    的头像 发表于 05-25 16:45 2074次阅读
    鸿蒙开发ArkUI-X基础知识:【ArkUI<b class='flag-5'>代码</b>工程及构建介绍】

    鸿蒙ArkUI-X跨平台开发:【命令行工具(ACE Tools)】

    ACE Tools是一套为ArkUI-X项目跨平台应用开发者提供的命令行工具,支持在Windows/Ubuntu/macOS平台运行,用于构建OpenHarmony/HarmonyOS、Android和iOS平台的应用程序,其功能包括开发环境检查,新建项目,编译打包,安装
    的头像 发表于 05-21 17:39 1751次阅读
    鸿蒙ArkUI-X跨平台开发:【命令行工具(<b class='flag-5'>ACE</b> Tools)】

    【开源鸿蒙】下载OpenHarmony 4.1 Release源代码

    本文介绍了如何下载开源鸿蒙(OpenHarmony)操作系统 4.1 Release版本的源代码,该方法同样可以用于下载OpenHarmony最新开发版本(master分支)或者4.0 Release、3.2 Release等发
    的头像 发表于 04-27 23:16 909次阅读
    【开源鸿蒙】下载<b class='flag-5'>OpenHarmony</b> 4.1 Release源<b class='flag-5'>代码</b>

    鸿蒙开发学习:【OpenHarmony HAR】

    OpenHarmony js/ts三方库使用的是OpenHarmony静态共享包,即HAR(Harmony Archive),可以包含js/ts代码、c++库、资源和配置文件。通过HAR,可以实现
    的头像 发表于 03-18 16:27 747次阅读

    【六】Purple Pi OH开发板带你7天入门OpenHarmony

    今天我们来从OpenHarmony简介、环境搭建、创建第一个OpenHarmony项目等方面开始OpenHarmony应用开发的第一步。一.OpenHarmony简介
    的头像 发表于 03-14 08:31 543次阅读
    【六】Purple Pi OH开发板带你7天入门<b class='flag-5'>OpenHarmony</b>!

    介绍一种OpenAtom OpenHarmony轻量系统适配方案

    本文在不改变原有系统基础框架的基础上, 介绍了一种OpenAtom OpenHarmony(以下简称“OpenHarmony”)轻量系统适配方案。
    的头像 发表于 03-05 09:24 1146次阅读
    介绍一种OpenAtom <b class='flag-5'>OpenHarmony</b>轻量系统适配方案

    OpenHarmony4.0源码解析之媒体框架

    媒体框架简介 媒体框架 multimedia_player_framework 主要提供音视频的录制与播放功能。 框架简介 从框架图中可以看出,媒体
    的头像 发表于 02-26 22:05 914次阅读
    <b class='flag-5'>OpenHarmony</b>4.0源码解析之媒体<b class='flag-5'>框架</b>

    [鸿蒙]OpenHarmony4.0的Rust开发

    OpenHarmony 为了集成 C/C++ 代码和提升编译速度,使用了 GN + Ninja 的编译构建系统。GN 的构建语言简洁易读,Ninja 的汇编级编译规则直接高效。 为了在 OpenHarmony
    的头像 发表于 02-26 17:28 882次阅读
    [鸿蒙]<b class='flag-5'>OpenHarmony</b>4.0的Rust开发

    【鸿蒙】OpenHarmony 4.0蓝牙代码结构简析

    OpenHarmony 4.0蓝牙代码结构简析前言 OpenHarmony 4.0上蓝牙仓和目录结构进行一次较大整改,本文基于4.0以上版本对蓝牙代码进行分析,便于读者快速了解和学习
    的头像 发表于 02-26 16:08 1539次阅读
    【鸿蒙】<b class='flag-5'>OpenHarmony</b> 4.0蓝牙<b class='flag-5'>代码</b>结构简析

    OpenHarmony 之 NAPI 框架介绍

    环境中的 JS 变量与方法。 OpenHarmony 中的 NAPI OpenAtom OpenHarmony(以下简称 “OpenHarmony”)应用层基于 javascript 语言开发,而系统
    的头像 发表于 02-01 17:34 692次阅读
    <b class='flag-5'>OpenHarmony</b> 之 NAPI <b class='flag-5'>框架</b>介绍

    资讯速递 | 厦门大学OpenHarmony技术俱乐部正式揭牌成立

    个智能终端设备操作系统的框架和平台,促进万物互联产业的繁荣发展。在OpenHarmony项目群技术指导委员会领导下,OpenHar
    的头像 发表于 01-02 16:51 505次阅读
    资讯速递 | 厦门大学<b class='flag-5'>OpenHarmony</b>技术俱乐部正式揭牌成立

    OpenHarmony创新赛圆满落幕,获奖名单揭晓!

    点击蓝字 ╳ 关注我们 开源项目 OpenHarmony 是每个人的 OpenHarmony OpenHarmony创新赛半年磨一剑 科技与激情碰撞 付出与收获交融 参赛者们日夜奋战 每一个
    的头像 发表于 12-28 16:05 347次阅读
    <b class='flag-5'>OpenHarmony</b>创新赛圆满落幕,获奖名单揭晓!

    OpenHarmony开源GPU库Mesa3D适配说明

    本文档主要讲解在OpenHarmony中,Mesa3D的适配方法及原理说明。 环境说明: OHOS版本: 适用3.2-Beta3及以上 内核版本: linux-5.10 硬件环境
    发表于 12-25 11:38