做自(zì)由與創造的先行者

路由

Vue.js中文(wén)手冊

客戶端 vs. 服務端路由

服務端路由指的是服務器根據用(yòng)戶訪問的 URL 路徑返回不同的響應結果。當我們在一個傳統的服務端渲染的 web 應用(yòng)中點擊一個鏈接時(shí),浏覽器會(huì)從(cóng)服務端獲得全新的 HTML,然後重新加載整個頁面。

然而,在單頁面應用(yòng)中,客戶端的 JavaScript 可以攔截頁面的跳轉請(qǐng)求,動态獲取新的數據,然後在無需重新加載的情況下(xià)更新當前頁面。這(zhè)樣通常可以帶來(lái)更順滑的用(yòng)戶體驗,尤其是在更偏向“應用(yòng)”的場景下(xià),因爲這(zhè)類場景下(xià)用(yòng)戶通常會(huì)在很(hěn)長的一段時(shí)間中做出多次交互。

在這(zhè)類單頁應用(yòng)中,“路由”是在客戶端執行的。一個客戶端路由器的職責就是利用(yòng)諸如 History API 或是 hashchange 事(shì)件這(zhè)樣的浏覽器 API 來(lái)管理(lǐ)應用(yòng)當前應該渲染的視(shì)圖。

官方路由

在 Vue School 上(shàng)觀看(kàn)免費的視(shì)頻課程

Vue 很(hěn)适合用(yòng)來(lái)構建單頁面應用(yòng)。對(duì)于大(dà)多數此類應用(yòng),都推薦使用(yòng)官方支持的路由庫。要了(le)解更多細節,請(qǐng)查看(kàn) Vue Router 的文(wén)檔。

從(cóng)頭開(kāi)始實現(xiàn)一個簡單的路由

如果你(nǐ)隻需要一個簡單的頁面路由,而不想爲此引入一整個路由庫,你(nǐ)可以通過動态組件的方式,監聽浏覽器 hashchange 事(shì)件或使用(yòng) History API 來(lái)更新當前組件。

下(xià)面是一個簡單的例子:

vue

<script>

import Home from './Home.vue'

import About from './About.vue'

import NotFound from './NotFound.vue'

const routes = {

'/': Home,

'/about': About

}

export default {

data() {

return {

currentPath: window.location.hash

}

},

computed: {

currentView() {

return routes[this.currentPath.slice(1) || '/'] || NotFound

}

},

mounted() {

window.addEventListener('hashchange', () => {

this.currentPath = window.location.hash

})

}

}

</script>

<template>

<a href="#/">Home</a> |

<a href="#/about">About</a> |

<a href="#/non-existent-path">Broken Link</a>

<component :is="currentView" />

</template>

網站(zhàn)建設開(kāi)發|APP設計(jì)開(kāi)發|小(xiǎo)程序建設開(kāi)發
下(xià)一篇:狀态管理(lǐ)
上(shàng)一篇:工(gōng)具鏈