本文主要介紹了vue-router 路由基礎的詳解的相關資料,希望透過本文能幫助到大家,讓大家理解掌握這部分內容,需要的朋友可以參考下,希望能幫助到大家。
vue-router 路由基礎的詳解
今天我總結了一下vue-route基礎,vue官方推薦的路由。
一、開始
HTML
<p id="myp"> <h1>简单路由</h1> <router-link to="/foo">Go to foo</router-link> <router-link to="/bar">Go to bar</router-link> // 渲染出口 <router-view></router-view> </p>
建立範本(元件):
(也可以用import 引入外部元件)
var foo={template:"<p>我是foo 组件</p>"}; var bar={template:"<p>我是bar 组件</p>"};
元件注入路由:
##
var routes = [ {path:'/foo',component:foo}, {path:'/bar',component:b ar}, ];
// 这里还可以传入其他配置 const router = new VueRouter({ routes // (缩写)相当于 routes: routes; });
var routerVue = new Vue({ router }).$mount("#myp");
二、動態路由比對
有時候我們需要的是模板結構一樣,當時資料不一樣,就等於我們要把不同ID的登入使用者連接到同一個頁面,但要顯示每個使用者的獨立訊息,這時我們就用到了動態路由匹配。HTML
<p id="myp"> // 点击对应链接时传入对应参数foo 和 bar <router-link to="/User/:foo">Go to foo</router-link> <router-link to="/User/:bar">Go to bar</router-link> <router-view></router-view> </p>
#
const User = { template:'<p>我的ID是{{ $route.params.id }}</p>', // 在路由切换时可以观察路由 watch:{ '$route'(to,form){ console.log(to); //要到达的 console.log(form); } } } const router = new VueRouter({ routes:[ {path:'/user/:id',component:User} // 标记动态参数 id ] }); var myVue = new Vue({ router }).$mount("#myp")
三、巢狀路由
1.嵌套路由講的是我們可以在<p id="myp"> <router-link to="/User/:foo">Go to foo</router-link> <router-link to="/User/:bar">Go to bar</router-link> <router-view></router-view> </p>
const User = { template:'<p><p>我的ID是{{ $route.params.id }}</p><router-link to="/user/childone">ChildOne</router-link><router-link to="/user/childtwo">ChildOne</router-link><router-view></router-view></p>', } // 子路由 const userChildOne = { template:'<p>我是 userChildOne</p>' } const userChildTwo = { template:'<p>我是 userChildTwo</p>' } const router = new VueRouter({ routes:[ {path:'/user/:id',component:User, children:[ // 用法和参数和routes 一样 {path:"/user/childone",component:userChildOne}, {path:"/user/childtwo",component:userChildTwo} ] } ] }); var myVue = new Vue({ router }).$mount("#myp")
四、命名路由
1.給路由命名指定路路由跳轉,要用到參數name 和v-bindHTML:<p id="myp"> <!-- 要用v-bind 的绑定to --> <router-link :to="{name:'userOne',params:{userId:'123'}}">Go to foo</router-link> <router-link :to="{name:'userTwo',params:{userId:'456'}}">Go to bar</router-link> <router-view></router-view> </p>
const User = { template:'<p>我的ID是{{ $route.params.userId }}</p>', watch:{ '$route'(to,form){ console.log(to); console.log(form); } } } const router = new VueRouter({ routes:[ // name 一一对应上 {path:'/user/:userId',name:"userOne",component:User}, {path:'/user/:userId',name:"userTwo",component:User} ] }); var myVue = new Vue({ router }).$mount("#myp")
#五、命名檢視
1.為渲染視圖router-view 命名,來製定讓那個視圖渲染元件
#
<p id="myp"> <!-- 要用v-bind 的绑定to --> <router-link :to="{name:'userOne',params:{userId:'123'}}">Go to foo</router-link> <router-link :to="{name:'userTwo',params:{userId:'456'}}">Go to bar</router-link> <!-- 视图命名 如果不写name 则为默认为 default--> <router-view></router-view> <router-view name='b'></router-view> </p>
// 四个模板 const UserA = { template:'<p>我是one,ID是{{ $route.params.userId }}</p>', } const UserB = { template:'<p>我是two,ID是{{ $route.params.userId }}</p>', } const UserC = { template:'<p>我是three,ID是{{ <1ro></1ro>ute.params.userId }}</p>', } const UserD = { template:'<p>我是four,ID是{{ $route.params.userId }}</p>', } const router = new VueRouter({ routes:[ // name 一一对应上 { path:'/user/:userId', name:"userOne", components:{ // 注意这里为components 多个“ s ” default:UserA, b:UserB } }, { path:'/user/:userId', name:"userTwo", components:{ default:UserD, b:UserC } } ] }); var myVue = new Vue({ router }).$mount("#myp")
六、重定向和別名
重定向和別名,首先我先解釋一下什麼叫做重定向和別名‘重定向’的意思是,當使用者訪問/a時,URL 將會被替換成/b,然後匹配路由為/b,#‘別名’ /a 的別名是/b,意味著,當使用者訪問/b 時,URL 會保持為/b,但是路由匹配則為/a,就像使用者存取/a 一樣。 /a 的別名是 /b,這意味著,當使用者存取 /b 時,URL 會保持為 /b,但是路由匹配則為 /a,就像使用者存取 /a 一樣。重定向主要用參數:redirect 而別名主要用到參數: alias
<p id="myp"> <h2>效果查看地址栏最后面的变化</h2> <router-link to="/User/foo">Go to foo</router-link> <router-link to="/User/bar">Go to bar</router-link> <router-link to="/User/Car">Go to bar</router-link> <router-view></router-view> </p>
const User = { template:'<p>我是同一个页面</p>', } const router = new VueRouter({ mode:"history", routes:[ { path:'/User/foo',component:User}, { path:'/User/bar',redirect: '/User/foo',component:User}, // 重定向的目标也可以是一个命名的路由: // 甚至是一个方法,动态返回重定向目标: // 别名设置 { path:'/User/foo',alias: '/User/Car'} ] }); var myVue = new Vue({ router }).$mount("#myp")
基於Vue、Vuex、Vue -router實作動畫切換功能
以上是vue-router路由基礎實例分享的詳細內容。更多資訊請關注PHP中文網其他相關文章!