03组件批量注册
全局组件注册
引入Vue实例对象
遍历全局组件文件夹
批量注册全局组件
import Vue from 'vue'
const requireContext = require.context(
'./globar',
true, //递归查找目录
/\.vue$/ //匹配规则
)
requireContext.keys().forEach((filename) => {
const componentConfig = requireContext(filename) //获取组件内容
Vue.component(
componentConfig.default.name || componentConfig.name,
componentConfig.default || componentConfig
)
})
全局组件内容
<template>
<div>Base Test</div>
</template>
<script>
export default {
name: 'BaseTest'
}
</script>
<style lang='' scoped>
</style>
在页面中使用全局组件
驼峰写法自动换成以
-
间隔的大写字母换成小写
<base-test></base-test>
路由注册
路由在组件化之后,进行批量注册
例如·在users
文件夹是关于用户所有的路由
export default [
{
path: '/users',
name: 'user',
component: () => import('@/views/layout/common.vue'),
children: [
{
path: 'list',
name: 'user-list',
component: () => import('@/views/users/list.vue'),
meta: { title: '用户列表' }
},
{
path: 'edit',
name: 'user-edit',
component: () => import('@/views/users/edit.vue'),
meta: { title: '用户编辑页面' }
}
]
}
]
在路由注册文件index.js
中引入所有路由
同样使用到
require.context
函数遍历当前路由文件夹对路由注册文件
index.js
不进行操作将其他组件路由合并成数组
最后注册路由
import Vue from 'vue'
import VueRouter from 'vue-router'
Vue.use(VueRouter)
let routes = []
const requireContext = require.context('./', true, /\.js$/)
requireContext.keys().forEach((filename) => {
if (filename === './index.js') {
return
}
const routeModule = requireContext(filename) // 获取文件内容
routes = [...routes, ...routeModule.default] // 合并两个数组内容
})
const router = new VueRouter({
routes
})
在路由注册完成后,也可以动态的添加路由
router.addRoutes([
{
path: '/',
name: 'Home',
component: Home
},
{
path: '/about',
name: 'About',
// route level code-splitting
// this generates a separate chunk (about.[hash].js) for this route
// which is lazy-loaded when the route is visited.
component: () =>
import(/* webpackChunkName: "about" */ '../views/About.vue')
}
])
全局路由守卫,添加跳转进度条
// 全局路由守卫
router.beforeEach((to, form, next) => {
Nprogress.start()
next()
})
router.afterEach((to, from) => {
Nprogress.done()
})
Last updated