HarmonyOS鸿蒙Next实现应用导航框架示例代码
HarmonyOS鸿蒙Next实现应用导航框架示例代码
介绍
- 本示例介绍Navigation系统路由表+动态import+Tabs 搭建的应用导航框架,通过系统路由表解决分包多团队开发耦合问题,彼此仅关注本团队负责Har包开发内容,将页面注册到系统路由表中,解决PageMap会导致代码产生大量的If/else分支问题,介绍了如何跳转同HAP包页面,har包页面跳转。
- 通过动态Import解决页面动态渲染的诉求,常用场景:首页多种样式,通过主题字段确定样式的加载。
- TabBar作为底部导航栏,屏蔽Navigation导航栏。
效果预览

使用说明
点击底部TabBar可以切换展示页面,我的页面介绍了动态Import的使用,首页介绍了路由跳转的使用,包含跳转、pop等用法。
实现思路
- 动态import需要在build-profile.json5文中完成配置
"buildOption": {
"arkOptions": {
"runtimeOnly": {
"sources": [
"./src/main/ets/pages/TabStyleA.ets",
"./src/main/ets/pages/TabStyleB.ets"
]
}
}
......
}
- 使用import和相对路径进行动态加载
loadTabBar() {
import('./' + this.styleName).then((result: ESObject) => {
this.globalBuilder = result.getBuilder();
hilog.info(0xFF00, 'info', '%{public}s', 'load success');
}).catch((err: Error) => {
hilog.error(0xFFFF, "error", "%{public}s", "not found")
this.globalBuilder = wrapBuilder(defaultBuilder);
});
}
- 页面跳转目标模块module.json5文件中声明路由表
"routerMap": "$profile:route_map"
- 并在src/main/resources/base/profile/路径下完成路由表route_map.json配置
{
"routerMap": [
{
"name": "pageText",
"pageSourceFile": "src/main/ets/pages/TextExample.ets",
"buildFunction": "pageTextBuilder"
}
]
}
- 目标页面声明Builder函数
@Builder
function pageTextBuilder() {
TextExample()
}
- 定义NavPathStack进行跳转操
private stack: NavPathStack = new NavPathStack();
......
this.stack.pushPath({
name: 'pageText', param: 'tabStyleA', onPop: (popInfo) => {
hilog.info(0xFF00, 'info', '%{public}s', '返回页面成功 ' + JSON.stringify(popInfo.result));
}
})
更多关于HarmonyOS鸿蒙Next实现应用导航框架示例代码的实战教程也可以访问 https://www.itying.com/category-93-b0.html
1 回复


