Vue Router應(yīng)用方法詳解
服務(wù)端路由
服務(wù)端路由時指的是服務(wù)器根據(jù)用戶訪問的 URL 路徑返回不同的響應(yīng)結(jié)果。
在傳統(tǒng)的服務(wù)端渲染的 web 應(yīng)用中點擊一個鏈接時,瀏覽器會從服務(wù)端獲得全新的 HTML頁面,然后重新加載整個頁面。
然而,在單頁面應(yīng)用中,客戶端的 JavaScript 可以攔截頁面的跳轉(zhuǎn)請求,動態(tài)獲取新的數(shù)據(jù),無需重新加載的情況下更新當前頁面。
這樣通??梢詭砀樆挠脩趔w驗,尤其是在更偏向“應(yīng)用”的場景下,因為這類場景下用戶通常會在很長的一段時間中做出多次交互。
在這類單頁應(yīng)用中,“路由”是在客戶端執(zhí)行的。一個客戶端路由器的職責就是利用諸如 History API 或是 hashchange 事件這樣的瀏覽器 API 來管理應(yīng)用當前應(yīng)該渲染的視圖。
路由的應(yīng)用場景
單頁面應(yīng)用(SPA應(yīng)用):
- 顧名思義導航欄不變,內(nèi)容欄改變的應(yīng)用。
- 內(nèi)容欄根據(jù)導航欄的選擇變化的同時,頁面不會跳轉(zhuǎn),也就是說不會產(chǎn)生新的請求。
- js攔截頁面的跳轉(zhuǎn)請求,動態(tài)的獲取新的數(shù)據(jù),路徑也會隨之變化。
- 數(shù)據(jù)需要通過ajax的請求獲取。
路由
- 路由就是多個key-value的對應(yīng)關(guān)系。
- 每一個路由都需要路由器的支持。
監(jiān)聽瀏覽器 hashchange 事件實現(xiàn)路由
如果你只需要一個簡單的頁面路由,而不想為此引入一整個路由庫,你可以通過動態(tài)組件的方式,監(jiān)聽瀏覽器 hashchange 事件或使用 History API 來更新當前組件。
<script>
import About from "./components/About.vue";
import Home from "./components/Home.vue";
import NotFound from "./components/Not Found.vue";
const routes = {
//路由默認跳轉(zhuǎn)到Home組件
'/': Home,
'/about': About
}
export default {
data() {
return {
currentPath: window.location.hash
}
},
computed: {
//計算屬性的方法,響應(yīng)式的,緩存
currentView() {
//過濾#,匹配路由
return routes[this.currentPath.slice(1) || '/' ] || NotFound
}
},
mounted() {
window.addEventListener('hashchange', () => {
//只要window變化了就,把當前的路徑給App組件下的屬性this.currentPath
this.currentPath = window.location.hash
})
}
}
</script>
<template>
<a href="#/" rel="external nofollow" >Home</a> |
<a href="#/about" rel="external nofollow" >About</a> |
<a href="#/non-existent-path" rel="external nofollow" >Broken Link</a>
<br>
<component :is="currentView" />
</template>使用Vue Router+Vue2實現(xiàn)路由
用 Vue + Vue Router 創(chuàng)建單頁應(yīng)用非常簡單:通過 Vue.js,我們已經(jīng)用組件組成了我們的應(yīng)用。當加入 Vue Router 時,我們需要做的就是將我們的組件映射到路由上,讓 Vue Router 知道在哪里渲染它們。
1.安裝路由
npm i vue-router@3
注意:
- vue3對應(yīng)的vue-router版本是4
- vue2對應(yīng)的vue-router版本是3
- 我這里是vue2
2.導入VueRouter插件(main.js)
import Vue from 'vue'
import App from './App.vue'
import VueRouter from "vue-router"
import './assets/main.css'
//關(guān)閉vue的生產(chǎn)提示
Vue.config.productionTip = false
//使用路由器插件
Vue.use(VueRouter)
new Vue({
render: (h) => h(App),
}).$mount('#app')3.編寫創(chuàng)建路由器router(并暴露)的js文件(router/index.js)
import VueRouter from "vue-router";
import Home from "../components/Home";
import About from "../components/About";
import NotFound from "../components/Not Found";
//創(chuàng)建路由器并暴露
export default new VueRouter({
//多個路由
routes:[
{
path:'/about',
component:About
},
{
path:'/Home',
component:Home
}
]
})4.引入router(main.js)
import router from "./router";
new Vue({
render: (h) => h(App),
router:router
}).$mount('#app')5. 測試
<template> <div> <h1>Router Demo</h1> <router-link to="/home">Home</router-link>|| <router-link to="/about">About</router-link> <router-view></router-view> </div> </template>
Vue3 + Vue-router
到此這篇關(guān)于Vue Router應(yīng)用方法詳解的文章就介紹到這了,更多相關(guān)Vue Router內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解讀Vue3中keep-alive和動態(tài)組件的實現(xiàn)邏輯
這篇文章主要介紹了Vue3中keep-alive和動態(tài)組件的實現(xiàn)邏輯,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-05-05
element-table如何實現(xiàn)自定義表格排序
這篇文章主要介紹了element-table如何實現(xiàn)自定義表格排序,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-07-07
vue-router 中router-view不能渲染的解決方法
本篇文章主要結(jié)合了vue-router 中router-view不能渲染的解決方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-05-05

