介绍
本示例将介绍如何使用装饰器和插件,自动生成动态路由表,并通过动态路由跳转到模块中的页面,以及如何使用动态import的方式加载模块。
使用说明
- 自定义装饰器
- 添加装饰器和插件配置文件,编译时自动生成动态路由表
- 配置动态路由,通过WrapBuilder接口,动态创建页面并跳转。
- 动态import变量表达式,需要DevEco Studio NEXT Developer Preview1 (4.1.3.500)版本IDE,配合hvigor 4.0.2版本使用。
实现思路
-
初始化动态路由
public static routerInit(config: RouterConfig, context: Context) { DynamicsRouter.config = config; DynamicsRouter.appRouterStack.push(HOME_PAGE); RouterLoader.load(config.mapPath, DynamicsRouter.routerMap, context); }
-
获取路由
private static getNavPathStack(): NavPathStack { return DynamicsRouter.navPathStack; }
-
通过builderName,注册WrappedBuilder对象,用于动态创建页面
private static registerBuilder(builderName: string, builder: WrappedBuilder<[object]>): void { DynamicsRouter.builderMap.set(builderName, builder); }
-
通过builderName,获取注册的WrappedBuilder对象
public static getBuilder(builderName: string): WrappedBuilder<[object]> { let builder = DynamicsRouter.builderMap.get(builderName); if (!builder) { let msg = "not found builder"; console.info(msg + builderName); } return builder as WrappedBuilder<[object]>; }
-
通过页面栈跳转到指定页面
public stat