初識ArkTS(HarmonyOS學(xué)習(xí)第二課)

ArkTS

ArkTs 是Harmonyos 優(yōu)選的主力應(yīng)用開發(fā)語言。arkTs 圍繞應(yīng)用開發(fā)在Typescript(簡稱 TS)生態(tài)基礎(chǔ)上做了進一步擴展,繼承了Ts的所有特性膘魄,是 TS 的超集阔馋。因此扔罪,在學(xué)習(xí)ArkTS語言之前稿静,建議開發(fā)者具備S語言開發(fā)能力梭冠。

當(dāng)前,ArkTS 在TS的基礎(chǔ)上主要擴展了如下能力:

基本語法:ArkTS,定義了聲明式U描述改备、自定義組件和動態(tài)擴展 UI 元素的能力,再配合AKUI開發(fā)框架中的系統(tǒng)組件及其相關(guān)的事件方法控漠、屬性方法等共同構(gòu)成了UI 開發(fā)的主體。

狀態(tài)管理:ArkTS 提供了多維度的狀態(tài)管理機制悬钳。在UI開發(fā)框架中盐捷,與UI相關(guān)聯(lián)的數(shù)據(jù)可以在組件內(nèi)使用,也可以在不同組件層級間傳遞默勾,比如父子組件之間碉渡、爺孫組件之間,還可以在應(yīng)用全局范圍內(nèi)傳遞或跨設(shè)備傳遞母剥。另外爆价,從數(shù)據(jù)的傳遞形式來看,可分為只讀的單向傳遞和可變更的雙向傳遞媳搪。開發(fā)者可以靈活的利用這些能力來實現(xiàn)數(shù)據(jù)和UI的聯(lián)動

渲染控制:ArkTS 提供了渲染控制的能力铭段。條件渲染可根據(jù)應(yīng)用的不同狀態(tài),渲染對應(yīng)狀態(tài)下的UI內(nèi)容秦爆。循環(huán)渲染可從數(shù)據(jù)源中迭代獲取數(shù)據(jù)序愚,并在每次迭代過程中創(chuàng)建相應(yīng)的組件。數(shù)據(jù)懶加載從數(shù)據(jù)源中按需迭代數(shù)據(jù)等限,并在每次迭代過程中創(chuàng)建相應(yīng)的組件爸吮。

ArkTS基本語法

基本語法概述

在初步了解了 AEkTS 語言之后,我們以一個具體的示例來說明rkTs 的基不組成望门。該案例中當(dāng)開發(fā)者點擊按鈕時形娇,文本內(nèi)容從“Helloworld”變?yōu)椤癏ello ArkUI工創(chuàng)建步驟如下

首先我們新創(chuàng)建一個項目MyApp02

在index.js文件當(dāng)中



入口就是一打開App所看見的頁面

@Entry

@Component

struct Index {

? @State message: string = 'Hello World'

? build() {

? ? Row() {

? ? ? Column() {

? ? ? ? Text(this.message)

? ? ? ? ? .fontSize(50)

? ? ? ? ? .fontWeight(FontWeight.Bold)

? ? ? }

? ? ? .width('100%')

? ? }

? ? .height('100%')

? }

}

// 所有帶@符號的都屬于裝飾器

//

// Index是我們自定義的組件名稱

//

// message: string 是定義的一個變量

//

// @State 裝飾器 表示他是一個狀態(tài)變量 (好處可以當(dāng)變量的值發(fā)生變化的時候,變量所對應(yīng)的組件頁面會自動進行刷新)對應(yīng)的Index組件

//

// build() 以聲明式的的方式來描述UI結(jié)構(gòu)

//

// Row()內(nèi)置組件 代表一行

//

// Column()內(nèi)置組件? 表示一列

//

// Text(this.message):所要展示的值

//

// .fontSize(50) 顯示的字體大小 單位是像素

//

// fontWeight 表示顯示的字體

//

// width('100%') 表示Column() 這一列的寬占頁面的100%

//

// height('100%')? 表示build() 這一行的高 占頁面100%

實現(xiàn)一個簡單點擊按鈕切換切換內(nèi)容:

@Entry

@Component

struct Hello {

? @State pweaon_name: string = '張三'

? build() {

? ? Row() {

? ? ? Column() {

? ? ? ? Text(`Hello ${this.pweaon_name} !`)

? ? ? ? ? .fontSize(50)

? ? ? ? ? .fontWeight(FontWeight.Bold)

? ? ? ? Divider() //Divider() 提供分隔器的組件(系統(tǒng)組件)

? ? ? ? Button('點擊')

? ? ? ? ? .onClick(() => { //點擊箭頭函數(shù)

? ? ? ? ? ? this.pweaon_name = "李四" //點擊一下給他重新賦值 然后因為@State監(jiān)聽pweaon_name所以會自動進行刷新

? ? ? ? ? })

? ? ? ? ? .height(50) //高

? ? ? ? ? .width(100) //寬

? ? ? ? ? .margin({ top: 20 }) //

? ? ? }

? ? }

? }

}

使用模擬器進行運行之后:


基本內(nèi)容

裝飾器: 用于裝飾類筹误、結(jié)構(gòu)桐早、方法以及變量,并賦予其特殊的含義厨剪。如上述示例中@Entry哄酝、@Component和@state 都是裝飾器,@Component 表示自定義組件祷膳,@Entry 表示該自定義組件為入口組件陶衅,@state表示組件中的狀態(tài)變量,狀態(tài)變量變化會觸發(fā) UI刷新直晨。

