一、引言

HarmonyOS NEXT(鸿蒙 5.0+)标志着华为彻底告别 Android 兼容时代,迎来了纯自研操作系统的新纪元。对于开发者而言,这意味着:

  • 不再需要关心 Android 兼容性
  • 全新的 ArkTS 语言 + ArkUI 框架 成为开发主航道
  • 分布式AI 融合全场景 成为原生优势

截至 2026 年,HarmonyOS 终端设备数已突破 6000 万,覆盖手机、平板、智慧屏、车机、PC 等全场景。原生开发不再是“备选”,而是通往鸿蒙生态的唯一入口


二、鸿蒙原生开发技术栈全景

┌─────────────────────────────────────────┐
│              应用层 (HAP/APP)             │
├─────────────────────────────────────────┤
│  ArkTS 语言   │  声明式 UI  (ArkUI)       │
├─────────────────────────────────────────┤
│  Stage 应用模型 │  生命周期  │  路由       │
├─────────────────────────────────────────┤
│  API 框架 │  NAPI  │ 元能力 │ 分布式能力  │
├─────────────────────────────────────────┤
│  ArkCompiler 编译器  │  方舟运行时        │
├─────────────────────────────────────────┤
│  HarmonyOS 内核  │  驱动  │  安全         │
└─────────────────────────────────────────┘
层次 技术 说明
语言 ArkTS 基于 TypeScript 扩展的声明式编程语言
UI 框架 ArkUI 方舟 UI 框架,声明式、跨设备一致体验
应用模型 Stage 模型 统一的应用开发模型,替代 FA 模型
编译器 ArkCompiler 方舟编译器,AOT+JIT 混合编译
运行时 方舟运行时 高性能运行时环境
包管理 ohpm OpenHarmony 包管理器
IDE DevEco Studio 官方 IDE,基于 IntelliJ

三、ArkTS 语言:鸿蒙开发的基石

3.1 什么是 ArkTS

ArkTS 是华为基于 TypeScript 扩展而来的声明式编程语言,是鸿蒙生态的首选开发语言。它在 TypeScript 的基础上增加了:

  • 声明式 UI 描述
  • 状态管理装饰器(@State@Prop@Link 等)
  • 自定义组件体系
  • 渲染控制(条件渲染、循环渲染)
  • 编译时类型校验

3.2 基础语法结构

@Entry          // 页面入口
@Component      // 声明组件
struct Index {
  @State message: string = '你好,鸿蒙!'

  build() {     // 构建 UI 树
    Column() {
      Text(this.message)
        .fontSize(30)
        .fontColor(Color.Red)
        .fontWeight(FontWeight.Bold)

      Button('点击改变')
        .onClick(() => {
          this.message = 'Hello HarmonyOS!'
        })
    }
    .width('100%')
    .height('100%')
    .justifyContent(FlexAlign.Center)
  }
}

3.3 核心装饰器

装饰器 用途 说明
@Component 组件声明 标记一个 struct 为 UI 组件
@Entry 入口页面 标记当前组件为页面入口
@State 组件内部状态 状态变化自动触发 UI 更新
@Prop 父→子单向数据 接收父组件传递的数据
@Link 父子双向同步 父组件和子组件状态联动
@Provide/@Consume 跨层级传递 祖先→后代状态同步
@Watch 状态监听 监听 @State 变化并触发回调
@Builder 构建函数 抽离可复用的 UI 构建逻辑
@Styles 样式复用 定义可复用的样式方法

3.4 渲染控制

条件渲染:

@State isLogin: boolean = false

build() {
  Column() {
    if (this.isLogin) {
      Text('欢迎回来!').fontSize(24)
    } else {
      Button('登录').onClick(() => { this.isLogin = true })
    }
  }
}

循环渲染:

@State cities: string[] = ['北京', '上海', '深圳', '广州', '武汉']

build() {
  Column() {
    ForEach(this.cities, (city: string, index: number) => {
      Text(city)
        .width('100%')
        .height(40)
        .backgroundColor(index % 2 === 0 ? '#F2F2F2' : '#FFFFFF')
    })
  }
}

四、ArkUI 框架:声明式 UI 体系

4.1 架构分层

ArkUI 采用三层架构

┌──────────────────────────────────────┐
│ 声明层 (ArkTS)                        │
│ 开发者用 @Component / @State 描述 UI  │
├──────────────────────────────────────┤
│ 中间层 (组件树 + Diff 引擎)           │
│ 每次状态变更 → 计算最小更新集          │
├──────────────────────────────────────┤
│ 渲染层 (原生渲染管线)                 │
│ Canvas / GPU / 原生控件 → 绘制        │
└──────────────────────────────────────┘

4.2 组件体系

