vue动态添加路由,element-admin后台路由
element
A Vue.js 2.0 UI Toolkit for Web
项目地址:https://gitcode.com/gh_mirrors/eleme/element
免费下载资源
·
很多后台项目的菜单都是可配置的
所以需要从后台取到菜单数据并加到路由映射用
1.第一步,将后台数据转换成vue-router 需要的数据格式,以下是路由格式
declare type RouteConfig = {
path: string; //路径
component?: Component;//对应模块
name?: string; // 命名路由
components?: { [name: string]: Component }; // 命名视图组件
redirect?: string | Location | Function;
props?: boolean | Object | Function;
alias?: string | Array<string>;
children?: Array<RouteConfig>; // 嵌套路由
beforeEnter?: (to: Route, from: Route, next: Function) => void;
meta?: any;
// 2.6.0+
caseSensitive?: boolean; // 匹配规则是否大小写敏感?(默认值:false)
pathToRegexpOptions?: Object; // 编译正则的选项
}
这里特别要注意的是component的写法
component = () => import(@/views${nm.path}
)
webpack 编译es6 动态引入 import() 时不能传入变量,例如import(dir) , 而要传入字符串 import(‘path/to/my/file.js’),这是因为webpack的现在的实现方式不能实现完全动态。
但一定要用变量的时候,可以通过字符串模板来提供部分信息给webpack;例如import(./path/${myFile}
), 这样编译时会编译所有./path下的模块,但运行时确定myFile的值才会加载,从而实现懒加载。
最后再用
router.addRoutes(accessRoutes)
将转换好的数组添加到路由映射中
这里有一点需要注意,就是addRoutes应放在路由守卫
router.beforeEach(async(to, from, next) => {
router.addRoutes(accessRoutes)
})
GitHub 加速计划 / eleme / element
54.06 K
14.63 K
下载
A Vue.js 2.0 UI Toolkit for Web
最近提交(Master分支:2 个月前 )
c345bb45
7 个月前
a07f3a59
* Update transition.md
* Update table.md
* Update transition.md
* Update table.md
* Update transition.md
* Update table.md
* Update table.md
* Update transition.md
* Update popover.md 7 个月前
更多推荐
已为社区贡献3条内容
所有评论(0)