Harmony OS Next ##Ark Ts ##教育
本文适用于教育科普行业进行学习,有错误之处请指出我会修改。
🌼 基础认知三连击 🌼
1️⃣ UI是什么?
👉 就是你手机里每个页面的颜值担当!📱
✔️ 多页面独立管理 → 文件不打架
✔️ 路由API轻松跳转 → 页面秒切换
✨ 就像搭地铁换乘一样方便~
2️⃣ 组件是什么?
👉 UI界的乐高积木!🧩
✅ 基础款:按钮/文本/进度条
✅ 高级款:列表/网格/单选
💡 组合使用就能搭出专属界面!
3️⃣ 两大开发模式:
⠀⭕ 声明式开发(ArkTS)⠀⭕ 类Web开发(HML+CSS+JS)
⠀👇 超直观对比表👇
🌈【开发模式PK赛】🌈
声明式开发 | 类Web开发 | |
---|---|---|
上手难度 | 🚀 简单直白 | 🌐 需Web基础 |
性能表现 | ⚡ 闪电速度(省内存20%+) | 🐢 传统渲染 |
发展趋势 | 🏆 官方主推 | 🛠️ 兼容支持 |
适合场景 | ✅ 全新项目 | ✅ Web应用改造 |
💡 为什么我们都Pick声明式?💡
1️⃣ 说人话的编程
👉 直接描述你想要的效果,不用管底层怎么画出来!
(就像对Siri说"我要喝咖啡"☕,不用教它怎么煮)
2️⃣ 性能开挂三连
✔️ 精简渲染链路 🚫 砍掉DOM管理
✔️ 内存占用更少 📉 运行更流畅
✔️ 动画效果丝滑 🎬 堪比电影级
3️⃣ 未来趋势预警
🚨 官方持续加料中 → 新功能优先支持
🎁 生态工具全家桶 → 开发效率翻倍
📋【选模式速查表】📋
✅ 选声明式当:
▪️ 开发新APP(特别是Stage模型)
▪️ 要做高端动效
▪️ 重视长期维护
✅ 选类Web当:
▪️ 改造现有Web应用
▪️ 需要兼容FA模型
▪️ 团队有Web开发老司机
💡 小贴士:
- 卡片开发两头甜 → 声明式/类Web都能玩
- FA模型要小心 → 卡片只能用类Web
- Stage模型是亲儿子 → 功能更新第一梯队
🎉【ArkTS代码魔法课堂】5分钟get组件变形术!✨
🌟 先看炫酷效果 🌟
👉 点击前:"Hello World" 👋
👉 点击后:"Hello ArkUI" 🚀
(脑补效果图:左边🤖机器人举手提问,右边🌈彩虹文字变身)
🌈【代码解剖室】ArkTS四大核心秘籍 🌈
🔮 代码魔法三件套 🔮
1️⃣ @Component → 组件身份证 🆔
2️⃣ @Entry → 程序入口钥匙 🔑
3️⃣ @State → 状态触发器 💥
✨ 三连击就能召唤UI更新!
🏗️【UI搭建指南】🏗️
⠀⭕ 装修队(UI描述) ⭕
✔️ build()里写布局 → 像搭乐高一样简单
✔️ Column竖排 → Text文字 → Button按钮
💡 示例代码:
build() {
Column() {
Text(this.message) 📝
Button('点我变身') 💥
}
}
⠀🔀 组件关系网 🔀
✅ 自定义组件:开发者自创的VIP组件(被@Component装饰)
✅ 系统组件:官方提供的现成积木(直接调用Column/Text等)
🎨【属性化妆间】🎨
链式调用超方便!
Text('Hello')
.fontSize(20) 📏
.width('100%') 📐
.backgroundColor('#F0F0F0') 🎨
💣【事件弹药库】💣
Button('点击')
.onClick(() => {
this.message = '变身!' 💫
})
🚀【语法外挂全家桶】🚀
语法糖 | 超能力 | 使用场景 |
---|---|---|
@Builder | 创建可复用的UI代码块 | 重复出现的布局 |
@Styles | 定义组件皮肤样式 | 统一按钮/文字风格 |
stateStyles | 根据状态变装 | 按钮按下时变色 |
@BuilderParam | 动态插入UI片段 | 构建可配置化组件 |
⚠️ 重要注意事项 ⚠️
1️⃣ 变量命名禁忌 → 不能和系统属性撞名!
2️⃣ @State变量 → 必须用private保护
3️⃣ 链式调用 → 顺序影响最终效果
💡 小贴士:
✔️ 先写结构再加样式
✔️ 复杂组件拆分成多个@Builder
✔️ 多用@Styles保持样式统一
试着复制示例代码,亲手体验按钮点亮的魔法吧!✨🚀
🎨【ArkTS组件全攻略】手把手教你玩转UI搭建!✨
🌟 组件诞生记 🌟
⠀🛠️ 两种创建姿势:
1️⃣ 无参组件 → 像泡面一样简单!
Column() {
Text('直接开吃') // 🍜
Divider() // 不需要任何调料
Text('真香~')
}
2️⃣ 有参组件 → 像定制奶茶!
// 必选参数 → 珍珠奶茶必须加珍珠
Image('https://奶茶店/波霸.jpg') 🧋
// 可选参数 → 甜度自由选择
Text() // 默认甜度
Text('全糖战士') // 🍬
Text($r('app.string.少糖')) // 多语言适配
🌈 参数玩法大全 🌈
参数类型 | 示例 | 效果 |
---|---|---|
直接传值 | Text('Hello') | 直球选手⚽ |
资源引用 | Text($r('app.string.title')) | 多语言达人🌐 |
变量赋值 | Image(this.imgPath) | 动态更新🔄 |
表达式运算 | Text( 计数: ${count}) | 实时计算🧮 |
🎨 属性化妆间 🎨
⠀💄 美颜三连:
Text('我要变美')
.fontSize(24) // 📏 字体加量
.fontColor(Color.Red) // 🎨 番茄色号
.fontWeight(FontWeight.Bold) // 💪 加粗猛男
💡 属性赋值技巧:
类型 | 示例 | 特点 |
---|---|---|
常量赋值 | .width(100) | 简单直接👍 |
变量传递 | .fontSize(this.textSize) | 动态调整🎚️ |
条件表达式 | .height(count%2 ? 100 : 200) | 智能响应🤖 |
⚡ 事件触发器 ⚡
⠀🎮 推荐玩法 → 箭头函数:
Button('点赞')
.onClick(() => {
this.likes += 1; // 👍 立即生效
this.showHeart = true; // 💖 爱心暴击
})
⚠️ 避坑指南:
// ❌ 错误示范(this指向会迷路)
Button('危险操作')
.onClick(function(){
this.counter++ // 这里的this可能不是你想要的!
})
// ✅ 正确姿势(箭头函数保平安)
Button('安全操作')
.onClick(() => {
this.counter += 2 // 🛡️ this永远正确
})
👪 组件家族树 👪
⠀🏠 容器组件育儿指南:
Column() { // 📦 垂直育儿袋
Text('老大').fontSize(30) // 👦
Divider() // 👾 分割线怪兽
Row() { // ➡️ 水平排列
Image('baby.jpg').width(50) // 👶
Button('喂奶').onClick(this.feed) // 🍼
}
}
🌟 终极秘籍 🌟
1️⃣ 链式调用要换行 → 代码更清爽
2️⃣ 复杂逻辑用Builder → 像搭积木一样方便
3️⃣ 容器嵌套不过3层 → 拒绝俄罗斯套娃
4️⃣ 多用枚举类型 → 代码更专业
.fontColor(Color.Red) // 🚥 官方色卡更安全
💡 代码风格小贴士:
✔️ 属性方法统一缩进
✔️ 事件处理集中管理
✔️ 复杂组件拆分成多个@Builder
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。