文章聲明:本文關于HarmonyOS系統的部分內容和描述借鑒于華為官網的“HarmonyOS開發者學堂”,有需要的也可以進入官網查看。<HarmonyOS第一課>ArkTS開發語言介紹
一、ArkTs語言介紹
ArkTS是鴻蒙系統(HarmonyOS)優選的主力應用開發語?。ArkTS圍繞應?開發在TypeScript(簡稱TS)生態基礎上做了進?步擴展,繼承了TS的所有特性,是TS的超集,而TS又是 JavaScript 的一個超集。
- JavaScript是一種屬于網絡的高級腳本語言,已經被廣泛用于Web應用開發,常用來為網頁添加各式各樣的動態功能,為用戶提供更流暢美觀的瀏覽效果。
- TypeScript 是 JavaScript 的一個超集,它擴展了 JavaScript 的語法,通過在JavaScript的基礎上添加靜態類型定義構建而成,是一個開源的編程語言。
- ArkTS兼容TypeScript語言,拓展了聲明式UI、狀態管理、并發任務等能力。
ArkTS、TS和JS這三者之間的關系如下圖所示:
因此,在學習ArkTS語言之前,建議開發者具備TS語言或JS語言的相關開發經驗。
二、ArkTS在TS上的擴展
當前,ArkTS在TS的基礎上主要擴展了如下能力:
- (1)基本語法:ArkTS定義了聲明式UI描述、自定義組件和動態擴展UI元素的能能,再配合ArkUI開發框架中的系統組件及其相關的事件方法、屬性方法等共同構成了UI開發的主體。
- (2)渲染控制:ArkTS提供了渲染控制的能力。條件渲染可根據應?的不同狀態,渲染對應狀態下的UI內容。循環渲染可從數據源中迭代獲取數據,并在每次迭代過程中創建相應的組件。數據懶加載從數據源中按需迭代數據,并在每次迭代過程中創建相應的組件。
- (3)狀態管理:ArkTS提供了多維度的狀態管理機制。在UI開發框架中,與UI相關聯的數據可以在組件內使用,也可以在不同組件層級間傳遞,比如父子組件之間、爺孫組件之間,還可以在應?全局范圍內傳遞或跨設備傳遞。另外,從數據的傳遞形式來看,可分為只讀的單向傳遞和可變更的雙向傳遞。開發者可以靈活的利?這些能?來實現數據和UI的聯動。
未來,ArkTS會結合應?開發/運?的需求持續演進,逐步提供并?和并發能?增強、系統類型增強、分布式開發范式等更多特性。
三、ArkTS的基本組成
ArkTS的基本組成和組件名稱如下:
組成一個基本ArkTS結構的各類裝飾器和組件分別代表以下含義:
- (1)裝飾器:用于裝飾類、結構、方法以及變量,并賦予其特殊的含義。如上述實例中@Entry、@Component和@State都是裝飾器,@Component表示自定義組件,@Entry表示該自定義組件為入口組件,@State表示組件中的狀態變量,狀態變量變化會觸發UI刷新。
- (2)UI描述:以聲明式的方式來描述UI的結構,例如build()方中的代碼塊。
- (3)系統組件:ArkUI框架中默認內置的基礎和容器組件,可直接被開發者調用,比如示例中的Column、Text、Divider、Button。
- (4)屬性方法:組件可以通過鏈式調?配置多項屬性,如fontSize()、width()、height()、backgroundColor()等。
- (5)事件方法:組件可以通過鏈式調用設置多個事件的響應邏輯,如跟隨在Button后?的onClick()。
- (6)自定義組件:可復?的UI單元,可組合其他組件,如上述被@Component裝飾的struct Hello。
- (7)自定義組件、系統組件、屬性方法、事件方法具體使用可參考基于ArkTS的聲明式開發范式。除此之外,ArkTS擴展了多種語法范式來使開發更加便捷:
? @Builder/@BuilderParam:特殊的封裝UI描述的方法,細粒度的封裝和復用UI描述。
? @Extend/@Style:擴展內置組件和封裝屬性樣式,可以更靈活地組合內置組件。
? stateStyles:多態樣式,可以根據組件的內部狀態的不同,從而設置不同的樣式。