vue中vue-router的使用說明(包括在ssr中的使用)
vue筆記之vue-router的使用(包括ssr中的使用)
安裝vue-router
命令行執(zhí)行:
npm i vue-router -S
創(chuàng)建配置文件
在項(xiàng)目src文件夾下創(chuàng)建config文件夾存放路由配置
在config文件夾下新建router.js和routes.js
- router.js: 存放路由設(shè)置
- routes.js: 存放理由映射規(guī)則
路由映射規(guī)則配置
import Login from '../views/login/login .vue'
// import 組件名 from '組件路徑'
import Register from '../views/register/register.vue'
import ChildrenVue from '../views/children/children.vue'
export default [
{
path: '/',
redirect: '/login'
},
{
path: '/login',
component: Login ,
name: 'login',
meta: { //保存頁面信息
title: 'this is Login ',
description: 'this is Login description'
},
children: [ //子路由
{
path: '/children',
component: ChildrenVue
}
]
},
{
path: '/register',
component: Register,
name: 'register'
}
]路由設(shè)置內(nèi)容
基本配置:
import Router from 'vue-router'?
import routes from './routes' //導(dǎo)入router 映射規(guī)則
const router = ?new Router({
? ?routes
})
export default router若使用服務(wù)端渲染改寫為:
import Router from 'vue-router'?
import routes from './routes' //導(dǎo)入router 映射規(guī)則
//每次import都創(chuàng)建一個(gè)新的router 避免內(nèi)存溢出
export default () => {
? ?return new Router({
? ? ?routes,
? ? ?mode: 'history' //改為history模式方便服務(wù)端渲染做SEO
? ?})
}入口文件配置
import Vue from 'vue'
import VueRouter from 'vue-router'
import createRouter from './config/router' //導(dǎo)入router配置文件
Vue.use(VueRouter)
const router = createRouter()?
new Vue({
? router,
? render: (h) => h(App)
}).$mount('#root')app.vue配置
在app.vue中加入:
<router-view></router-view>
給router-view添加切換動(dòng)畫:
<transition name="fade"> ? <router-view></router-view> </transition>
css:
.fade-enter-active, .fade-leave-active {
? transition: opacity .5s;
}
.fade-enter, .fade-leave-to {
? opacity: 0;
}router中使用props
路由之前傳參可以使用this.$route拿到參數(shù)也可以使用props:
{
? ? path: '/login',
? ? props: (route) => ({id: route.query.id}),
? ? component: Login,
},在login頁面的export default添加props:
export default {
? props: ['id'],
? mounted () {
? ? console.log(this.id) //打印傳遞的參數(shù)
? },
}瀏覽器訪問得到結(jié)果:

其他配置屬性
base:
export default () => {
return new Router({
routes,
mode: 'history',
base: '/base/'
})
}設(shè)置base之后瀏覽器訪問頁面路由path前面會(huì)自動(dòng)加上base配置的值

