談?wù)剬?duì)Vue?Router的理解
1.1 相關(guān)理解
1.1.1 vue-router
的理解
Vue
的一個(gè)插件庫(kù),專門用來(lái)實(shí)現(xiàn) SPA
應(yīng)用
1.1.2 對(duì) SPA
應(yīng)用的理解
- 單頁(yè)
Web
應(yīng)用(single page web application,SPA) - 整個(gè)應(yīng)用只有一個(gè)完整的頁(yè)面
- 點(diǎn)擊頁(yè)面中的導(dǎo)航鏈接不會(huì)刷新頁(yè)面,只會(huì)做頁(yè)面的局部更新
- 數(shù)據(jù)需要通過
Ajax
請(qǐng)求獲取
1.1.3 路由的理解
什么是路由
一個(gè)路由就是一組映射關(guān)系(key-value
)key
為路徑,value
可能是function
或component
路由分類
后端路由:理解:
value
是function
, 用于處理客戶端提交的請(qǐng)求工作過程:服務(wù)器接收到一個(gè)請(qǐng)求時(shí),根據(jù)請(qǐng)求路徑找到匹配的函數(shù)來(lái)處理請(qǐng)求,返回響應(yīng)數(shù)據(jù)
2.前端路由:
理解:
value
是component
,用于展示頁(yè)面內(nèi)容工作過程:當(dāng)瀏覽器的路徑改變時(shí),對(duì)應(yīng)的組件就會(huì)顯示。
1.2 基本路由
1.2.1 安裝與使用
安裝
vue-router
,命令:npm install vue-router
應(yīng)用插件:
Vue.use(VueRouter)
編寫 router
配置項(xiàng):
//引入VueRouter import VueRouter from 'vue-router' //引入Luyou 組件 import About from '../components/About' import Home from '../components/Home' //創(chuàng)建router實(shí)例對(duì)象,去管理一組一組的路由規(guī)則 const router = new VueRouter({ routes:[ { path:'/about', component:About }, { path:'/home', component:Home } ] }) //暴露router export default router
- 實(shí)現(xiàn)切換(
active-class
可配置高亮樣式)
<router-link active-class="active" to="/about">About</router-link>
- 指定展示位置
<router-view></router-view>
幾個(gè)注意點(diǎn):
路由組件通常存放在
pages
文件夾,一般組件通常存放在components
文件夾通過切換,“隱藏”了的路由組件,默認(rèn)是被銷毀掉的,需要的時(shí)候再去掛載
每個(gè)組件都有自己的
$route
屬性,里面存儲(chǔ)著自己的路由信息整個(gè)應(yīng)用只有一個(gè)
router
,可以通過組件的$router
屬性獲取到
1.2.2 總結(jié)
編寫使用路由的 3 步
- 定義路由組件
- 注冊(cè)路由
- 使用路由
1.3 嵌套(多級(jí))路由
- 配置路由規(guī)則,使用
children
配置項(xiàng):
routes:[ { path:'/about', component:About, }, { path:'/home', component:Home, children:[ //通過children配置子級(jí)路由 { path:'news', //此處一定不要寫:/news component:News }, { path:'message',//此處一定不要寫:/message component:Message } ] } ]
跳轉(zhuǎn)(要寫完整路徑):
<router-link to="/home/news">News</router-link>
1.4 路由傳參
1.4.1 路由的 query
參數(shù)
- 傳遞參數(shù)
<!-- 跳轉(zhuǎn)并攜帶query參數(shù),to的字符串寫法 --> <router-link :to="/home/message/detail?id=666&title=你好">跳轉(zhuǎn)</router-link> <!-- 跳轉(zhuǎn)并攜帶query參數(shù),to的對(duì)象寫法 --> <router-link :to="{ path:'/home/message/detail', query:{ id:666, title:'你好' } }" >跳轉(zhuǎn)</router-link>
- 接收參數(shù):
$route.query.id $route.query.title
1.4.2 命名路由
作用:可以簡(jiǎn)化路由的跳轉(zhuǎn)。
- 如何使用
給路由命名:
{ path:'/demo', component:Demo, children:[ { path:'test', component:Test, children:[ { name:'hello' //給路由命名 path:'welcome', component:Hello, } ] } ] }
簡(jiǎn)化跳轉(zhuǎn):
<!--簡(jiǎn)化前,需要寫完整的路徑 --> <router-link to="/demo/test/welcome">跳轉(zhuǎn)</router-link> <!--簡(jiǎn)化后,直接通過名字跳轉(zhuǎn) --> <router-link :to="{name:'hello'}">跳轉(zhuǎn)</router-link> <!--簡(jiǎn)化寫法配合傳遞參數(shù) --> <router-link :to="{ name:'hello', query:{ id:666, title:'你好' } }" >跳轉(zhuǎn)</router-link>
1.4.3 路由的 params
參數(shù)
- 配置路由,聲明接收
params
參數(shù)
{ path:'/home', component:Home, children:[ { path:'news', component:News }, { component:Message, children:[ { name:'xiangqing', path:'detail/:id/:title', //使用占位符聲明接收params參數(shù) component:Detail } ] } ] }
- 傳遞參數(shù)
<!-- 跳轉(zhuǎn)并攜帶params參數(shù),to的字符串寫法 --> <router-link :to="/home/message/detail/666/你好">跳轉(zhuǎn)</router-link> <!-- 跳轉(zhuǎn)并攜帶params參數(shù),to的對(duì)象寫法 --> <router-link :to="{ name:'xiangqing', params:{ id:666, title:'你好' } }" >跳轉(zhuǎn)</router-link>
特別注意:路由攜帶
params
參數(shù)時(shí),若使用to
的對(duì)象寫法,則不能使用path
配置項(xiàng),必須使用name
配置!
- 接收參數(shù):
$route.params.id $route.params.title
1.4.4 路由的 props
配置
作用:讓路由組件更方便的收到參數(shù)
{ name:'xiangqing', path:'detail/:id', component:Detail, //第一種寫法:props值為對(duì)象,該對(duì)象中所有的key-value的組合最終都會(huì)通過props傳給Detail組件 // props:{a:900} //第二種寫法:props值為布爾值,布爾值為true,則把路由收到的所有params參數(shù)通過props傳給Detail組件 // props:true //第三種寫法:props值為函數(shù),該函數(shù)返回的對(duì)象中每一組key-value都會(huì)通過props傳給Detail組件 props(route){ return { id:route.query.id, title:route.query.title } } }
1.4.5 <router-link> 的 replace 屬性
- 作用:控制路由跳轉(zhuǎn)時(shí)操作瀏覽器歷史記錄的模式
- 瀏覽器的歷史記錄有兩種寫入方式:分別為
push
和replace
,push
是追加歷史記錄,replace
是替換當(dāng)前記錄。路由跳轉(zhuǎn)時(shí)候默認(rèn)為push
- 如何開啟
replace
模式:<router-link replace .......>News</router-link>
1.5 編程式路由導(dǎo)航
this.$router.push(path)
: 相當(dāng)于點(diǎn)擊路由鏈接(可以返回到當(dāng)前路由界面)this.$router.replace(path)
: 用新路由替換當(dāng)前路由(不可以返回到當(dāng)前路由界面)this.$router.back()
: 請(qǐng)求(返回)上一個(gè)記錄路由this.$router.go(-1)
: 請(qǐng)求(返回)上一個(gè)記錄路由this.$router.go( 1 )
: 請(qǐng)求下一個(gè)記錄路由
到此這篇關(guān)于談?wù)剬?duì)Vue Router的理解的文章就介紹到這了,更多相關(guān)Vue Router內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章

ant-design-vue中的select選擇器,對(duì)輸入值的進(jìn)行篩選操作

vue在table表中懸浮顯示數(shù)據(jù)及右鍵菜單

Vue開發(fā)手冊(cè)Function-based?API?RFC

vue實(shí)現(xiàn)導(dǎo)出word文檔的示例代碼

echarts實(shí)現(xiàn)獲取datazoom的起始值(包括x軸和y軸)

vue項(xiàng)目中axios請(qǐng)求網(wǎng)絡(luò)接口封裝的示例代碼