一,前言
我们经常会一边开发项目,一边调整项目。比如现在我们把所有的组件都放在了components文件夹下面,如果后期我们需要修改组件的路径,那么问题就来了,比如我需要修改v-about.vue文件的路径,那么我们就需要修改v-header.vue和router -> 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.vue,v-index.vue,v-news.vue和v-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项目源码,可以私信我哈。