类别 组件 说明
基础组件 Text 文本显示
Image 图片显示
Button 按钮
TextInput 文本输入框
Progress 进度条
Checkbox / Radio 复选 / 单选
容器组件 Column 垂直线性布局
Row 水平线性布局
Stack 层叠布局
Flex 弹性布局
Grid / List 网格 / 列表
Scroll 可滚动容器
Swiper 轮播容器
导航组件 Navigation 页面导航
Tab 标签页
媒体组件 Video 视频播放
Web Web 组件

4.3 链式调用与属性样式

ArkUI 采用链式函数调用风格设置样式:

Text('Hello ArkUI')
  .fontSize(28)
  .fontColor(Color.Blue)
  .fontWeight(FontWeight.Bold)
  .fontStyle(FontStyle.Italic)
  .backgroundColor(Color.Orange)
  .border({ width: 2, style: BorderStyle.Solid, color: Color.Red })
  .padding(16)
  .borderRadius(8)

4.4 事件系统

通用事件:

// 点击事件
Button('点击')
  .onClick(() => { console.log('点击了') })

// 触摸事件
Text('触摸')
  .onTouch((e: TouchEvent) => {
    if (e.type === TouchType.Down) {
      console.log('按下')
    } else if (e.type === TouchType.Up) {
      console.log('抬起')
    }
  })

// 手势事件
Image($r('app.media.icon'))
  .gesture(
    PanGesture({ direction: PanDirection.Horizontal })
      .onActionStart(() => { })
      .onActionUpdate((event: GestureEvent) => { })
  )

五、Stage 模型:应用开发的核心架构

5.1 概述

从 HarmonyOS 3.0 开始,Stage 模型成为主推的应用模型,替代了早期的 FA(Feature Ability)模型。

维度 FA 模型(旧) Stage 模型(新)
复杂度 简单,适合轻量场景 面向复杂应用
组件复用 有限 支持多 Module 复用
后台能力 Service + Data 能力增强
生命周期 相对简单 更精细的生命周期管理
安全 权限模型单一 细粒度权限控制

5.2 核心概念

┌──────────────────────────────────────┐
│               UIAbility               │  ← 应用入口,有界面
├──────────────────────────────────────┤
│  ┌────────┐  ┌────────┐  ┌────────┐ │
│  │ Page A │  │ Page B │  │ Page C │ │  ← 页面栈
│  └────────┘  └────────┘  └────────┘ │
├──────────────────────────────────────┤
│          ServiceExtension            │  ← 后台服务
├──────────────────────────────────────┤
│          DataShareExtension          │  ← 数据共享
└──────────────────────────────────────┘
  • UIAbility:应用入口,管理页面生命周期和窗口
  • ExtensionAbility:扩展能力(Service/Data/Call 等)
  • Module:功能模块,可独立编译
  • Context:运行上下文,获取资源、权限等

5.3 生命周期

export default class MainAbility extends UIAbility {
  onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) {
    // 应用创建时调用
  }

  onWindowStageCreate(windowStage: window.WindowStage) {
    // 窗口创建时加载页面
    windowStage.loadContent('pages/Index')
  }

  onForeground(): void {
    // 应用进入前台
  }

  onBackground(): void {
    // 应用进入后台
  }

  onDestroy(): void {
    // 应用销毁
  }
}

六、DevEco Studio:官方 IDE 体验

6.1 核心特性

特性 说明
多语言支持 ArkTS、JS、TS、C/C++
预览器 实时预览 UI 效果
模拟器 手机、平板、智慧屏等多设备模拟
调试工具 断点调试、Profiler、HiLog
构建系统 Hvigor(类 Gradle)
包管理 ohpm 集成
云开发 DevEco Service 提供云上编译

6.2 开发流程

[新建工程] → [选择 Empty Ability 模板]
    ↓
[编写 ArkTS UI 代码]
    ↓ (实时预览)
[添加业务逻辑 + 状态管理]
    ↓
[配置 Module / oh-package.json5]
    ↓
[Hvigor 构建 → HAP/APP 包]
    ↓
[真机 / 模拟器调试]
    ↓
[签名 → 上架 AppGallery]

七、实战:从零构建一个 Todo 应用

// TodoItem.ets — 单个待办组件
@Component
export default struct TodoItem {
  @State title: string = ''
  @State done: boolean = false

  build() {
    Column({ space: 8 }) {
      Row({ space: 12 }) {
        Text(this.done ? '✅' : '⬜')
          .fontSize(22)
          .onClick(() => {
            this.done = !this.done
          })

        Text(this.title || '未命名待办')
          .fontSize(18)
          .decoration({ type: this.done ? TextDecorationType.LineThrough : TextDecorationType.None })
      }
      .width('100%')

      Row({ space: 8 }) {
        TextInput({ placeholder: '请输入待办内容' })
          .width('70%')
          .onChange((value: string) => {
            this.title = value
          })

        Button('保存')
          .onClick(() => {
            console.info('保存待办:', this.title)
          })
      }
    }
    .padding(12)
    .borderRadius(8)
    .backgroundColor('#F5F5F5')
  }
}
// Index.ets — 主页面
import TodoItem from './TodoItem'

