一、概述
????????ArkTS是鴻蒙生態的應用開發語言。它在保持TypeScript(簡稱TS)基本語法風格的基礎上,對TS的動態類型特性施加更嚴格的約束,引入靜態類型。同時,提供了聲明式UI、狀態管理等相應的能力,讓開發者可以以更簡潔、更自然的方式開發高性能應用。
? ? ? ? 簡而言之,ArkTS是華為官方推薦的HarmonyOS開發的主力語言,它是華為自己開發的語言。由于HarmonyOS3.0之后就不再支持Java開發了,因此我們要在鴻蒙系統上開發app,就需要學習這門語言。
特點
- 開發效率高,體驗好
????????ArkTS專注于移動端的開發,雖然傳統的前端網頁開發也同樣可以實現,不過學過web前端的都知道,一個網頁的實現需要同時使用HTML,JavaScript,CSS這三種不同語言,它們語法完全不同,開發體驗并不良好。不過使用ArkTS開發移動端的話就沒有這個問題了,僅僅這一種語言,一種語法,開發起來就比較舒服了。
比如這個,實現一個點擊自增按鈕,ArkTS所操作方式的完全就是 .屬性(賦值)? 進行操縱。這對于習慣使用Java開發的人來說可以說是非常舒服了。
- 性能上并沒有下降,執行性能非常高效
- 而且還有多系統適配,接入能力
開發工具
DevEco Studio:HUAWEI DevEco Studio和SDK下載和升級 | HarmonyOS開發者
注意它需要node.js環境,版本最低不能低于14.19.1,最高不能高于17.0.0。
使用NVM實現多版本Node.js的版本共存和無縫切換_nodejs多版本共存-CSDN博客https://blog.csdn.net/m0_56308072/article/details/130894356?spm=1001.2014.3001.5501
這樣檢測的時候沒有報錯就可以使用了,又報錯直接點擊后面的安裝即可。
二、TypeScript基本語法
ArkTS是基于TypeScipt開發的,其語法也是十分的相似。因此我們需要先了解TypeScipt的基本語法,方便ArkTS的學習。
目錄
- 變量聲明
- 條件控制
- 循環迭代
- 函數
- 類和接口
- 模塊開發
1、變量聲明
TypeScript在JavaScript的基礎上加入了靜態的類型檢查功能,因此與JavaScrpt那極其自由的語法不同,每一個變量都有固定的數據類型。
JS的語法:let msg = 'hello world'
TS的語法:let msg:string = 'hello world'
其實就是在JS的基礎上多了一步聲明數據類型。
?想要編寫一下代碼對語法進行練習和熟悉,可以使用TypeScript官方網站上的在線編寫:TypeScript: TS Playground - An online editor for exploring TypeScript and JavaScript
直接在這里練習就行了。
2、 條件控制
TypeScript與大多數開發語言類似,支持基于if-else和switch的條件控制
===是JavaScript中的一個特殊運算符,它會嚴格要求兩個比較的數據的數據類型,TypeScript將其繼承了下來。
因為在JavaScript是一門弱類型語言,它不強調數據的類型,"字符串'21' == 整型21"?始終為true,所有有了===這個運算符比較一下數據類型。
其次還有一個需要注意的一點是
在TypeScript中,空字符串、0、null、undefined都被認為是false。
因此你可以直接將一個變量作為一個判斷的標準,這點與C++很相似。
3、循環迭代
TypeScript支持for和while循環,并且為一些內置類型如Array等提供了快捷迭代的語法
?相信有編程基礎的大家都快把循環語句寫爛了。
4、函數
TypeScript通常利用function關鍵字聲明函數,并且支持可選參數,默認參數,箭頭函數等特殊語法
可選參數就是直接在參數后面加上 ? 默認參數就是直接在參數中賦值,注意此時如果有參數傳遞時就用傳遞來的參數,沒有參數傳入時默認參數才會生效?
5、類和接口
TypeScript具備面向對象編程的基本語法,例如interface,class,enum等。也具備封裝、繼承、多態等面向對象基本特征
吐槽:好像Java和JS雜交之后出來的產物。我們再來看一個既視感很強的例子
?
6、模塊開發
應用復雜時,我們可以把通用功能抽取到單獨的ts文件中,每個文件都是一個模塊(module)。模塊可以相互加載,提高代碼復用性
?
三、ArkTS快速入門
項目創建
創建一個空項目
簡單解釋一下其中的配置項:
- Project name是開發者可以自行設置的項目名稱,這里根據自己選擇修改為自己項目名稱。
- Bundle name是包名稱,默認情況下應用ID也會使用該名稱,應用發布時對應的ID需要保持一致。
- Save location為工程保存路徑,建議用戶自行設置相應位置。
- Compile SDK是編譯的API版本,這里默認選擇API9。
- Model選擇Stage模型,其他保持默認即可。
吐槽:怎么跟IDEA長得這么像
目錄結構?
左邊的目錄大多是配置文件,用到的時候再講,現在先將其切換為Ohos,IDE會自動將目錄按照類型分類
- AppScope:主要用于存放整個應用公共的信息與資源
- entry:入口,初始模塊。用于存放編寫的代碼文件
- configuration:存放相應模塊的配置文件
- resource對應模塊內的公共資源
- entryability:存放ability文件,用于當前ability應用邏輯和生命周期管理。
- pages:存放UI界面相關代碼文件,初始會生成一個Index頁面。
- 最外層的configuration:則是存放工程應用級的配置文件
既然是鴻蒙移動端開發,那么就需要一個鴻蒙系統的手機。不過我們不需要真的去購買一臺手機,IDE中有自帶的模擬器。
點擊右側的Previewer,即可看到index.ets文件的效果(ArkTS寫的文件后綴統一叫.ets)?
index.ets代碼解釋
邏輯清晰了之后,我們可以嘗試使用官方的ArkUI直接拼接一個頁面出來(這里僅展示一下,后面會具體學習ArkUI)
其頁面的基本骨架就是如此
@Entry
@Component
struct Index {build() {}
}
拼接UI
@Entry
@Component
struct Index {build() {Column({space: 20}){Image('logo.png')TextInput({placeholder: '用戶名'})TextInput({placeholder: '密碼'}).type(InputType.Password).showPasswordIcon(true)Button('登錄')Row(){Checkbox()Text('記住我').fontColor('#36D')}}.width('100%')}
}
?最終效果