UI 描述:以聲明式的方式來描述 UI的結(jié)構(gòu)搀军,例如 build()方法中的代碼塊膨俐。←自定義組件:可復(fù)用的UI單元罩句,可組合其他組件吟策,如上述被@Component裝飾的struct Hello。

系統(tǒng)組件:ArkUI框架中默認(rèn)內(nèi)置的基礎(chǔ)和容器組件的止,可直接被開發(fā)者調(diào)用檩坚,比如示例中的Column、Text诅福、Divider匾委、Button。

屬性方法:組件可以通過鏈?zhǔn)秸{(diào)用配置多項屬性氓润,如ontsize()赂乐、width()、height()咖气、backgroundColor()等挨措。

事件方法:組件可以通過鏈?zhǔn)秸{(diào)用設(shè)置多個事件的響應(yīng)邏輯,如跟隨在Button后面的 onclick()

系統(tǒng)組件崩溪、屬性方法浅役、事件方法具體使用可參考基于ArkTs的聲明式開發(fā)范式。除此之外伶唯,ArkTS擴展了多種語法范式來使開發(fā)更加便捷:

@Builder/@BuilderParam:特殊的封裝UI描述的方法觉既,細粒度的封裝和復(fù)用UI描述。

@Extend/@style:擴展內(nèi)置組件和封裝屬性樣式乳幸,更靈活地組合內(nèi)置組件瞪讼。

“statestyles:多態(tài)樣式,可以依據(jù)組件的內(nèi)部狀態(tài)的不同粹断,設(shè)置不同樣式符欠。

聲明式UI概述

ArkTS以聲明方式組合和擴展組件來描述應(yīng)用程序的UI,同時還提供了基本的屬性瓶埋、事件和子組件配置方法希柿,幫助開發(fā)者實現(xiàn)應(yīng)用交互邏輯

如果組件的接口定義沒有包含必選構(gòu)造參數(shù),則組件后面的“()”不需要配置任何內(nèi)容悬赏。例如狡汉,Divider組件不包含構(gòu)造參數(shù):

Column() //無參數(shù)代碼塊

Text('item') //文本框的組件

Divider()//分割線的組件


@Entry //裝飾器

@Component? //自定義一個組件

struct? UIText1{? //寫組件內(nèi)容

? build(){//相當(dāng)于一個組件小集合

? ? ? Column(){

? ? ? ? Text("Hello text1")? //文本組件

? ? ? ? Divider() //分割線組件

? ? ? ? Text("Hello text2")

? ? ? }

? }

}

編寫完成之后

可以在右邊查看效果


接下來我們練習(xí)一下有圖片的樣式

//有圖片和文本的樣式

@Entry //裝飾器

@Component? //自定義一個組件

struct? UIText1{? //寫組件內(nèi)容

? textValue= 'hello'

? textSize: number =50? //定義變量? 字體大小

? imageHeight = 800? ? // 圖片高度

? imageWidth =500? ? ? //圖片寬度

? build(){//相當(dāng)于一個組件小集合

? ? ? Column(){

? ? ? ? Text(this.textValue)//文本組件

? ? ? ? ? ? .fontSize(this.textSize)? //文本顯示出來的字體大小

? ? ? ? ? ? .fontColor(Color.Green)? ? //文本顯示的顏色

? ? ? ? ? ? .fontWeight(FontWeight.Bold) //文本顯示字體類型(粗體)

? ? ? ? Image('http://easyimg.zhouchenji.com/i/2024/03/19/xltk19.jpg') //圖片組件

? ? ? ? ? ? //設(shè)置圖片樣式

? ? ? ? ? ? .width(this.imageWidth)

? ? ? ? ? ? .height(this.imageHeight)

? ? ? }

? }

}


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市闽颇,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌寄锐,老刑警劉巖兵多,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件尖啡,死亡現(xiàn)場離奇詭異,居然都是意外死亡剩膘,警方通過查閱死者的電腦和手機衅斩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來怠褐,“玉大人畏梆,你說我怎么就攤上這事∧卫粒” “怎么了奠涌?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長磷杏。 經(jīng)常有香客問我溜畅,道長,這世上最難降的妖魔是什么极祸? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任慈格,我火速辦了婚禮,結(jié)果婚禮上遥金,老公的妹妹穿的比我還像新娘浴捆。我一直安慰自己,他們只是感情好稿械,可當(dāng)我...
    茶點故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布汤功。 她就那樣靜靜地躺著,像睡著了一般溜哮。 火紅的嫁衣襯著肌膚如雪滔金。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天茂嗓,我揣著相機與錄音餐茵,去河邊找鬼。 笑死述吸,一個胖子當(dāng)著我的面吹牛忿族,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蝌矛,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼道批,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了入撒?” 一聲冷哼從身側(cè)響起隆豹,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎茅逮,沒想到半個月后璃赡,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體判哥,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年碉考,在試婚紗的時候發(fā)現(xiàn)自己被綠了塌计。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡侯谁,死狀恐怖锌仅,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情墙贱,我是刑警寧澤热芹,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站嫩痰,受9級特大地震影響剿吻,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜串纺,卻給世界環(huán)境...
    茶點故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一丽旅、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧纺棺,春花似錦榄笙、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至巨朦,卻和暖如春米丘,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背糊啡。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工拄查, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人棚蓄。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓堕扶,卻偏偏與公主長得像,于是被迫代替她去往敵國和親梭依。 傳聞我的和親對象是個殘疾皇子稍算,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,037評論 2 355

推薦閱讀更多精彩內(nèi)容