scrollBehavior :
//scrollBehavior 記錄頁面滾動(dòng)的位置下次進(jìn)來直接滾動(dòng)到記錄的位置
export default () => {
return new Router({
routes,
mode: 'history',
scrollBehavior (to, from, savedPosition) {
//savedPosition 記錄的位置 如果沒有返回最初位置
if (savedPosition) {
return savedPosition
} else {
return {x: 0, y: 0}
}
}
})
}導(dǎo)航守衛(wèi)
入口文件中配置全局導(dǎo)航守衛(wèi):
import Vue from 'vue'
import VueRouter from 'vue-router'
import createRouter from './config/router' //導(dǎo)入router配置文件
Vue.use(VueRouter)
const router = createRouter()
// 導(dǎo)航守衛(wèi)-start
router.beforeEach((to, from, next) => {
console.log('before each invoked')
next()
})
router.beforeResolve((to, from, next) => {
console.log('before resolve invoked')
next()
})
router.afterEach((to, from) => {
console.log('after each invoked')
})
// 導(dǎo)航守衛(wèi)-end
new Vue({
router,
render: (h) => h(App)
}).$mount('#root')組件內(nèi)部導(dǎo)航守衛(wèi)配置:
const footer = {
template: `<div>footer</div>`,
beforeRouteEnter (to, from, next) {
// 在渲染該組件的對(duì)應(yīng)路由被 confirm 前調(diào)用
// 不!能!獲取組件實(shí)例 `this`
// 因?yàn)楫?dāng)守衛(wèi)執(zhí)行前,組件實(shí)例還沒被創(chuàng)建
},
beforeRouteUpdate (to, from, next) {
// 在當(dāng)前路由改變,但是該組件被復(fù)用時(shí)調(diào)用
// 舉例來說,對(duì)于一個(gè)帶有動(dòng)態(tài)參數(shù)的路徑 /foo/:id,在 /foo/1 和 /foo/2 之間跳轉(zhuǎn)的時(shí)候,
// 由于會(huì)渲染同樣的 Foo 組件,因此組件實(shí)例會(huì)被復(fù)用。而這個(gè)鉤子就會(huì)在這個(gè)情況下被調(diào)用。
// 可以訪問組件實(shí)例 `this`
},
beforeRouteLeave (to, from, next) {
// 導(dǎo)航離開該組件的對(duì)應(yīng)路由時(shí)調(diào)用
// 可以訪問組件實(shí)例 `this`
}
}每個(gè)路由獨(dú)享的導(dǎo)航守衛(wèi)配置:
{
path: '/login',
component: Login,
beforeEnter: (to, from, next) => {
//...
},
beforeResolve: (to, from, next) => {
//...
},
afterEach: (to, from, next) => {
//...
}
},以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- Egg Vue SSR 服務(wù)端渲染數(shù)據(jù)請(qǐng)求與asyncData
- 15分鐘學(xué)會(huì)vue項(xiàng)目改造成SSR(小白教程)
- vue ssr+koa2構(gòu)建服務(wù)端渲染的示例代碼
- Vue SSR 即時(shí)編譯技術(shù)的實(shí)現(xiàn)
- Vue使用預(yù)渲染代替SSR的方法
- 如何構(gòu)建 vue-ssr 項(xiàng)目的方法步驟
- vuecli項(xiàng)目構(gòu)建SSR服務(wù)端渲染的實(shí)現(xiàn)
- vue的ssr服務(wù)端渲染示例詳解
- 關(guān)于VueSSR的一些理解和詳細(xì)配置
- Vue.js?狀態(tài)管理及?SSR解析
相關(guān)文章
Vue實(shí)現(xiàn)控制商品數(shù)量組件封裝及使用
這篇文章主要為大家詳細(xì)介紹了Vue實(shí)現(xiàn)控制商品數(shù)量組件的封裝及使用,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09
vue列表數(shù)據(jù)發(fā)生變化指令沒有更新問題及解決方法
這篇文章主要介紹了vue中使用指令,列表數(shù)據(jù)發(fā)生變化指令沒有更新問題,本文給出了解決辦法,需要的朋友可以參考下2020-01-01
vue實(shí)現(xiàn)app頁面切換動(dòng)畫效果實(shí)例
本篇文章主要介紹了vue實(shí)現(xiàn)app頁面切換動(dòng)畫效果實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05
在vue中根據(jù)光標(biāo)的顯示與消失實(shí)現(xiàn)下拉列表
這篇文章主要介紹了在vue中根據(jù)光標(biāo)的顯示與消失實(shí)現(xiàn)下拉列表,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09
Vue實(shí)現(xiàn)動(dòng)態(tài)顯示textarea剩余字?jǐn)?shù)
這篇文章主要為大家詳細(xì)介紹了Vue實(shí)現(xiàn)動(dòng)態(tài)顯示textarea剩余文字?jǐn)?shù)量,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05
vue3中reactive的對(duì)象清空所引發(fā)的問題解決方案(清空不了和清空之后再去賦值就賦值不了)
在使用reactive定義的變量時(shí),直接賦值會(huì)失去響應(yīng)式,為了清空?filters并確保響應(yīng)式,可以使用Object.assign({},?filters)或者遍歷對(duì)象逐個(gè)清除屬性,本文介紹vue3中reactive的對(duì)象清空所引發(fā)的問題解決方案(清空不了和清空之后再去賦值就賦值不了),感興趣的朋友一起看看吧2025-02-02
ant design vue 清空upload組件圖片緩存的問題
這篇文章主要介紹了ant design vue 清空upload組件圖片緩存的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-10-10
記錄一個(gè)van-list不斷onLoad加載的坑及解決
這篇文章主要介紹了記錄一個(gè)van-list不斷onLoad加載的坑及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-04-04
vue?select?change事件如何傳遞自定義參數(shù)
這篇文章主要介紹了vue?select?change事件如何傳遞自定義參數(shù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-04-04

