HarmonyOS-ArkTS開發指南:從基礎到實戰

目錄

一、基礎語法

二、聲明式 UI 開發

基本組件結構

三、狀態管理

四、生命周期鉤子

五、組件化開發

1. 創建自定義組件

2. 組件嵌套

六、事件處理

七、布局系統

八、樣式設置

九、條件渲染與列表渲染

十、異步操作

十一、路由導航

開發建議

一、基礎語法

ArkTS 是 TypeScript 的超集,所以支持所有 TypeScript 的特性,包括:

  1. 類型注解

    let name: string = "張三";
    let age: number = 25;
    let isStudent: boolean = true;
    
  2. 接口

    interface Student {id: number;name: string;score?: number;  // 可選屬性
    }
    
  3. class Animal {constructor(public name: string) {}move(distance: number = 0) {console.log(`${this.name} moved ${distance}m.`);}
    }
    
  4. 函數

    function greet(name: string): string {return `Hello, ${name}!`;
    }
    

二、聲明式 UI 開發

ArkTS 采用聲明式語法構建 UI,類似于 React 和 Vue 的 JSX。

基本組件結構

@Entry  // 應用入口組件
@Component  // 聲明為自定義組件
struct MyComponent {@State count: number = 0;  // 響應式狀態build() {  // 構建UI的方法Column() {  // 垂直布局容器Text(`Count: ${this.count}`).fontSize(30)Button('Increment').onClick(() => {this.count++;  // 狀態變化會自動更新UI})}.width('100%').height('100%')}
}

三、狀態管理

ArkTS 提供多種狀態管理方式:

  1. @State - 組件內部狀態

    @State private isActive: boolean = false;
    
  2. @Link - 父子組件雙向綁定

    // 父組件
    @State parentValue: string = "初始值";// 子組件
    @Link childValue: string;
    
  3. @Provide/@Consume - 跨組件狀態共享

    // 提供者
    @Provide theme: string = "dark";// 消費者
    @Consume theme: string;
    

四、生命周期鉤子

ArkTS 組件生命周期:

@Component
struct LifecycleDemo {aboutToAppear() {  // 組件即將顯示console.log('組件即將掛載');}aboutToDisappear() {  // 組件即將銷毀console.log('組件即將卸載');}onPageShow() {  // 頁面顯示console.log('頁面顯示');}onPageHide() {  // 頁面隱藏console.log('頁面隱藏');}
}

五、組件化開發

1. 創建自定義組件

@Component
struct CustomButton {@Prop label: string = "按鈕";@State isPressed: boolean = false;build() {Button(this.label).stateEffect(this.isPressed).onClick(() => {this.isPressed = !this.isPressed;})}
}

2. 組件嵌套

@Component
struct Card {@Prop header: string;@Prop content: string;build() {Column() {Text(this.header).fontSize(20)Divider()Text(this.content)}.borderRadius(10).padding(15)}
}

六、事件處理

ArkTS 支持多種事件類型:

Button('交互按鈕').onClick(() => {})  // 點擊.onLongPress(() => {})  // 長按.onTouch(() => {})  // 觸摸TextInput().onChange((value: string) => {})  // 輸入變化Swiper().onChange((index: number) => {})  // 滑動變化

七、布局系統

ArkTS 提供豐富的布局容器:

  1. Flex 布局

    Flex({ direction: FlexDirection.Row, justifyContent: FlexAlign.SpaceBetween }) {Text('Item1')Text('Item2')
    }
    
  2. Grid 布局

    Grid() {ForEach([1,2,3,4], (item) => {Text(`Item${item}`)})
    }
    .columnsTemplate("1fr 1fr")
    
  3. Stack 布局

    Stack() {Image('background.jpg')Text('水印')
    }
    

八、樣式設置

ArkTS 提供鏈式調用的樣式API:

Text('樣式示例').fontSize(16).fontColor(Color.White).backgroundColor('#007DFF').borderRadius(8).padding(10).margin({ top: 5, bottom: 5 }).width('90%').height(40)

九、條件渲染與列表渲染

  1. 條件渲染

    @State showDetails: boolean = false;build() {Column() {if (this.showDetails) {Text('詳細信息')}}
    }
    
