记录一下vue路由自动注册的一种方式
根据src/views文件夹的路径自动注册路由,文件结构如下:
src
|--view
|----page1 // 页面一
|------components // 页面一的组件
|------index.vue // 页面一的入口组件
|----page2 // 页面2
|------components // 页面2的组件
|------index.vue // 页面2的入口组件
|----index.vue // 公共的布局组件
router/index.js
import Vue from 'vue'
import VueRouter from 'vue-router'
important index from '../views/index.vue'
// 路由自动化注册
const requireComponent = require.context('@/views', true, /index.vue$/) // 找到views路径下的所有文件
const dynamic_route = requireComponent.keys().filter(fileName => {
if(fileName === './index.vue') { // 过滤掉父节点的路由
return false
} else {
return true
}
})
.map(fileName => {
const componentConfig = requireComponent(fileName)
const componentName = fileName.replace(/^\.\//,'').replace(/\.vue$/,'')// 剥去文件名开头的 `./` 和`.vue`结尾的扩展名
const componentNameRe = componentName.replace(/\//g,'-') // 设置name为文件夹名-index
const component = Vue.component(componentNameRe,componentConfig.default || componentConfig) // 根据路径注册成组件
const result = {
path: componentName,
name: componentNameRe,
component
}
return result
})
const routes = [
{
path: '/',
component: index,
name:'index',
children: dynamic_route
}
]
export default routes