# ArkTs_demo **Repository Path**: zhtao_code/ark-ts_demo ## Basic Information - **Project Name**: ArkTs_demo - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-10-30 - **Last Updated**: 2023-12-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ### 概念 ##### UIAbility组件 UIAbility组件是一种包含UI界面的应用组件,主要用于和用户交互; ##### ExtensionAbility组件 ExtensionAbility组件是一种面向特定场景的应用组件 扩展组件; ##### WindowStage 每个UIAbility类实例都会与一个WindowStage类实例绑定,该类提供了应用进程内窗口管理器的作用。 它包含一个主窗口。也就是说UIAbility通过WindowStage持有了一个窗口,该窗口为ArkUI提供了绘制区域。 与显示相关的状态通过WindowStage的事件暴露给开发者,在EntryAbility类中定义; ##### Context Context及其派生类向开发者提供在运行期可以调用的各种能力。 UIAbility组件和各种ExtensionAbility派生类都有各自不同的Context类, 他们都继承自基类Context,但是各自又根据所属组件,提供不同的能力。 ###### 例如在UIAbility中获取context ``` private context = getContext(this) as common.UIAbilityContext ``` #### AbilityStage 每个Entry类型或者Feature类型的HAP在运行期都有一个AbilityStage类实例, 当HAP中的代码首次被加载到进程中的时候,系统会先创建AbilityStage实例。 每个在该HAP中定义的UIAbility类,在实例化后都会与该实例产生关联。 开发者可以使用AbilityStage获取该HAP中UIAbility实例的运行时信息。 继承AbilityStage的类,路径地址声明在`module.json5`的 `srcEntry` 字段,默认项目没有该字段,需要自己加 --- ### 状态管理 @State:组件内状态,必须本地初始化 @Prop:父子单向通信,只允许string、number、boolean、enum类型,允许本地初始化 @Link:父子双向通信,Object、class、string、number、boolean、enum类型,以及这些类型的数组,禁止本地初始化 @Provide装饰器和@Consume装饰器:与后代组件双向同步 @Observed装饰器和@ObjectLink装饰器:嵌套类对象属性变化 ###### 页面级UI状态存储 @LocalStorageProp:与LocalStorage中给定属性建立单向同步关系 @LocalStorageLink:与LocalStorage中key对应的属性建立双向数据同步 ###### 应用全局的UI状态存储 @StorageProp:与AppStorage中key对应的属性建立单向数据同步 @StorageLink:与AppStorage中key对应的属性建立双向数据同步 ###### 持久化存储UI状态 PersistentStorage:和AppStorage中的属性建立双向同步,通过AppStorage访问PersistentStorage,例如: ``` PersistentStorage.PersistProp('aProp', 47); AppStorage.Get('aProp'); // returns 47 @StorageLink('aProp') aProp: number = 48; ``` ***注:PersistentStorage只能在UI页面内使用,否则将无法持久化数据*** --- ### 其他 + 获取context ``` import common from '@ohos.app.ability.common' private context = getContext(this) as common.UIAbilityContext ``` + 退出应用 ``` this.context.terminateSelf() ``` + toast ``` import prompt from '@system.prompt'; prompt.showToast({ message: 'Message Info', duration: 2000, }); ``` + 导入和导出namespace命名空间 ``` namespace Util{ export function getTime(){ return Date.now() } } export default Util import Util from './util' Util.getTime() ```