@Entry
@Component
struct Index {
  @State todoList: string[] = ['学习 ArkTS', '理解 ArkUI', '上架鸿蒙应用']

  build() {
    Column() {
      // 标题
      Text('我的待办')
        .fontSize(28)
        .fontWeight(FontWeight.Bold)
        .margin({ bottom: 20 })

      // 列表
      List({ space: 12 }) {
        ForEach(this.todoList, (item: string) => {
          ListItem() {
            TodoItem({ title: item })
          }
        })
      }
      .width('100%')
      .layoutWeight(1)
    }
    .padding(16)
    .width('100%')
    .height('100%')
  }
}

八、性能调优与最佳实践

8.1 性能原则

原则 说明
数据驱动 用 @State 管理可变数据,避免直接操作 DOM
按需更新 合理划分组件粒度,避免大组件整体重建
懒加载 长列表使用 LazyForEach + 分页
资源复用 图片缓存、组件复用

8.2 常见优化点

// ✅ 好的做法:合理拆分组件
@Component
struct ExpensiveItem {
  @Prop data: DataItem
  build() { /* ... */ }
}

// ❌ 不好的做法:整个列表用一个组件渲染
build() {
  Column() {
    ForEach(this.bigList, () => { /* 所有逻辑写在这里 */ })
  }
}

8.3 项目结构建议

my-app/
├── entry/                  # 主模块
│   ├── src/main/
│   │   ├── ets/
│   │   │   ├── pages/      # 页面
│   │   │   ├── components/ # 可复用组件
│   │   │   ├── model/      # 数据模型
│   │   │   ├── common/     # 工具函数/常量
│   │   │   └── App.ets     # 应用入口
│   │   ├── resources/      # 资源文件
│   │   └── module.json5    # 模块配置
│   └── oh-package.json5    # 依赖声明
├── library/                # 共享模块(HAR/HSP)
│   └── src/main/ets/
├── oh-package.json5        # 根依赖
└── hvigorfile.ts           # 构建配置

九、原生开发 vs 跨平台开发

维度 原生 ArkTS/ArkUI 跨平台方案 (ArkUI-X/uni-app)
性能 ⭐⭐⭐⭐⭐ 最佳 ⭐⭐⭐⭐ 略低
鸿蒙能力调用 完整 有限(需桥接)
分布式能力 原生支持 不支持
AI 集成 完整(MindSpore 等) 有限
开发效率 中等 较高
多端覆盖 仅鸿蒙 Android + iOS + 鸿蒙

建议:

  • 纯鸿蒙应用 → 原生开发(最佳性能、最全能力)
  • 需要覆盖多端 → 跨平台方案(降低维护成本)

十、学习路线图

第一阶段:基础入门(1-2 周)
├── 熟悉 ArkTS 基础语法(变量、函数、类)
├── 掌握 ArkUI 核心组件(Text、Button、Column、Row)
├── 理解 @State 状态管理
└── 在 DevEco Studio 上跑通 Hello World

第二阶段:核心进阶(2-4 周)
├── 深入学习状态管理(@Prop / @Link / @Provide)
├── 掌握 List / Grid / Scroll 等容器组件
├── 学习页面路由与 Navigation
├── 理解 Stage 模型与生命周期
└── 接入 ohpm 三方库

第三阶段:实战开发(4-8 周)
├── 开发一个完整应用(如 Todo / 记账 / 阅读器)
├── 掌握网络请求(@ohos/axios)
├── 学习本地存储(Preferences / 数据库)
├── 接入系统 API(相机 / 位置 / 传感器)
└── 发布到 AppGallery

第四阶段:高阶深入(长期)
├── NAPI C/C++ 插件开发
├── 分布式能力(跨设备迁移 / 数据流转)
├── AI 集成(MindSpore Lite)
├── 性能调优与 Profiler
└── 贡献开源鸿蒙社区

十一、生态展望

时间 里程碑
2024 HarmonyOS NEXT 发布,彻底告别 Android
2025 原生应用生态初步形成(Top 5000 应用)
2026 鸿蒙终端 6000 万+,生态进入成熟期
2027+ ArkTS 生态接近 TypeScript 丰富度;鸿蒙 PC 普及

十二、写在最后

鸿蒙原生开发是通往未来操作系统世界的大门

  • 对新手:ArkTS 基于 TypeScript,前端/JS 开发者可以极低门槛上手
  • 对 Android 开发者:声明式 UI 范式(类似 Jetpack Compose/SwiftUI)值得投入
  • 对企业:鸿蒙原生是进入政企、金融、IoT 市场的入场券

入门三步:装 DevEco Studio → 写一个 Hello World → 提交你的第一个 HAP。


参考资源:

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