# 概述
MiniX 框架是基于 OpenHarmony 中 ArkTS 应用开发语言发展而来。ArkTS 是由 TypeScript(简称 TS)语言发展而来,是 TS 的超集,继承了 TS 的所有特性,并在此基础上扩展了声明式 UI 的能力。 Minix 基于 ArkTS 声明式 UI 的语言能力,结合自身实际情况,再封装、扩展出一套适合于当下开发的跨平台跨设备开发框架,让开发者能够以更简洁、更自然的方式开发高性能应用。
当前扩展的声明式 UI 能力包括如下特性。
- 基本 UI 描述 定义了各种装饰器、自定义组件、UI 描述机制,再配合 UI 开发框架中的内置组件及其相关的事件方法、属性方法等共同构成了 UI 开发的主体。
- 状态管理 提供了多维度的状态管理机制,在 UI 开发框架中,和 UI 相关联的数据,不仅可以在组件内使用,还可以在不同组件层级间传递,比如父子组件之间、爷孙组件之间,也可以是应用全局范围内的传递,还可以是跨设备传递。另外,从数据的传递形式来看,可分为只读的单向传递和可变更的双向传递。开发者可以灵活的利用这些能力来实现数据和 UI 的联动。
- 动态构建 UI 元素 提供了动态构建 UI 元素的能力,不仅可以自定义组件内部的 UI 结构,还可以复用组件样式,扩展原生组件。
- 渲染控制 提供了渲染控制的能力。条件渲染可根据应用的不同状态,渲染对应状态下的 UI 内容。循环渲染可从数据源中迭代获取数据,并在每次迭代过程中创建相应的组件。
- 使用限制与扩展 在使用过程中存在限制与约束,同时也扩展了双向绑定等能力。
下面我们以一个具体的示例来说明 Minix 框架中 UI 界面的基本组成。如下图所示的代码示例,UI 界面包含两段文本、一条分割线和一个按钮,当开发者点击按钮时,文本内容会从'Hello World'变为 'Hello ArkUI'。
上述示例中所包含的声明式 UI 开发范式的基本组成说明如下:
- 装饰器: 用于装饰类、结构、方法以及变量,赋予其特殊的含义,如上述示例中@Entry、@Component 和@State 都是装饰器。 具体而言,@Component 表示这是个自定义组件;@Entry 则表示这是个入口组件;@State 表示这是组件中的状态变量,这个变量变化会触发 UI 刷新。
- 自定义组件:可复用的 UI 单元,可组合其他组件,如上述被@Component 装饰的 struct Hello。
- UI 描述:声明式的方法来描述 UI 的结构,例如 build()方法中的代码块。
- 内置组件:框架中默认内置的基础组件、容器组件、媒体组件、绘制组件、画布组件等各种组件,开发者可以直接调用,如示例中的 Column、Text、Divider、Button 等。
- 属性方法:用于组件属性的配置,如 fontSize()、width()、height()、color()等,可通过链式调用的方式设置多项属性。
- 事件方法:用于添加组件对事件的响应逻辑,如跟随在 Button 后面的 onClick(),同样可以通过链式调用的方式设置多个事件响应逻辑。