【关键字】
Ability / loadContent / hsp / pages / hsp module
【问题描述】
在Entry的Ability中是否可以loadContent另一个hsp的pages呢?如果可以,应该如何实现?希望在entry中只实现启动逻辑,但业务逻辑和pages都放在其他的hsp module中。
【解决方案】
API11的场景下,可以使用loadContentByName和命名路由实现,参考链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-window-0000001820880785
样例代码:
Entry包:
//EntryAbility.ets
......
import {entryName} from 'hsplibrary'
export default class EntryAbility extends UIAbility {
......
onWindowStageCreate(windowStage: window.WindowStage) {
let storage: LocalStorage = new LocalStorage();
windowStage.loadContentByName(entryName, storage, (err, data) => {
if (err.code) {
hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? '');
return;
}
hilog.info(0x0000, 'testTag', 'Succeeded in loading the content. Data: %{public}s', JSON.stringify(data) ?? '');
});
}
......
}
HSP包:
// Index.ets
export const entryName : string = 'Index';
@Entry({ routeName: entryName, storage: LocalStorage.getShared() })
@Component
struct Index {
@State message: string = 'Hello World From Hsp';
build() {
Row() {
Column() {
Text(this.message)
.fontSize(50)
.fontWeight(FontWeight.Bold)
}
.width('100%')
}
.height('100%')
}
}