Vue开发之基础路由 (2)

修改App.vue文件,在router-link标签中使用name来绑定路由名

<template> <div> <div> <router-link v-bind:to="{ name:'home'}">Home</router-link> | <router-link :to="{ name:'about'}">About</router-link> </div> <router-view/> </div> </template> <style> #app { font-family: 'Avenir', Helvetica, Arial, sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-align: center; color: #2c3e50; } #nav { padding: 30px; } #nav a { font-weight: bold; color: #2c3e50; } #nav a.router-link-exact-active { color: #42b983; } </style>

v-bind:to 方法可以简写成: :to

使用浏览器访问URL::8080/#/,在页面上点击Home和About标签,可以正常的渲染

2.4 命名视图

如果想在同一个页面上显示多个视图,并分别对不同的视图进行布局时,可以在div标签中定义多个router-view标签,并为每个router-view标签定义名字,这就是命名视图

修改src/App.vue文件,添加两个命名视图view1和view2

<template> <div> <div> <router-link v-bind:to="{ name:'home'}">Home</router-link> | <router-link :to="{ name:'about'}">About</router-link> </div> <router-view/> <router-view/> // 添加router-view标签,并把名字定义为view1 <router-view/> // 添加router-view标签,并把名字定义为view2 </div> </template> <style> #app { font-family: 'Avenir', Helvetica, Arial, sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-align: center; color: #2c3e50; } #nav { padding: 30px; } #nav a { font-weight: bold; color: #2c3e50; } #nav a.router-link-exact-active { color: #42b983; } </style>

然后修改src/router/router.js文件,在新添加的路由中添加两个命名视图

import Home from '@/views/Home.vue' export default [ { path: 'http://www.likecs.com/', name: 'home', component: Home, }, { path: '/about', name: 'about', component: () => import('@/views/About.vue'), },{ path:'/argu/:name', component:() => import('@/views/argu.vue') },{ path:'/parent', component:() => import('@/views/parent.vue'), children:[ { path:'child', component:() => import('@/views/child.vue') } ] },{ path:'/named_view', // 命名视图 components:{ // default会默认加载App.vue中没有命名的视图 default: () => import('@/views/child.vue'), view1: () => import('@/views/view1.vue'), view2: () => import('@/views/view2.vue'), } } ]

然后在src/views目录下添加view1.vue和view2.vue文件

view1.vue文件内容为

<template> <div> I am view1 </div> </template>

view2.vue文件内容为

<template> <div> I am view2 </div> </template>

在浏览器中打开URL;:8080/#/named_view

Vue开发之基础路由

在浏览器中安装 Vue Devtool插件,可以看到页面上渲染了3个router-view组件

Vue开发之基础路由

2.5 重定向路由

重定向路由的作用是把当前要访问的URL重定向到另一个URL

修改src/router/router.js文件,添加重定向路由

import Home from '@/views/Home.vue' export default [ { path: 'http://www.likecs.com/', name: 'home', component: Home, }, { path: '/about', name: 'about', // route level code-splitting component: () => import('@/views/About.vue'), },{ path:'/argu/:name', component:() => import('@/views/argu.vue') },{ path:'/parent', component:() => import('@/views/parent.vue'), children:[ { path:'child', component:() => import('@/views/child.vue') } ] },{ path:'/about_path', // 重定向路由 redirect:'about' } ]

当使用浏览器访问URL::8080/#/about_path时,就会跳转到路由名为 about的路由上去,即访问了/about路由

在重定向路由中,也可以使用命名路由的方式

即把/about_path修改成使用命名路由的重定向方式

{ path: '/about_path', redirect: { name:'about' } }

在重定向的redirect中,也可以传入一个函数

修改about_path路由

{ path: '/about_path', redirect: to => { console.log(to) // 打印出传入的to函数 } }

浏览器打开URL::8080/#/about_path,在调试样中查看打印出的结果

Vue开发之基础路由

修改about_path路由,在redirect中定义函数体

{ path: '/about_path', redirect: to => { return{ name:'home' } } }

刷新浏览器,页面就跳转到home页面了

redirect中定义的to函数也可以返回一个路由路径

{ path: '/about_path', redirect: to => { return '/named_view' } }

此时打开URL::8080/#/about_path,页面就会跳转到/named_view页面中

上面redirect中的函数体可以简写成

{ path: '/about_path', redirect: to => '/named_view' } 2.6 路由别名

路由别名,顾名思义就是为一个路由设置一个别名,设置别名以后即可以通过路由的path的值进行访问,也可以通过别名访问这个路由

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpzgsf.html