ArkTS 第一课:从零开始学鸿蒙应用开发

您好,我是ID: 熊猫钓鱼!
十余年深耕技术一线,我始终相信:优秀的开发如同垂钓——既要对技术生态的「水域」有深邃理解,也要对问题本质的「鱼汛」保持敏锐直觉。从架构设计到性能调优,从技术选型到团队协作,我专注在恰当的时机,用最合适的技术钓起最优雅的解决方案。
目录
课前准备:认识我们的新朋友 ArkTS
第一站:准备开发环境
1.1 安装必要软件
1.2 创建第一个项目
1.3 认识项目结构
第二站:ArkTS 基础语法入门
2.1 变量和数据类型
2.2 函数的使用
2.3 接口和自定义类型
第三站:声明式 UI 基础
3.1 什么是声明式 UI?
3.2 构建第一个界面
3.3 常用基础组件
学习建议:
下一步学习方向:
课前准备:认识我们的新朋友 ArkTS
欢迎来到 ArkTS 的世界!如果你是第一次接触鸿蒙应用开发,可能会对这个新语言感到既期待又紧张。别担心,让我用一个简单的比喻开始:如果说 JavaScript 是你熟悉的老朋友,那么 TypeScript 就是这个朋友的升级版,而 ArkTS 则是专门为鸿蒙系统量身定制的"超级战衣"。
ArkTS 是基于 TypeScript 的,但它不是简单的复制,而是针对鸿蒙系统的特点进行了深度优化。想象一下,你原来会 JavaScript,这就好像你已经会骑自行车了,现在要学习骑电动车——很多基本技能是相通的,只是增加了一些新的操作方式。
让我们先来看看今天的学习路线图:
-
搭建开发环境——准备我们的"工作室"
-
认识 ArkTS 的基本组成——学习"字母和单词"
-
掌握声明式 UI——了解如何"描述界面"
-
学习组件和装饰器——组装我们的"积木块"
-
实战练习——亲手制作第一个小应用
第一站:准备开发环境
1.1 安装必要软件
在开始写代码之前,我们需要准备好开发工具。就像木匠需要锯子和锤子一样,我们需要:
DevEco Studio:这是官方推荐的开发工具,你可以把它理解为鸿蒙开发的"专属工作室"。它基于 IntelliJ IDEA 开发,所以如果你之前用过 Android Studio 或其他 JetBrains 的产品,会感到非常熟悉。
安装步骤很简单:
-
访问华为开发者联盟官网
-
找到 DevEco Studio 下载页面
-
选择适合你操作系统的版本(支持 Windows、macOS)
-
按照安装向导完成安装
Node.js:ArkTS 的编译需要 Node.js 环境,建议安装最新的 LTS 版本。
1.2 创建第一个项目
安装完成后,让我们创建第一个 ArkTS 项目:
-
打开 DevEco Studio
-
选择"Create New Project"
-
选择"Empty Ability"模板
-
配置项目信息:
-
Project Name: MyFirstArkTSApp
-
Package Name: com.example.myfirstarktsapp
-
Save Location: 选择你喜欢的目录
-
Language: 确保选择 ArkTS
-
-
点击"Finish"等待项目创建完成
这个过程可能需要几分钟,因为 IDE 需要下载相关的依赖包。趁这个时间,我们来了解一下项目结构。
1.3 认识项目结构
创建完成后,你会看到这样的目录结构:
MyFirstArkTSApp/
├── entry/
│ ├── src/
│ │ ├── main/
│ │ │ ├── ets/ # ArkTS 代码目录
│ │ │ │ ├── pages/ # 页面目录
│ │ │ │ │ └── index.ets # 主页面
│ │ │ │ └── app.ets # 应用入口
│ │ │ └── resources/ # 资源文件
│ │ └── ohosTest/ # 测试代码
├── build-profile.json # 构建配置
└── package.json # 项目配置
现在,请找到 entry/src/main/ets/pages/index.ets 文件,这就是我们今天主要修改的文件。
第二站:ArkTS 基础语法入门
2.1 变量和数据类型
让我们从最基础的变量开始。在 ArkTS 中,我们使用 let 和 const 来声明变量:
// 字符串类型
let userName: string = "小明"
const appName: string = "我的第一个应用"// 数字类型
let userAge: number = 25
let price: number = 99.9// 布尔类型
let isLogin: boolean = true
const hasPermission: boolean = false// 数组类型
let hobbies: string[] = ["读书", "运动", "音乐"]
let scores: Array<number> = [95, 88, 92]// 任何类型 - 尽量少用,但迁移时很有帮助
let dynamicData: any = "可以是字符串"
dynamicData = 123 // 现在又变成了数字
重要概念:类型注解
你可能注意到了变量名后面的 : string、: number 等,这就是类型注解。它告诉 ArkTS 这个变量应该存储什么类型的数据。这样做的好处是:
-
在编写代码时就能发现类型错误
-
IDE 能提供更好的代码提示
-
代码更容易理解和维护
2.2 函数的使用
函数是组织代码的基本单元,在 ArkTS 中定义函数:
// 基础函数
function greet(name: string): string {return `你好, ${name}!`
}// 箭头函数 - 更简洁的写法
const add = (a: number, b: number): number => {return a + b
}// 可选参数和默认参数
function createUser(name: string, age: number, phone?: string, // 可选参数country: string = "中国" // 默认参数
): void {console.log(`用户: ${name}, 年龄: ${age}`)if (phone) {console.log(`电话: ${phone}`)}console.log(`国家: ${country}`)
}// 使用函数
const message = greet("小红") // 输出: 你好, 小红!
const result = add(5, 3) // 结果: 8
createUser("小李", 20) // 使用默认的国家参数
实践建议:刚开始时,尽量为每个函数和参数都加上类型注解,这样可以帮助你更好地理解类型系统。
2.3 接口和自定义类型
接口是 ArkTS 中非常重要的概念,它用来定义对象的形状:
// 定义用户接口
interface User {id: numbername: stringemail: stringage?: number // 可选属性readonly createTime: string // 只读属性
}// 使用接口
const currentUser: User = {id: 1,name: "张三",email: "zhangsan@example.com",createTime: "2024-01-01"
}// 这样会报错,因为 createTime 是只读的
// currentUser.createTime = "2024-01-02"// 函数使用接口类型
function printUserInfo(user: User): void {console.log(`用户: ${user.name}, 邮箱: ${user.email}`)
}
理解接口:你可以把接口理解为一份"合同",它规定了对象必须包含哪些属性,每个属性应该是什么类型。这样就能保证代码的一致性。
第三站:声明式 UI 基础
3.1 什么是声明式 UI?
这是 ArkTS 与传统开发最大的不同!让我们用一个对比来理解:
命令式 UI(传统方式):
// 伪代码,表示传统方式
const button = document.createElement('button')
button.textContent = '点击我'
button.onclick = function() {button.textContent = '已点击'
}
document.body.appendChild(button)
声明式 UI(ArkTS 方式):
// 关注的是"应该显示什么",而不是"如何显示"
@Entry
@Component
struct MyComponent {@State buttonText: string = '点击我'build() {Button(this.buttonText).onClick(() => {this.buttonText = '已点击'})}
}
声明式 UI 让我们专注于描述界面"应该是什么样子",而不用关心具体的操作步骤。
3.2 构建第一个界面
让我们动手修改 index.ets 文件:
@Entry
@Component
struct Index {@State message: string = 'Hello World'build() {Column({ space: 20 }) {Text(this.message).fontSize(30).fontWeight(FontWeight.Bold).fontColor('#007DFF')Button('点击改变文字').width('80%').height(50).backgroundColor('#007DFF').fontColor(Color.White).onClick(() => {this.message = '欢迎学习ArkTS!'})}.width('100%').height('100%').justifyContent(FlexAlign.Center).padding(20)}
}
让我们分析一下这段代码:
-
@Entry:表示这是一个页面入口组件 -
@Component:表示这是一个自定义组件 -
@State:表示这个数据是状态数据,当它改变时界面会自动更新 -
build():构建组件UI的方法 -
Column:纵向排列的容器 -
Text:文本组件 -
Button:按钮组件
试试看:点击预览器中的按钮,你会发现文字真的改变了!这就是声明式 UI 的魔力——数据变化,界面自动更新。
3.3 常用基础组件
ArkTS 提供了丰富的基础组件,我们先学习最常用的几个:
@Entry
@Component
struct BasicComponents {@State inputText: string = ''build() {Column({ space: 15 }) {// 文本显示Text('这是一个文本组件').fontSize(20).fontColor('#333333')// 按钮Button('普通按钮').width('60%').onClick(() => {console.log('按钮被点击了')})// 文本输入框TextInput({ placeholder: '请输入内容' }).width('80%').height(40).onChange((value: string) => {this.inputText = value})// 显示输入的内容Text(`你输入了: ${this.inputText}`).fontSize(16).fontColor('#666666')// 图片显示Image($r('app.media.icon')).width(100).height(100)}.width('100%').height('100%').justifyContent(FlexAlign.Center).padding(20)}
}
学习建议:
循序渐进:不要急于学习高级特性,先把今天的基础概念彻底理解。可以多做一些小练习,比如:
-
创建一个计数器应用
-
制作一个简单的待办列表
-
尝试改变组件的样式和布局
多动手实践:编程是实践性很强的技能,只看不练是很难掌握的。遇到问题时,先自己思考尝试解决,然后再查看文档或寻求帮助。
善用官方资源:华为官方文档是最准确的学习资料,遇到概念不理解时,可以多查阅文档。
下一步学习方向:
当你熟练掌握了今天的内容后,可以继续学习:
-
状态管理和组件通信
-
更复杂的装饰器:@Prop、@Link、@Watch
-
页面路由和导航
-
网络请求和数据存储
-
动画和手势处理
-
自定义组件的高级用法
记住,学习编程就像学习一门新语言,需要时间和练习。不要因为一开始遇到困难就放弃,每个开发者都是从第一行代码开始的。继续加油,期待看到你创造出优秀的鸿蒙应用!
