使用原因: 由于接口是一个异步的操作,会造成数据没回来,路由却加载完了,所以我们要等到数据加载完毕,再渲染路由,但是,普通的await不能够等待模块向外暴露,所以我们使用到了顶层await,当数据回来之后,再暴露。
import { _post } from "@/api";
import { createRouter, createWebHistory } from 'vue-router';
const routes = [
{
path: '/',
redirect: '/',
name: 'index',
component: () => import('@/views/layout/index.vue'),
children:[
{
path: '/',
name: 'home',
component: () => import('@/views/index'),
title: '首页'
},
]
}
]
// 使用顶层await
export default (async () => {
const router = createRouter({
history: createWebHistory(process.env.BASE_URL),
routes
})
let res = await _post({}, "/nav/routerList") // 获取路由的接口
if(res.code == 2000){
res.result.forEach(item => { //遍历
router.addRoute('root',{
path: item.path,
name: item.name,
component: () => import('@/views/'+ item.template),
title: item.title
})
})
}
return router
})();