做360手機(jī)網(wǎng)站快速制作網(wǎng)頁(yè)需要多少錢
1. 模塊分類介紹
鴻蒙系統(tǒng)的模塊一共分為四種,包括HAP兩種和共享包兩種
HAP(Harmony Ability Package)
- Entry:項(xiàng)目的入口模塊,每個(gè)項(xiàng)目都有且只有一個(gè)。
- feature:項(xiàng)目的功能模塊,內(nèi)部模式和Entry完全相同,就是不承擔(dān)作為入口的功能。
共享包(共享包無(wú)法使用UIAbility和其他ExtentionsAbility,你可以近似理解成共享包不能使用Android的四大組件):
- Harmony Archive(HAR):靜態(tài)共享包,在每個(gè)引用他的模塊里面都會(huì)復(fù)制一份自己的編譯產(chǎn)物。跟隨他的引用包一起編譯。
- Harmony Shared Package(HSP):動(dòng)態(tài)共享包,在所有引用他的模塊中,只會(huì)有一個(gè)他的編譯產(chǎn)物。他可以自己編譯。
UIAbility類比就是Android四大組件中的Activity,而我們平時(shí)用的帶@Entry標(biāo)簽的UI組件,可以理解為是Fragment或者說(shuō)是View。
和Android不同的是,在鴻蒙系統(tǒng)中,UIAbility并不會(huì)像Activity中那樣頻繁被創(chuàng)建,我們一般都通過UI組件來(lái)進(jìn)行頁(yè)面的切換和跳轉(zhuǎn)。
四種不同的包的區(qū)分方式,查看該module中的src/main/module.json5文件里面的type字段
2. 導(dǎo)入本地模塊
導(dǎo)入模塊要做三件事
- 如果是本地模塊的話,你需要先創(chuàng)建該模塊,new一個(gè)Module出來(lái)
- 在全局里面加入該模塊,有三個(gè)不同的操作方式,效果都是一樣的。
-
在項(xiàng)目的oh-package.json5的dependencies中添加該模塊,然后點(diǎn)擊界面上方的sync。
-
直接在你需要的添加該模塊的模塊的oh-package.json5的dependencies中加入該模塊,然后他會(huì)報(bào)錯(cuò)要你ohpm install該模塊,照做即可。
-
直接在終端執(zhí)行ohpm install指令將模塊加入。如目標(biāo)模塊的名稱為HarLibrary,指令就為:ohpm install file:./HarLibrary。
-
- 在目標(biāo)模塊中引用,也就是2.2中提到的在dependencies中添加即可引用。
3. 使用模塊內(nèi)的類
每個(gè)模塊中的類,如果想要被其他模塊調(diào)用的話,需要做以下兩部
- 將該類聲明為export。
- 在該模塊的Index.ets文件中,添加該類。
這樣就可以被其他工程調(diào)用了。
4. 跳轉(zhuǎn)模塊內(nèi)的Entry
如果我在共享包里面寫了一個(gè)ArkUI,但是我又想在其他頁(yè)面中通過跳轉(zhuǎn)的方式打開的話該怎么辦呢?
router.pushUrl此時(shí)的語(yǔ)法為:
'@bundle:包名(bundleName)/模塊名(moduleName)/路徑/頁(yè)面所在的文件名(不加.ets后綴)'
其中,包名在項(xiàng)目的AppScope/app.json5文件中,
模塊名就是你在dependences中引用時(shí)取的名字。
之后在編輯配置中,打開Deploy Multi Hap,然后勾選目標(biāo)包即可
必須要Build應(yīng)用才能看效果,Preview是不行的。
其他方法
還有一個(gè)不算方法的方法,就是先將目標(biāo)頁(yè)面export出來(lái)之后,在需要使用該頁(yè)面的模塊中,通過一個(gè)空的Entry引用該模塊來(lái)達(dá)成一個(gè)間接的打開頁(yè)面的功能,如圖。
之后只需要打開ModuleIndex,就相當(dāng)于打開了MainPage,只能說(shuō)如果正常跳轉(zhuǎn)遇到了沒辦法解決的問題就用該辦法吧。
參考資料
https://developer.huawei.com/consumer/cn/forum/topic/0208145626180602082