初级组件(基础单元层)
作用 :搭建界面"细胞结构",承载最基础的交互与展示功能 包含内容:
- 系统组件 :
Text(文字)、Button(按钮)、Image(图片) - 布局方式 :
Column(纵向布局)、Row(横向布局)、Stack(层叠布局) - 装饰器 :
@Component(定义组件)、@Entry(入口组件)、@State(组件内部状态)
开发者角色:
- 负责搭建基础页面框架,类似"细胞合成师"
- 通过组合基础组件实现简单功能(如静态页面、点击计数)
- 需掌握链式调用配置属性(如
.fontSize(20)、.width('100%'))
类比:
Text组件 → 细胞的DNA,承载信息传递功能Column布局 → 骨骼系统,支撑内容垂直排列@State装饰器 → 短期记忆,记录组件内部临时状态
示例场景:
less
@Entry @Component
struct BasicPage {
@State count: number = 0;
build() {
Column() {
Text(`点击次数: ${this.count}`)
Button('+1')
.onClick(() => { this.count++ })
}
}
}
中级组件(功能器官层)
作用 :构建复杂功能模块,实现数据流动与UI复用 包含内容:
- 布局扩展 :
Grid(网格布局)、List(列表)、Flex(弹性布局) - 自定义组件 :通过
@Builder封装可复用UI块 - 装饰器 :
@Prop(单向数据传递)、@Link(双向数据绑定)、@Styles(样式复用)
开发者角色:
- 负责模块化开发,类似"器官工程师"
- 设计父子组件通信逻辑(如表单数据传递)
- 需掌握响应式编程思想(数据驱动UI更新)
类比:
List布局 → 消化系统,有序处理列表数据流@Builder函数 → 肌肉组织,重复调用完成特定动作@Link装饰器 → 神经系统,实现父子组件双向控制
示例场景:
scss
// 父组件
@Component
struct ParentComp {
@State total: number = 0;
build() {
Column() {
ChildComp({ childCount: $total })
Text(`总和: ${this.total}`)
}
}
}
// 子组件
@Component
struct ChildComp {
@Link childCount: number;
build() {
Button('子组件+1')
.onClick(() => { this.childCount++ })
}
}
高级组件(系统协调层) 作用 :统筹全局架构,实现跨组件通信与性能优化 包含内容:
- 高级布局 :
RelativeContainer(相对布局)、WaterFlow(瀑布流) - 状态管理 :
@Provide/@Consume(跨层级共享)、@Observed(深度监听对象) - 能力扩展:自定义弹层、分布式组件、原子化服务
开发者角色:
- 负责系统架构设计,类似"大脑指挥官"
- 制定全局状态管理策略(如用户登录态同步)
- 需优化组件渲染性能(如使用
LazyForEach加载长列表)
类比:
@Provide/@Consume→ 血液循环系统,跨层级传递养分(数据)RelativeContainer→ 关节系统,灵活协调组件相对位置- 原子化服务 → 思维逻辑,独立运行且可组合
实战策略:
-
状态分层:
- 局部状态用
@State,跨页面用PersistentStorage - 全局共享数据使用
AppStorage
- 局部状态用
-
性能优化:
- 复杂布局层级不超过5层
- 列表滑动场景启用
cachedCount预加载
-
工程化实践:
- 使用
HAR包封装通用组件库 - 通过
ViewModel分离UI与业务逻辑
- 使用
总结对比表
| 层级 | 组件类型 | 开发者角色 | 类比模型 | 核心目标 |
|---|---|---|---|---|
| 初级 | 基础系统组件 | 细胞合成师 | 细胞与骨骼 | 搭建静态框架 |
| 中级 | 自定义功能模块 | 器官工程师 | 肌肉与神经 | 实现数据流动 |
| 高级 | 分布式服务 | 大脑指挥官 | 思维与血液循环 | 统筹全局性能 |
通过类比与融合将知识点串联起来,以应用为主体、以函数比行为、以布局为框架、以通信为神经、以组件为血肉,共同搭建软件生命体。