vue Router常用屬性詳解
base
基本的路由請(qǐng)求的路徑
如果整個(gè)單頁(yè)應(yīng)用服務(wù)在 /app/ 下,然后 base 就應(yīng)該設(shè)為 “/app/”,所有的請(qǐng)求都會(huì)在url之后加上/app/
new VueRouter({ base: '/app/', ... });
mode
設(shè)置路由工作模式hash或history
hash
http:/8000/#/hello
Vue-router 默認(rèn)使用 hash 模式,使用 hash 模式時(shí) url 中始終有 # 號(hào)。不會(huì)刷新頁(yè)面,也不會(huì)發(fā)起新的 HTTP 請(qǐng)求,只是實(shí)現(xiàn)客戶端頁(yè)面的定位#后面的字符不會(huì)被發(fā)送到服務(wù)器端,# 可以修改瀏覽器的訪問(wèn)歷史記錄。hash 模式是通過(guò)改變錨點(diǎn)(#)來(lái)更新頁(yè)面 url,并不會(huì)觸發(fā)頁(yè)面重新加載。通過(guò)window.onhashchange() 監(jiān)聽(tīng)到hash 的改變,從而處理路由。
history
http:/8000/hello
- Vue-router 默認(rèn)使用 hash 模式,使用 hash 模式時(shí) url 中始終有 # 號(hào)。
- 不會(huì)刷新頁(yè)面,也不會(huì)發(fā)起新的 HTTP 請(qǐng)求,只是實(shí)現(xiàn)客戶端頁(yè)面的定位
- #后面的字符不會(huì)被發(fā)送到服務(wù)器端,# 可以修改瀏覽器的訪問(wèn)歷史記錄。
- hash 模式是通過(guò)改變錨點(diǎn)(#)來(lái)更新頁(yè)面 url,并不會(huì)觸發(fā)頁(yè)面重新加載。
- 通過(guò)window.onhashchange() 監(jiān)聽(tīng)到hash 的改變,從而處理路由。
history模式下可能會(huì)遇到的問(wèn)題及解決方案
- 使用history模式通常本地調(diào)試沒(méi)有什么問(wèn)題,但是一旦發(fā)布到測(cè)試或生產(chǎn)環(huán)境,則會(huì)出現(xiàn)頁(yè)面白屏或者刷新頁(yè)面白屏的現(xiàn)象,這種問(wèn)題的出現(xiàn)是因?yàn)榍岸撕头?wù)端沒(méi)有做相應(yīng)的配置
//前端設(shè)置 module.exports = { // publicPath默認(rèn)值是'/',即你的應(yīng)用是被部署在一個(gè)域名的根路徑上 // 設(shè)置為'./',可以避免打包后的靜態(tài)頁(yè)面空白 // 當(dāng)在非本地環(huán)境時(shí),這里以項(xiàng)目test為例,即打包后的h5項(xiàng)目部署服務(wù)器的test目錄下 // 那么這里就要把publicPath設(shè)置為/test/,表示所有的靜態(tài)資源都在/test/里 // 打包部署后,會(huì)發(fā)現(xiàn)index.html引用的靜態(tài)資源都添加了路徑/test/ publicPath: process.env.NODE_ENV == 'development' ? './' : '/test/', ...... } ///服務(wù)端設(shè)置 location /test{ ... try_files $uri $uri/ /test/index.html //location /test表示項(xiàng)目部署在了 /test目錄下,這里要跟vue.config.js里的publicpath的值保持一致。 之所以刷新頁(yè)面白屏,其實(shí)是因?yàn)槁酚少Y源不存在 }
routes
屬性設(shè)置匹配的路由地址path與路由組件component
new Router({ ... routes: [ { path: '/', component: () => import('.iews/Index'), name: "home", children: [ { path: '/home', name: "home", meta: { title: '管理' }, component: () => import('.src/home/Index') }, ] }, { path: string,//路由路徑 component: Component, // 當(dāng)前路由匹配時(shí)顯示的路由組件 name: string, // 命名路由 redirect: string | Location | Function, // 路由重定向 props: boolean | Object | Function, //路由傳參 alias: string | Array<string>, // 路由別名 children: Array<RouteConfig>, // 嵌套路由 beforeEnter: (to: Route, from: Route, next: Function) => void, //路由守衛(wèi) caseSensitive: boolean, // 匹配規(guī)則是否大小寫敏感?(默認(rèn)值:false) } } ] })
props配置(最佳方案)
{ // 二級(jí)路由 path: 'message', component: Message, children: [ { // 三級(jí)路由 name: 'detail', path: 'details/:id/:title/:desc', // 配置占位符 component: Details, props(route){ // router每次調(diào)的時(shí)候會(huì)把 $route 傳進(jìn)來(lái),你想怎么取就怎么?。? return { id: route.params.id, title: route.params.title, desc: route.params.desc } } // es6解構(gòu)賦值寫法更簡(jiǎn)單 //props({query: {id, title, desc}}){ // return {id, title, desc} //} } ] }
scrollBehavior
置路由跳轉(zhuǎn)時(shí),頁(yè)面滾動(dòng)條的位置
很多情況下,用戶希望查看詳情頁(yè)以后,返回列表頁(yè)剛剛瀏覽的位置,但由于列表頁(yè)組件已經(jīng)被銷毀,所以我們重新返回到列表頁(yè)后頁(yè)面會(huì)置頂,就需要重新下拉查看列表,這樣就做了很多沒(méi)有必要的操作。
new VueRouter({ ... scrollBehavior() { return { x: 0, y: 0 }; }, });
也可以使用如下兩種方案(更推薦使用scrollBehavior方案)
- 使用路由守衛(wèi)),在beforRouterLeave的路由鉤子記錄當(dāng)前頁(yè)面滾動(dòng)位置
//在頁(yè)面離開(kāi)時(shí)記錄滾動(dòng)位置 beforeRouteLeave (to, from, next) { this.scrollTop = document.documentElement.scrollTop || document.body.scrollTop next() }, //進(jìn)入該頁(yè)面時(shí),用之前保存的滾動(dòng)位置賦值 beforeRouteEnter (to, from, next) { next(vm => { document.body.scrollTop = vm.scrollTop }) },
使用keep-alive緩存
//App.vue <template> <div id="app"> <keep-alive> <router-view v-if="$route.meta.keepAlive"></router-view> </keep-alive> <router-view v-if="!$route.meta.keepAlive" /> </div> </template> //router.js routes: [ { path: '/', name: 'List', component: () => import('./list.vue'), meta: { keepAlive: true // 需要緩存 } }, { path: '/content/:contentId', name: 'content', component: () => import('./content.vue'), meta: { keepAlive: false // 不需要緩存 } }, ]
到此這篇關(guān)于vueRouter常用屬性的文章就介紹到這了,更多相關(guān)vueRouter常用屬性內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue+SSM實(shí)現(xiàn)驗(yàn)證碼功能
這篇文章主要介紹了vue+SSM實(shí)現(xiàn)驗(yàn)證碼功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-12-12關(guān)于Vue?CLI3中啟動(dòng)cli服務(wù)參數(shù)說(shuō)明
這篇文章主要介紹了關(guān)于Vue?CLI3中啟動(dòng)cli服務(wù)參數(shù)說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-04-04Vue Router路由動(dòng)態(tài)緩存組件使用詳解
這篇文章主要介紹了Vue Router路由動(dòng)態(tài)緩存組件使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-04-04詳解Vue2 無(wú)限級(jí)分類(添加,刪除,修改)
本篇文章主要介紹了詳解Vue2 無(wú)限級(jí)分類(添加,刪除,修改) ,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-03-03Vue3中的defineExpose函數(shù)用法深入解析
這篇文章主要介紹了Vue3中的defineExpose函數(shù)用法的相關(guān)資料,defineExpose是Vue3中用于在模式下暴露組件內(nèi)部屬性和方法的輔助函數(shù),它允許父組件通過(guò)ref訪問(wèn)子組件的暴露內(nèi)容,提高組件間的交互能力并保持封裝性,需要的朋友可以參考下2025-01-01Vue商品控件與購(gòu)物車聯(lián)動(dòng)效果的實(shí)例代碼
這篇文章主要介紹了Vue商品控件與購(gòu)物車聯(lián)動(dòng)效果的實(shí)例代碼,代碼簡(jiǎn)單易懂非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-07-07Vue下拉框回顯并默認(rèn)選中隨機(jī)問(wèn)題
這篇文章主要介紹了Vue下拉框回顯并默認(rèn)選中隨機(jī)問(wèn)題,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-09-09