index.js
1.94 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
import Vue from "vue";
import Router from "vue-router";
Vue.use(Router);
// 解决同一页面,参数不同的路由报错
const VueRouterPush = Router.prototype.push;
Router.prototype.push = function push(to) {
return VueRouterPush.call(this, to).catch((err) => err);
};
/**
* 加载模块
* @param {string | Component} component 路径或组件
* @param {boolean} lazy 是否懒加载
* @returns {Function | object} 懒加载方法或组件对象
*/
const loadComponent = (component, lazy = true) =>
lazy ? () => import(`views/${component}.vue`) : component;
const router = new Router({
// mode: 'history',
routes: [
{
path: "/index",
component: loadComponent("home/index"),
meta: {
title: "首页",
},
},
{
path: "/label",
component: loadComponent("home/label"),
children: [
{
path: ":keyword",
component: loadComponent("home/components/blogClassify"),
meta: {
title: "文章分类",
},
},
],
},
{
path: "/article/detail",
component: loadComponent("article/detail"),
children: [
{
path: ":id",
component: loadComponent("article/components/detailContent"),
meta: {
title: "文章详情",
},
},
],
},
{
path: "/message",
component: loadComponent("message/index"),
meta: {
title: "留言板",
},
},
{
path: "/myself",
component: loadComponent("myself/index"),
meta: {
title: "关于我们",
},
},
{
path: "*",
redirect: "/index",
},
],
});
router.beforeEach((to, from, next) => {
/* 路由发生变化修改页面title */
if (to.meta && to.meta.title) {
document.title = to.meta.title;
}
next();
});
export default router;