0%

【040】vue-cli4.0基础学习:命名路由

一,前言

我们经常会一边开发项目,一边调整项目。比如现在我们把所有的组件都放在了components文件夹下面,如果后期我们需要修改组件的路径,那么问题就来了,比如我需要修改v-about.vue文件的路径,那么我们就需要修改v-header.vuerouter -> index.js文件对应的路径。如果只是修改一个文件路径,问题倒不大,可是如果我们需要修改十几个或更多组件的路径,这就很头疼了。那么怎么解决这个问题呢?你可以在创建 Router 实例的时候,在 routes 配置中给某个路由设置名称。

模版代码:

1
2
3
4
5
6
7
8
9
const router = new VueRouter({
routes: [
{
path: '/user/:userId',
name: 'user',
component: User
}
]
})

其实就是在路由配置时,给该组件加了一个name

二,开始尝试

我们现在components文件夹下新建一个名称为content的文件夹,然后将v-about.vuev-index.vuev-news.vuev-news-detail.vue等四个文件放到content文件夹中。

当修改了路径后,大家可以看到cmd窗口开始报错,vue-cli项目在浏览器中打开是一片空白,什么都没有。

目前项目目录结构如下:

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
.
|-- node_modules
|-- public
| |-- favicon.ico
| |-- index.html
|-- src
| |-- assets
| | |-- css
| | | |-- app.css
| |-- components
| | | |-- content
| | | | |-- v-about.vue
| | | | |-- v-index.vue
| | | | |-- v-news-detail.vue
| | | | |-- v-news.vue
| | |-- HelloWorld.vue
| | |-- v-header.vue
| | |-- v-success.vue
| |-- router
| | |-- index.js
| |-- App.vue
| |-- main.js
|-- .gitignore
|-- babel.config.js
|-- package-lock.json
|-- package.json
|-- README.md
.

修改路由配置

打开router -> index.js文件添加name

修改后的完整代码如下:

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
// 引入 Vue
import Vue from 'vue';
// 引入 vue-router
import VueRouter from 'vue-router';
// 安装使用 vue-router
Vue.use(VueRouter);
// 引入首页
import vIndex from '../components/content/v-index.vue';
// 开始使用 vue-router
let routes = new VueRouter({
routes: [
{
path: '/',
name: 'index',
component: vIndex
},
{
path: '/about',
name: 'about',
component: () => import(/* webpackChunkName: "about" */ '../components/content/v-about.vue')
},
{
path: '/success',
component: () => import(/* webpackChunkName: "success" */ '../components/v-success.vue')
},
{
path: '/news',
name: 'news',
component: () => import(/* webpackChunkName: "news" */ '../components/content/v-news.vue')
},
{
path: '/news/:id',
name: 'detail',
component: () => import(/* webpackChunkName: "news" */ '../components/content/v-news-detail.vue')
},
]
});
// 提供接口给外面使用
export default routes;

接着打开v-header.vue文件修改router-link中的to

修改后的完整代码如下:

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
<template>
<div class="v-header">
<ul class="menus">
<li
class="menu"
v-for="item in menus"
:key="item.id"
>
<router-link :to="{ name: item.path }">{{ item.name }}</router-link>
</li>
</ul>
</div>
</template>

<script>
export default {
name: 'v-header',
desc: '头部信息',
data() {
return {
menus: [
{ id: 1, name: '首页', path: 'index' },
{ id: 2, name: '新闻', path: 'news' },
{ id: 3, name: '关于', path: 'about' },
]
}
}
}
</script>

<style scoped>
.v-header {
width: 100%;
height: 70px;
background-color: #fff;
box-shadow: 3px 3px 3px #ddd;
color: #333;
}
.menus {
list-style: none;
padding: 0 20px;
overflow: hidden;
}
.menu {
float: left;
padding: 0 20px;
height: 70px;
line-height: 80px;
transition: .3s;
}
.menu:hover {
cursor: pointer;
color: #0051ff;
background-color: #efefef;
}
</style>

最后再打开v-news.vue文件修改router-link中的to

修改后的完整代码如下:

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
<template>
<div class="v-news content">
<ul>
<li v-for="item in lists" :key="item.id">
<router-link :to="{ name: 'detail', params: { id: item.id } }">{{ item.title }}</router-link>
</li>
</ul>
</div>
</template>

<script>
export default {
name: 'v-news',
desc: '新闻列表',
data() {
return {
lists: [
{ id: 1, title: '新闻标题 1' },
{ id: 2, title: '新闻标题 2' },
{ id: 3, title: '新闻标题 3' },
{ id: 4, title: '新闻标题 4' },
{ id: 5, title: '新闻标题 5' },
{ id: 6, title: '新闻标题 6' },
]
}
}
}
</script>

到目前位置,代码已经修改完成了,可以在浏览器中打开看看效果。如果再次发生组件的路径改变,那么我们只需要直接修改router -> index.js文件即可。

三,总结

希望大家能敲一遍代码,体验修改的繁琐和添加命名路由的方便,这样在以后开发时,就会考虑到底要使用path还是name。如果大家需要vue-cli项目源码,可以私信我哈。