網(wǎng)傳鴻蒙系統(tǒng)的下一個(gè)版本不再支持安卓,這幾天看了一遍基于鴻蒙系統(tǒng)的App開發(fā),現(xiàn)在二刷,順便總結(jié)一下寫一些心得或筆記吧。
先說IDE,IDE支持主流的Windows、Mac,包括M系列芯片的Mac,使用M芯片Mac的小伙伴看見有專門支持的軟件,心里還是比較開心的,至少我是,嘿嘿。IDE沒有復(fù)雜的配置,包括安裝node.js、Ohpm(鴻蒙系統(tǒng)包管理命令行工具,類似npm)、SDK、模擬器,基本是可視化操作,有引導(dǎo),點(diǎn)擊下一步就可。
關(guān)于UI框架,HarmonyOS提供了一套UI開發(fā)框架,叫方舟開發(fā)框架(ArkUI框架),這個(gè)框架針對(duì)不同技術(shù)背景的開發(fā)者提供了兩種開發(fā)范式,分別是基于ArkTS的聲明式開發(fā)范式和兼容JS的類Web開發(fā)范式。ArkTS是擴(kuò)展了TypeScript語言,還好不是一個(gè)新語言,真學(xué)不動(dòng)了,發(fā)現(xiàn)里面融合很多前端框架的模型,什么react、flutter、swiftUI、compose,還有一些接口來自css,你會(huì)發(fā)現(xiàn)四不像又都像,這也好,降低了開發(fā)難度,希望最后歸于統(tǒng)一,前端要學(xué)的太多了,學(xué)不過來了。
關(guān)于應(yīng)用模型,隨著HarmonyOS系統(tǒng)發(fā)展,先后提供了兩種應(yīng)用模型,早期的FA(Feature Ability)模型,和現(xiàn)在的Stage模型,前者是HarmonyOS API 7開始支持的模型,已經(jīng)不再主推。后者是API 9開始支持的,目前主推且會(huì)長期演進(jìn)的模型,所以我暫時(shí)只看了后者,前者大家去官網(wǎng)了解一下。但是我發(fā)現(xiàn)最新的IDE選擇Stage模型的時(shí)候,只支持ArkTS語言,所以上面提到的兼容JS的類Web開發(fā)范式應(yīng)該也是一個(gè)過渡的產(chǎn)品,最終會(huì)被淘汰。OK,作為一個(gè)剛剛接觸鴻蒙開發(fā)的人員,主要是學(xué)習(xí)一下Stage模型和基于ArkTS的開發(fā)即可。
OK,下面我們來建立一個(gè)Hello World吧
安裝IDE
官網(wǎng)直接下載哈,提供了三個(gè)版本,windows沒試過,mac直接安裝即可。
新建項(xiàng)目
第一次打開IDE,會(huì)引導(dǎo)你安裝Node.js、Ohpm,還有所需的SDK,它會(huì)自動(dòng)檢測是否已經(jīng)安裝,如果沒有檢測到,就選擇Install即可,然后下一步。?
安裝完成,或者下一次啟動(dòng)就直接到這個(gè)頁面了,我們選擇crate project來創(chuàng)建一個(gè)項(xiàng)目。
?
我們選擇Application,右側(cè)很多模板,選擇Empty Ability,點(diǎn)擊Next。
?
這里是一些常規(guī)的項(xiàng)目信息填寫,特別指出的是Model(應(yīng)用模型)如果選擇FA,language可以選擇JS,否則只有一個(gè)ArkTS選項(xiàng),而官方推薦時(shí)Model是Stage,所以只能選擇Stage和ArkTS了。 有一個(gè)選項(xiàng)是“Enable Super Visual”, 選中的時(shí)候,會(huì)多生成一個(gè)布局文件,可以像安卓和iOS那個(gè)布局文件一樣,可以拖拖拉拉的,有興趣可以試試。我選擇了默認(rèn)沒有勾選。
?
工程目錄
這是項(xiàng)目創(chuàng)建后的工程結(jié)構(gòu),先看一下左邊的目錄結(jié)構(gòu):
1、AppScope
看名字是配置App的,包括了一個(gè)app.json5文件,在app.json5里使用的字符串和圖片分別在引用了string.json配置和media目錄下的圖片。
app.json5配置:
{
"app": {
"bundleName": "com.example.myapplication",//包名
"vendor": "example",//廠商
"versionCode": 1000000,//版本號(hào),數(shù)字形式
"versionName": "1.0.0",//版本號(hào),字符串形式
"icon": "$media:app_icon",//應(yīng)用圖標(biāo),設(shè)置里,非桌面,應(yīng)用管理那個(gè)地方
"label": "$string:app_name",//應(yīng)用名稱,設(shè)置里,非桌面,應(yīng)用管理那個(gè)地方
}
}
鴻蒙這里區(qū)分了“應(yīng)用圖標(biāo)和標(biāo)簽”和“入口圖標(biāo)和標(biāo)簽”,不是一個(gè)地方,前者說的是設(shè)置里,應(yīng)用管理下那個(gè)應(yīng)用名稱和圖標(biāo);后者在桌面,點(diǎn)擊即可進(jìn)入應(yīng)用那個(gè)地方,那個(gè)可以配置多個(gè)的,在下面的entry目錄下配置。
2、entry
這里HarmonyOS工程模塊,編譯構(gòu)建生成一個(gè)HAP包。里面主要包括:
- src > main > ets:用于存放ArkTS源碼;
- src > main > ets > entryability:應(yīng)用/服務(wù)的入口,這個(gè)可以配置多個(gè)的,會(huì)在桌面顯示多個(gè)圖標(biāo)和標(biāo)簽;
- src > main > ets > pages:應(yīng)用/服務(wù)包含的頁面;
- src > main > resources:用于存放頁面所用到的資源文件,如圖形、多媒體、字符串、布局文件等,其中media和string.json在AppScope里也有,注意一下。
還有一個(gè)module.json5:Stage模型模塊配置文件,配置項(xiàng)很多,目前發(fā)現(xiàn)點(diǎn)擊桌面圖標(biāo)的入口文件EntryAbility和權(quán)限(比如網(wǎng)絡(luò)權(quán)限)是在這里配置的。
3、還有一些配置用到再說吧,先保持默認(rèn);
預(yù)覽頁面
在打開某個(gè)頁面文件的時(shí)候(pages/Index.ets),點(diǎn)擊右側(cè)的Preview即可預(yù)覽這個(gè)頁面顯示效果。嘗試修改一下字符串的值,保存的時(shí)候,會(huì)自動(dòng)更新預(yù)覽。
如果正在編輯另一個(gè)頁面,點(diǎn)擊上面的刷新圖標(biāo)即可切換預(yù)覽當(dāng)前編輯的頁面。
?
使用模擬器
點(diǎn)擊Device Manager來啟動(dòng)一個(gè)模擬器,第一次安裝是沒有的,需要安裝一下模擬器,然后再給模擬器安裝一個(gè)系統(tǒng),按照提示來就好了。
點(diǎn)擊安裝一個(gè)模擬器
點(diǎn)擊下載圖標(biāo)安裝模擬器的系統(tǒng)?
然后點(diǎn)擊綠色的播放按鈕啟動(dòng)模擬器。
然后選擇你的模擬器來debug你的程序了,模擬器還是蠻絲滑的,可以媲美iOS的模擬器,所以開發(fā)是不是不需要真機(jī)也可以了。
但是模擬器在更改了代碼后不能實(shí)時(shí)更新,preview模式無法調(diào)試入口文件(EntryAbility),只能調(diào)試頁面和組件,所以還是需要結(jié)合起來一起使用為好。
代碼分析
我們來看一下系統(tǒng)自動(dòng)給我們生成的頁面Index.ets文件:
是不是有熟悉的感覺,好吧,按照感覺來吧,有一個(gè)文字了,再來一個(gè)Button好么,上面有文字“next”,有點(diǎn)擊事件,
// 先聲明一個(gè)按鈕的title
@State title: string = 'Next'
// 再初始化一個(gè)按鈕,然后title放上去,然后調(diào)屬性click,OK自動(dòng)彈出來一個(gè)onClick事件,
// 事件干嘛呢,改變一下message的值吧
// 看Row和column組件有寬和高,再設(shè)置一個(gè)寬高吧
// 于是乎:
Button(this.title)
.onClick(()=>{
this.message = "Hello Harmony"
})
.width(100)
.height(40)
OK,點(diǎn)擊一下按鈕,結(jié)果上面那個(gè)文字變了,好神奇!
OK,到這里吧,這也算不上代碼分析,明天繼續(xù)來分析吧。文章來源:http://www.zghlxwxcb.cn/news/detail-804901.html
也是剛學(xué)習(xí),理解不對(duì)或者有問題的地方還請(qǐng)大家指正,一起提高。文章來源地址http://www.zghlxwxcb.cn/news/detail-804901.html
到了這里,關(guān)于初識(shí)基于鴻蒙系統(tǒng)(HarmonyOS)的App開發(fā)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!