VueRouter路由別名、重定向
阿新 • • 發佈:2020-08-01
路由重定向
重定向到路由地址
通過屬性 redirect 指定重定向的路由地址:
const router = new VueRouter({
routes: [
{ path: '/a', redirect: '/b' }
]
})
示例
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> </head> <body> <div id="app"> <div> <router-link to="/index">首頁</router-link> <router-link to="/article">文章</router-link> </div> <router-view></router-view> </div> </body> <script src="https://unpkg.com/vue/dist/vue.js"></script> <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script> <script type="text/javascript"> const Index = Vue.component('index', { template: '<div>Hello,歡迎使用慕課網學習 Vue 教程!</div>', }) const Article = Vue.component('myArticle', { template: `<ul><li>1. Vue 計算屬性的學習</li><li>2. React 基礎學習</li></ul>`, }) const routes = [ { path: '/', redirect: '/index' }, { path: '/index', component: Index }, { path: '/article', component: Article } ] const router = new VueRouter({ routes: routes }) var vm = new Vue({ el: '#app', router: router, data() { return {} } }) </script> </html>
重定向到具名路由
通過屬性 redirect 重定向到具名路由:
const router = new VueRouter({
routes: [
{ path: '/a', redirect: {name: 'name'} }
]
})
示例
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> </head> <body> <div id="app"> <div> <router-link to="/index">首頁</router-link> <router-link to="/article">文章</router-link> </div> <router-view></router-view> </div> </body> <script src="https://unpkg.com/vue/dist/vue.js"></script> <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script> <script type="text/javascript"> const Index = Vue.component('index', { template: '<div>Hello,歡迎使用慕課網學習 Vue 教程!</div>', }) const Article = Vue.component('myArticle', { template: `<ul><li>1. Vue 計算屬性的學習</li><li>2. React 基礎學習</li></ul>`, }) const routes = [ { path: '/', redirect: {name: 'index'} }, { path: '/index', name: 'index', component: Index }, { path: '/article', name: 'article', component: Article } ] const router = new VueRouter({ routes: routes }) var vm = new Vue({ el: '#app', router: router, data() { return {} } }) </script> </html>
動態返回重定向目標
屬性 redirect 可以接收一個方法,動態返回重定向目標:
const router = new VueRouter({
routes: [
{ path: '/a', redirect: to => {
// 方法接收 目標路由 作為引數
// return 重定向的 字串路徑/路徑物件
}}
]
})
示例
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> </head> <body> <div id="app"> <div> <router-link to="/index">首頁</router-link> <router-link to="/article">文章</router-link> </div> <router-view></router-view> </div> </body> <script src="https://unpkg.com/vue/dist/vue.js"></script> <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script> <script type="text/javascript"> const Index = Vue.component('index', { template: '<div>Hello,歡迎使用慕課網學習 Vue 教程!</div>', }) const Article = Vue.component('myArticle', { template: `<ul><li>1. Vue 計算屬性的學習</li><li>2. React 基礎學習</li></ul>`, }) const routes = [ { path: '/', redirect: to => { if(Math.random() > 0.5) { return '/index' }else { return { name: 'article' } } }}, { path: '/index', name: 'index', component: Index }, { path: '/article', name: 'article', component: Article } ] const router = new VueRouter({ routes: routes }) var vm = new Vue({ el: '#app', router: router, data() { return {} } }) </script> </html>
路由別名
“重定向”的意思是,當用戶訪問 /a 時,URL 將會被替換成 /b,然後匹配路由為 /b,那麼“別名”又是什麼呢?
/a 的別名是 /b,意味著,當用戶訪問 /b 時,URL 會保持為 /b,但是路由匹配則為 /a,就像使用者訪問 /a 一樣。
const router = new VueRouter({
routes: [
{ path: '/a', component: A, alias: '/b' }
]
})
示例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<div id="app">
<div>
<router-link to="/index">首頁</router-link>
<router-link to="/article">文章</router-link>
</div>
<router-view></router-view>
</div>
</body>
<script src="https://unpkg.com/vue/dist/vue.js"></script>
<script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
<script type="text/javascript">
const Index = Vue.component('index', {
template: '<div>Hello,歡迎使用慕課網學習 Vue 教程!</div>',
})
const Article = Vue.component('myArticle', {
template: `<ul><li>1. Vue 計算屬性的學習</li><li>2. React 基礎學習</li></ul>`,
})
const routes = [
{ path: '/index', component: Index, alias: '/' },
{ path: '/article', component: Article }
]
const router = new VueRouter({
routes: routes
})
var vm = new Vue({
el: '#app',
router: router,
data() {
return {}
}
})
</script>
</html>