接觸HarmonyOS開發第一課的這段時間,是一段從陌生到熟悉、從理論到實踐的紮實探索之旅。作為一名對移動開發充滿好奇的學習者,這門課程讓我真正走進了鴻蒙系統的開發世界,不僅掌握了基礎技能,更對分佈式開發的理念有了深刻認知。
下面我將按照課程章節對所學內容進行分享,並附代碼案例:
學習路徑1:HarmonyOS介紹
課程開篇的HarmonyOS介紹,為我搭建了系統的知識框架。從前只知道鴻蒙是國產操作系統,通過學習才清晰瞭解其“分佈式架構”“一次開發多端部署”的核心特點,以及“以用户為中心”“軟硬件協同”“生態共享”三大開發理念。老師提到的賦能套件資源和問題求助渠道,更讓我感受到鴻蒙生態的開放性,為後續學習掃除了後顧之憂,也讓我明白開發不是孤軍奮戰,而是有整個生態體系的支撐。
代碼案例(獲取設備信息,體現分佈式特性):
typescript
import device from '@ohos.device';
// 獲取當前設備信息,瞭解分佈式環境下的設備標識
async function getDeviceInfo() {
try {
const deviceInfo = await device.getInfo();
console.log(`設備名稱:${deviceInfo.deviceName},設備型號:${deviceInfo.model}`);
} catch (err) {
console.error('獲取設備信息失敗:', err);
}
}
getDeviceInfo();
學習路徑2:DevEco Studio的使用
DevEco Studio的實操學習是最具成就感的環節。從下載安裝到配置環境,每一步都充滿新鮮感,當成功運行出第一個鴻蒙應用時,那種從0到1的突破感難以言喻。看似簡單的操作,實則藏着不少細節,比如模擬器的調試、項目結構的解讀,讓我深刻體會到“工欲善其事,必先利其器”,熟練使用開發工具是做好應用開發的基礎。
代碼案例(第一個Hello World應用頁面):
typescript
@Entry
@Component
struct HelloHarmony {
build() {
Row() {
Column() {
Text('Hello HarmonyOS!')
.fontSize(30)
.fontWeight(FontWeight.Bold)
}
.width('100%')
}
.height('100%')
}
}
學習路徑3:ArkTS語法介紹
ArkTS語法的學習顛覆了我對編程語言的固有認知。它基於TS擴展,卻更貼近自然語義,簡潔的語法結構讓開發效率大幅提升。從變量定義到函數編寫,從狀態管理到組件複用,每一個知識點都需要結合實例反覆琢磨。剛開始對聲明式開發範式有些陌生,但通過多次練習,逐漸掌握了“描述UI結構+綁定數據邏輯”的開發思路,感受到這種方式帶來的便捷性。
代碼案例(ArkTS狀態管理與基礎語法):
typescript
@Entry
@Component
struct ArkTSDemo {
// 聲明響應式狀態變量
@State count: number = 0;
// 自定義函數
addCount() {
this.count++;
}
build() {
Column() {
Text(`當前計數:${this.count}`)
.fontSize(24)
Button('點擊加1')
.onClick(() => this.addCount())
.margin({ top: 20 })
}
.width('100%')
.padding(30)
}
}
學習路徑4:從簡單的頁面開始
頁面構建的學習讓我一步步解鎖了鴻蒙應用的可視化能力。從ArkUI框架的基礎概念入手,先掌握Text、Button等基礎組件的使用,再學習Flex、Column等常用容器的佈局邏輯,簡單頁面的搭建讓我建立了信心。每一個組件的位置、佈局方式都需要精準把控,才能呈現出整潔的頁面效果。
代碼案例(基礎組件與容器構建簡單頁面):
typescript
@Entry
@Component
struct SimplePage {
build() {
// 垂直佈局容器
Column() {
Text('個人信息')
.fontSize(28)
.fontWeight(FontWeight.Bold)
.margin({ bottom: 30 })
// 水平佈局容器
Flex({ justifyContent: FlexAlign.Start, alignItems: ItemAlign.Center }) {
Text('姓名:')
.fontSize(20)
Text('鴻蒙開發者')
.fontSize(20)
.marginLeft(10)
}
Flex({ justifyContent: FlexAlign.Start, alignItems: ItemAlign.Center, marginTop: 20 }) {
Text('職業:')
.fontSize(20)
Text('移動應用開發')
.fontSize(20)
.marginLeft(10)
}
}
.width('100%')
.padding(40)
}
}
學習路徑5:構建更加豐富的頁面
進階到豐富頁面構建時,複雜組件的組合使用、樣式的精細調整,讓我明白UI開發不僅要實現功能,更要兼顧用户體驗。通過Image組件展示圖片、List組件呈現列表數據,再搭配樣式美化,讓頁面從單調變得生動,也學會了根據需求靈活組合不同組件,提升頁面的交互感和視覺效果。
代碼案例(常用組件構建豐富頁面):
typescript
@Entry
@Component
struct RichPage {
// 列表數據
private listData: string[] = ['首頁', '分類', '我的', '設置', '消息'];
build() {
Column() {
// 圖片組件
Image($r('app.media.logo')) // 需在media目錄放置logo圖片
.width(150)
.height(150)
.objectFit(ImageFit.Contain)
.margin({ bottom: 30 })
// 列表組件
List() {
ForEach(this.listData, (item) => {
ListItem() {
Text(item)
.fontSize(22)
.width('100%')
.padding(20)
}
})
}
.width('100%')
}
.width('100%')
.padding(40)
.backgroundColor('#f5f5f5')
}
}
學習路徑6:應用程序框架基礎
應用程序框架基礎的學習,讓我對應用的完整生命週期有了全面理解。從應用入口的配置到用户交互的響應,從onCreate到onDestroy的生命週期階段,每一個環節都關乎應用的穩定運行。通過監聽生命週期變化,能更好地管理應用資源,確保用户操作流暢,也明白了開發一個穩定的應用需要兼顧邏輯完整性和生命週期管控。
代碼案例(應用生命週期與頁面路由):
typescript
// app.ets 應用入口生命週期
export default class MyApplication extends Ability {
onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
console.log('應用創建');
}
onDestroy(): void {
console.log('應用銷燬');
}
}
// 頁面路由示例(需導入router模塊)
import router from '@ohos.router';
@Entry
@Component
struct LifeCycleDemo {
build() {
Column() {
Text('生命週期演示')
.fontSize(26)
Button('跳轉到新頁面')
.onClick(() => {
router.pushUrl({ url: 'pages/SecondPage' })
})
.marginTop(20)
}
.width('100%')
.padding(30)
}
// 頁面生命週期
onPageShow() {
console.log('當前頁面顯示');
}
onPageHide() {
console.log('當前頁面隱藏');
}
}
學習路徑7:從網絡獲取數據
網絡數據獲取的學習,打通了應用與外部數據交互的通道。瞭解如何訂閲網絡狀態、使用HTTP請求數據,讓應用不再侷限於本地靜態內容。當成功從接口獲取數據並展示在頁面上時,真切感受到開發的實用性——應用能實時對接網絡資源,實現動態更新,這也是實際開發中不可或缺的核心功能。
代碼案例(HTTP獲取網絡數據):
typescript
import http from '@ohos.net.http';
import ResponseCode from '@ohos.net.http/lib/enums/ResponseCode';
@Entry
@Component
struct NetworkDemo {
@State data: string = '加載中...';
async fetchData() {
// 創建HTTP請求對象
let httpRequest = http.createHttp();
try {
// 發送GET請求
let response = await httpRequest.request(
'https://jsonplaceholder.typicode.com/todos/1',
{ method: http.RequestMethod.GET }
);
if (response.responseCode === ResponseCode.OK) {
this.data = JSON.stringify(JSON.parse(response.result.toString()), null, 2);
} else {
this.data = '請求失敗';
}
} catch (err) {
this.data = '網絡錯誤';
console.error('請求異常:', err);
} finally {
httpRequest.destroy(); // 銷燬請求對象
}
}
build() {
Column() {
Button('獲取網絡數據')
.onClick(() => this.fetchData())
.marginBottom(20)
Text(this.data)
.fontSize(16)
.whiteSpace(WhiteSpace.PreWrap)
}
.width('100%')
.padding(30)
}
}
學習路徑8:保存應用數據
本地數據存儲的學習,讓應用具備了數據持久化能力。通過Preferences存儲應用配置信息,即使關閉應用再重新打開,數據也不會丟失,這極大提升了用户體驗。掌握簡單數據的存儲與讀取方法,能滿足應用中常見的配置保存需求,讓開發的應用更具實用性和連貫性。
這門課程以循序漸進的路徑引導學習者,每個知識點都搭配實操案例,讓理論與實踐緊密結合,無論是無經驗的新手還是有基礎的開發者,都能穩步提升。通過這段學習,我不僅掌握了鴻蒙開發的基礎技能,更培養了“從用户需求出發,用技術解決問題”的思維。未來,我會繼續深入學習鴻蒙生態的更多知識,嘗試開發更復雜的應用,在國產操作系統的發展浪潮中,貢獻自己的一份力量。這門課程不是終點,而是我鴻蒙開發之路的起點,踏實走好每一步,才能在開發的道路上走得更遠更穩。
如果你也想加入這場內容生動有趣的學習,做好入門第一課,歡迎加入班級學習,課程鏈接https://developer.huawei.com/consumer/cn/training/classDetail/315625b54f8c4bf28f91a0d048ee00ac?type=1%3Fha_source%3Dhmosclass-51cto&ha_sourceId=89000443