  2. 列表渲染

    @State items: string[] = ['Apple', 'Banana', 'Orange'];List() {ForEach(this.items, (item, index) => {ListItem() {Text(item)}})
    }
    

十、異步操作

ArkTS 支持現代異步編程方式:

async fetchData() {try {const response = await fetch('https://api.example.com/data');const data = await response.json();this.dataList = data;} catch (error) {console.error('請求失敗:', error);}
}

十一、路由導航

ArkTS 提供完整的路由系統:

// 導航到新頁面
router.pushUrl({url: 'pages/Detail',params: { id: 123 }
});// 接收參數
aboutToAppear() {const params = router.getParams();this.id = params['id'];
}// 路由返回
router.back();

開發建議

  1. 使用 DevEco Studio 進行開發
  2. 參考官方文檔: HarmonyOS開發者官網
  3. 從簡單示例開始,逐步構建復雜應用
  4. 合理使用狀態管理,避免過度嵌套
  5. 注意性能優化,特別是列表渲染場景

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/87875.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/87875.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/87875.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

算法-Day04

今天還是給大家分享幾道題目,希望大家可以好好理解。 第一題 問題描述 小藍有一天誤入了一個混境之地。 好消息是:他誤打誤撞拿到了一張地圖,并從中獲取到以下信息: 混境之地是一個 n?m大小的矩陣,這個地圖中一共…

Git版本控制詳細資料

Git安裝基本配置 下載安裝(一路next) 打開bash終端(git專用) 命令: git -v(查看版本號) 配置: 用戶名和郵箱,應用在每次提交代碼版本時表明自己身份 命令: git config --global user.name "FT" git config --global user.email "F…

利用井云平臺把Coze工作流接入小程序/網站封裝變現 | 詳細步驟→

今天來看看怎么把Coze工作流接入井云生成你的專屬網站/小程序! 當前已支持三大模塊接入:? 工作流 ? 智能體 ? 外部網頁 本文所用工具 1、扣子:www.coze.cn 2、井云智能體:jingyun.center 為什么選擇井云平臺? …

linux weston flutter remote desktop

參考:Outputs — weston 14.0.90 documentation Weston 14.0: DRM-backend, color management, and output mirroring Weston 14.0: DRM-backend, color management, and output mirroring ??? 3. DRM 輸出可鏡像至遠程輸出(RDP、VNC、PipeWire) 這次更新還帶來了一個…

GitHub Copilot 是什么,怎么使用

GitHub Copilot 是一個由 GitHub 和 OpenAI 聯合開發的 AI 編程助手,它可以在你寫代碼的時候自動給出建議、補全代碼,甚至生成整個函數或算法。它就像一個“聰明的副駕駛”,時刻在你旁邊協助你寫代碼。 簡單解釋: GitHub Copilot …

Android系統及應用QUIC協議支持詳解

QUIC協議在Android中的全面支持與實踐指南 本文深入探討QUIC協議在Android中的實現細節,涵蓋基礎原理、開發技巧、性能優化及前沿擴展,提供完整的Kotlin代碼示例和工程實踐指南。 1. QUIC協議核心優勢 QUIC(Quick UDP Internet Connections&…

.NET基于類名約定的自動依賴注入完整指南

🚀 .NET基于類名約定的自動依賴注入完整指南 基于類名約定的自動依賴注入可大幅減少手動注冊服務的工作量,本文將通過清晰的結構、美觀的排版和豐富的示例,幫助你快速掌握這一實用技術。 🌈 核心特性概覽 特性說明類名約定自動…

Redis各數據結構的詳細使用和使用場景

Redis各數據結構的詳細使用 大家好!今天我們來聊聊Redis這個強大的內存數據庫。就像我們生活中的工具箱一樣,Redis提供了多種"工具"(數據結構)來幫助我們解決不同的問題。有些工具像螺絲刀(字符串&#xff…

MSYS2 環境下 Python 開發配置(結合 PyCharm)使用筆記

【筆記】MSYS2 的 MinGW64 環境中正確安裝 Python 相關環境管理工具 (Poetry、Virtualenv、Pipenv 和 UV)-CSDN博客 MSYS2 環境配置與 Python 項目依賴管理筆記_msys更新python-CSDN博客 【技術筆記】MSYS2 指定 Python 版本安裝方案_pacman -u 安裝指定…

Python爬蟲實戰:研究Splinter相關技術

1. 引言 1.1 研究背景與意義 隨著 Web 2.0 技術的發展,現代網頁越來越多地采用 JavaScript 動態生成內容。傳統爬蟲通過直接請求 HTML 頁面的方式,無法獲取這些動態渲染的內容,導致爬取數據不完整。據統計,全球前 1000 名網站中,超過 70% 的頁面包含動態加載內容 。Spli…

大氣商務工作匯報總結PPT模版分享

藍色商務工作總結PPT模版,莫蘭迪工作總結PPT模版,年中工作匯報PPT模版,簡約工作匯報PPT模版,上半年工作總結PPT模版,極簡工作匯報PPT模版,歐美簡約PPT模版,大氣商務通用PPT模版,團隊…

5G modem開發

鏈接文章:https://zhuanlan.zhihu.com/p/709130546 OpenHarmony RIL架構 鏈接文章:https://blog.csdn.net/weixin_42571280/article/details/148566029 在移動通信設備中,無線接口層(Radio Interface Layer,簡稱RIL&…

Gartner《AI-Driven Methods for Cost-Efficiency》學習心得

一、背景介紹 在當前經濟形勢下,企業面臨著成本上升與收入增長放緩的雙重壓力。Gartner 的這份報告指出,大多數企業對 AI 的投資主要集中在提升用戶生產力方面,但短期內投資回報率有限。鑒于經濟的不確定性以及成本壓力,尤其是生成式 AI(GenAI)技術,若應用于財務效率和…

人臉識別技術是自動化還是智能化?

人臉識別技術兼具自動化與智能化的雙重特性。它通過自動采集圖像、預處理圖像、提取特征以及進行識別比對等操作,實現了高效且無需人工干預的識別流程,展現出強大的自動化能力。同時,它還具備自適應學習能力,能夠根據新的數據和場…

樹結構的實際應用之堆排序

樹結構的實際應用之堆排序 基本介紹 堆排序是利用堆這種數據結構設計而成的一種排序算法,堆排序是一種選擇排序,它的最壞,最好,平均時間復雜度為O(logn),它也是不穩定排序。堆是具有以下性質的完全二叉樹:…

用OBS Studio錄制WAV音頻,玩轉語音克隆和文本轉語音!

言簡意賅的講解OBS Studio解決的痛點 隨著AI技術的快速發展,語音克隆與文本生成語音技術越來越受歡迎。無論你想要制作個人虛擬主播,還是給自媒體視頻配音,擁有高質量的原始音頻都是關鍵。本文詳細教你使用免費且功能強大的軟件——OBS Stud…

LangChain-5-agent

概述 Agent 是一種能夠基于接收到的輸入,利用自身的決策邏輯和可用的工具,動態地規劃并執行一系列操作,以達成特定任務的程序或系統。它在與外界交互過程中,會根據實時情況靈活調整策略,而不是按照固定的預設流程執行…

操作系統進程與線程核心知識全覽

本博客,根據王道所學。以下為第二章節知識點: 進程的概念、組成、狀態與其轉換、進程間通信、信號; 單/多線程模型、線程管理、調度時機的切換、調度的目標、調度算法、多處理機調度; 同步與互斥、進程互斥的軟硬件實現方法、信號…

C++中類型轉換操作符知識介紹

文章目錄 **一、類型轉換操作符的語法與定義****二、工作原理****三、示例:基本類型轉換****四、示例:轉換為自定義類型****五、與構造函數的對比****六、注意事項****七、應用場景****八、與 C 其他類型轉換的關系****九、總結** 在C中,類型…

2048小游戲C++板來啦!

個人主頁:PingdiGuo_guo 收錄專欄:C干貨專欄 大家好呀,我是PingdiGuo_guo,今天我們來學習如何用C編寫一個2048小游戲。 文章目錄 1.2048的規則 2.步驟實現 2.1: 初始化游戲界面 2.1.1知識點 2.1.2: 創建游戲界面 2.2: 隨機…