W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎勵
subpackage.json
文件?將需要轉(zhuǎn)換為分包的頁面填寫進(jìn)去,如:
{
"root": "takeout_delicious_food",
"pages": ["index/index"]
}
注意:當(dāng)前需要業(yè)務(wù)方手動添加該文件,如果需要轉(zhuǎn)換的小程序 app.json
已存在分包配置,需要將分包中的頁面也添加至 subpackage.json
的 pages
中,注意頁面路徑為分包名稱+路徑
,不要寫錯。
mor.config.ts
文件中增加分包編譯配置?import { defineConfig } from '@morjs/cli'
export default defineConfig([
// ?????? 重點(diǎn)看這里:分包編譯配置 ??????
{
// 編譯名稱,可隨意修改
name: 'wechat_subpackage',
// 源碼類型, 這里以支付寶小程序 DSL 為例
sourceType: 'alipay',
target: 'wechat',
// 指定編譯類型為分包!
compileType: 'subpackage',
// 分包只能使用 bundle 打包模式
compileMode: 'bundle',
// 如果分包需要使用宿主的 npm 依賴,且不希望該依賴參與打包
// 可以在 externals 中指定 npm 包的名稱,在項(xiàng)目中正常引用即可
// 注意:微信環(huán)境下需要自行觸發(fā) 構(gòu)建 NPM 操作
externals: []
}
])
完成以上配置后,即可執(zhí)行對應(yīng)的分包編譯,編譯完成后,將對應(yīng)編譯產(chǎn)物文件夾直接放到對應(yīng)的宿主中即可。
mor.subpackage.app.js
,如果該文件不存在,則會直接使用 app.js
,故小程序轉(zhuǎn)分包如無特別需求可以不使用 mor.subpackage.app.js
,如果配置了 mor.subpackage.app.js
則將使用該文件,并忽略 app.js
。如果需要兩個文件并存,那么可以考慮把公共邏輯抽象到一個單獨(dú)文件中app.onLaunch
會在首次打開分包頁面時調(diào)用,app.onShow
以及其他方法如 onError
等 不會被調(diào)用,這塊兒的差異需要業(yè)務(wù)方自行處理getApp
方法進(jìn)行兜底處理,分包模式下通過 getApp
調(diào)用獲得的 app
為宿主和分包的混合產(chǎn)物,宿主的屬性和方法可以通過 app.$host
獲取,具體邏輯可以查看產(chǎn)物中的 mor.subpackage.global.js
文件externals
中,然后在項(xiàng)目中正常引用即可。如項(xiàng)目中出現(xiàn)此類需求,建議抽象出來一個單獨(dú)的 js 文件,可以通過文件或源代碼緯度的條件編譯來為不同端提供支持,避免造成對業(yè)務(wù)代碼的污染Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: