1、来源:本工程是 OpenHarmony 应用开发文档 的演示工程。
2、目的:旨在把文档内容代码化,方便开发时查询。
3、版本:
v4.1 Release API 11 Release---截止2024.04.11
Stage模型:
HAP(分entry和feature)、HAR、HSP所有文档链接罗列如下:
1、Module类型
3、HAP
4、HAR
5、HSP
6、动态import
7、工程管理
8、受2启发:当多包(HAP/HSP)同时引用同一个共享包时,采用HSP替代HAR,可以避免HAR造成的多包间代码和资源的重复拷贝,从而减小应用包大小。---我的理解:当HAR被应用内共享时,外包一层HSP,以避免包体积膨胀和状态无法共享问题。
9、受2启发:HAR和HSP没有XxxAbility,意味着它们不能独立运行,只能依赖HAP。
10、受3启发:因为HAP不支持导出接口和ArkUI组件,给其他模块使用,所以HAP和HAP之间没有依赖关系,但是可以通过UIAbility组件间交互(设备内)进行通信。
AppScope:应用的全局配置信息。由DevEco Studio自动生成,不可更改。
resources :用于存放应用需要用到的资源文件。编译后会合入到模块(比如“entry”)下面资源目录中,如果两个目录下的存在重名文件,编译打包后只会保留AppScope目录下的资源文件。---stage模型多工程情况下,共有的资源文件放到此目录。
entry:应用的主模块,包含应用的入口界面、入口图标和主功能特性,编译后生成entry类型(module.json5中的“type”字段)的HAP包。每一个应用分发到 >>同一类型<< 的设备上的应用程序包,只能包含唯一一个entry类型的HAP。目录名称可以自定义。
src > main > ets:用于存放ArkTS源码文件(.ets文件)。编译后会生成.abc文件。
src > main > ets > entryability:应用/服务的入口。
src > main > ets > pages:应用/服务包含的页面。
src > main > resources:用于存放应用/服务所用到的资源文件,如图形、多媒体、字符串、布局文件等。关于资源文件,详见资源文件的分类①。
base:默认存在的目录。二级子目录element用于存放字符串、颜色、布尔值等基础元素,media、profile存放媒体、动画、布局等资源文件。
en_US:默认存在的目录,设备语言环境是美式英文时,优先匹配此目录下资源。二级子目录element用于存放字符串、颜色、布尔值等基础元素,media、profile存放媒体、动画、布局等资源文件。
zh_CN:默认存在的目录,设备语言环境是简体中文时,优先匹配此目录下资源。二级子目录element用于存放字符串、颜色、布尔值等基础元素,media、profile存放媒体、动画、布局等资源文件。
en_GB-vertical-car-mdpi:自定义限定词目录示例,由开发者创建
rawfile:其他类型文件目录,支持创建多层子目录,子目录名称可以自定义,文件夹内可以自由放置各类资源文件。文件以文件形式保存,不会被集成到resources.index文件中。文件名可自定义。
resfile:其他类型文件目录,支持创建多层子目录,子目录名称可以自定义,文件夹内可以自由放置各类资源文件。文件以文件形式保存,不会被集成到resources.index文件中。文件名可自定义。资源会被解压到应用沙箱路径,通过Context属性resourceDir获取到resfile资源目录后,可通过文件路径访问。
feature1:应用的动态特性模块,编译后生成feature类型(module.json5中的“type”字段)的HAP包。一个应用中可以包含0、1或多个feature类型的HAP。
library_static1:静态共享库。编译后会生成一个以.har为后缀的文件,即静态共享包HAR(Harmony Archive)。
library_shared1:动态共享库。编译后会生成一个以.hsp为后缀的文件,即动态共享包HSP(Harmony Shared Package)。实际上,Shared Library编译后除了会生成一个.hsp文件,还会生成一个.har文件。这个.har文件中包含了HSP对外导出的接口,应用中的其他模块需要通过.har文件来引用HSP的功能。为了表述方便,我们通常认为Shared Library编译后生成HSP。
oh_modules:用于存放三方库依赖信息。
①:资源文件的分类
装饰器 | 使用位置 | 作用 | URL |
---|---|---|---|
@Entry | Page页入口组件 | 一个页面最多一个此装饰的组件 | 自定义组件的基本结构 |
@Component | 每个组件 | 仅装饰struct。使struct具备组件化的能力 | 自定义组件的基本结构 |
注:组件专指自定义组件。
装饰器 | 使用位置 | 作用 | URL |
---|---|---|---|
@Builder | 封装UI描述的函数 | 使函数遵循build()函数语法规则,复用UI元素 | @Builder装饰器:自定义构建函数 |
@BuilderParam |
组件内 成员变量(变量类型必须是@Builder装饰的函数) |
父组件传递@Builder装饰的函数给子组件 | @BuilderParam装饰器:引用@Builder函数 |
@Require |
组件内 成员变量(必须是@Prop或@BuilderParam装饰的变量) |
限制@Prop和@BuilderParam装饰的变量必须在构造时传参 | @Require装饰器:校验构造传参 |
@Styles | 封装通用属性和通用事件的函数 | 复用 | @Styles装饰器:定义组件重用样式 |
@Extend | 封装属性、事件和自定义全局 函数(比如@Styles装饰的全局函数)的全局 函数 |
复用 | @Extend装饰器:定义扩展组件样式 |
@AnimatableExtend | 封装属性的全局 函数 |
主要是让 不可动画属性 也能实现动画效果 | @AnimatableExtend装饰器:定义可动画属性 |
函数 | 使用位置 | 作用 | URL |
---|---|---|---|
wrapBuilder(@Builder builder: (...args: Args) => void): WrappedBuilder | 封装1~N个全局@Builder构建函数 | wrapBuilder:封装全局@Builder | |
* stateStyles(value: StateStyles): T | 通用属性 | 设置不同状态下样式,类似Android中的selector(选择器) | stateStyles:多态样式 |
注:
1、组件:这里专指自定义组件。
2、属性:属性方法简称。
3、事件:事件方法简称。
4、样式:属性和事件。
5、UI描述:系统组件、属性和事件。
6、* :优先掌握。
组件状态:
装饰器 | 使用位置 | 初始化 | 组件内同步 | 组件间同步 | 父初始化 | 初始化子 | URL |
---|---|---|---|---|---|---|---|
@State |
组件内 成员变量 |
本地 | Y | 取决于搭配的装饰器 | 无状态、@State、@Prop、@Link、@ObjectLink、@Provide、@Consume、@StorageProp、@StorageLink、@LocalStorageProp、@LocalStorageLink | 无状态、@State、@Prop、@Link、@Provide | @State装饰器:组件内状态 |
@Prop |
组件内 成员变量 |
父/本地 | Y | 父装饰器 -> 子@Prop | 无状态、@State、@Prop、@Link、@ObjectLink、@Provide、@Consume、@StorageProp、@StorageLink、@LocalStorageProp、@LocalStorageLink | 无状态、@State、@Prop、@Link、@Provide | @Prop装饰器:父子单向同步 |
@Link |
组件内 成员变量 |
父 | Y | 父装饰器 <-> 子@Link | @State、@Prop、@Link、@ObjectLink、@Provide、@Consume、@StorageProp、@StorageLink、@LocalStorageProp、@LocalStorageLink | 无状态、@State、@Prop、@Link、@Provide | @Link装饰器:父子双向同步 |
@ObjectLink |
组件内 被@Observed装饰的成员变量 |
父 | Y | 父装饰器 <-> 子@ObjectLink | @State、@Link、@ObjectLink、@Provide、@Consume | 无状态、@State、@Prop、@Link、@Provide | @Link装饰器:父子双向同步 |
@Provide |
组件内 成员变量 |
本地 | Y | 父@Provide <-> 子@Consume | 无状态、@State、@Prop、@Link、@ObjectLink、@Provide、@Consume、@StorageProp、@StorageLink、@LocalStorageProp、@LocalStorageLink | @State、@Prop、@Link、@Provide | @Provide装饰器和@Consume装饰器:与后代组件双向同步 |
@Consume |
组件内 成员变量 |
@Provide | Y | 父@Provide <-> 子@Consume | @Provide | @State、@Link、@Prop、@Provide | @Provide装饰器和@Consume装饰器:与后代组件双向同步 |
应用状态:
装饰器 | 使用位置 | 初始化 | 组件内同步 | 组件外同步 | 父初始化 | 初始化子 | URL |
---|---|---|---|---|---|---|---|
@LocalStorageProp |
组件内 成员变量 |
本地 | Y | LocalStorage -> @LocalStorageProp | 禁止(只能从LocalStorage中key对应的属性初始化) | @State、@Prop、@Link、@Provide | @LocalStorageProp |
@LocalStorageLink |
组件内 成员变量 |
本地 | Y | LocalStorage <-> @LocalStorageLink | 禁止(只能从LocalStorage中key对应的属性初始化) | @State、@Prop、@Link、@Provide | @LocalStorageLink |
@StorageProp |
组件内 成员变量 |
本地 | Y | (Environment -> )AppStorage -> @StorageProp | 禁止(只能从AppStorage中key对应的属性初始化) | @State、@Prop、@Link、@Provide | @StorageProp |
@StorageLink |
组件内 成员变量 |
本地 | Y | (PersistentStorage <-> )AppStorage <-> @StorageLink | 禁止(只能从AppStorage中key对应的属性初始化) | 无状态、@State、@Prop、@Link、@Provide | @StorageLink |
其它状态:
装饰器 | 使用位置 | 作用 | URL |
---|---|---|---|
@Watch |
组件内 装饰器装饰的成员变量 |
状态变量更改通知 | @Watch装饰器:状态变量更改通知 |
$$ | 支持$$的组件参数/属性 |
部分 变量和内置 组件双向同步① |
$$语法:内置组件双向同步 |
@Track | class对象的成员变量 | class对象属性级更新 | @Track装饰器:class对象属性级更新 |
注:
1、所有(状态装饰器装饰的)状态变量都是组件内私有变量,不支持外部访问。
2、组件:这里专指自定义组件。
3、无状态:常规变量。
4、$$两种用法:1)@Builder中按引用传递参数;2)内置组件双向同步。
①中部分
是指:当前$$支持基础类型变量、以及@State、@Link和@Prop装饰的变量;内置
是指:当前$$支持的组件。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。