Vue.js 路由
本章節我們將為大家介紹 Vue.js 路由。
Vue.js 路由允許我們通過不同的 URL 訪問不同的內容。
通過 Vue.js 可以實現多檢視的單頁Web應用(single page web application,SPA)。
Vue.js 路由需要載入 vue-router 庫
中文文件地址:vue-router文件。
安裝
1、直接下載 / CDN
https://unpkg.com/vue-router/dist/vue-router.js
NPM
推薦使用淘寶映象:
cnpm install vue-router
簡單例項
Vue.js + vue-router 可以很簡單的實現單頁應用。
<router-link> 是一個元件,該元件用於設定一個導航連結,切換不同 HTML 內容。 to 屬性為目標地址, 即要顯示的內容。
以下例項中我們將 vue-router 加進來,然後配置元件和路由對映,再告訴 vue-router 在哪裡渲染它們。程式碼如下所示:
HTML 程式碼
JavaScript 程式碼
嘗試一下 ?
點選過的導航連結都會加上樣式 class ="router-link-exact-active router-link-active"。
<router-link> 相關屬性
接下來我們可以瞭解下更多關於 <router-link> 的屬性。
to
表示目標路由的連結。 當被點選後,內部會立刻把 to 的值傳到 router.push(),所以這個值可以是一個字串或者是描述目標位置的物件。
<!-- 字串 --> <router-link to="home">Home</router-link> <!-- 渲染結果 --> <a href="https://www.itread01.com/vue2/home">Home</a> <!-- 使用 v-bind 的 JS 表示式 --> <router-link v-bind:to="'home'">Home</router-link> <!-- 不寫 v-bind 也可以,就像繫結別的屬性一樣 --> <router-link :to="'home'">Home</router-link> <!-- 同上 --> <router-link :to="{ path: 'home' }">Home</router-link> <!-- 命名的路由 --> <router-link :to="{ name: 'user', params: { userId: 123 }}">User</router-link> <!-- 帶查詢引數,下面的結果為 /register?plan=private --> <router-link :to="{ path: 'register', query: { plan: 'private' }}">Register</router-link>
replace
設定 replace 屬性的話,當點選時,會呼叫 router.replace() 而不是 router.push(),導航後不會留下 history 記錄。
<router-link :to="{ path: '/abc'}" replace></router-link>
append
設定 append 屬性後,則在當前 (相對) 路徑前新增其路徑。例如,我們從 /a 導航到一個相對路徑 b,如果沒有配置 append,則路徑為 /b,如果配了,則為 /a/b
<router-link :to="{ path: 'relative/path'}" append></router-link>
tag
有時候想要 <router-link>
渲染成某種標籤,例如 <li>
。
於是我們使用 tag
prop 類指定何種標籤,同樣它還是會監聽點選,觸發導航。
<router-link to="/foo" tag="li">foo</router-link> <!-- 渲染結果 --> <li>foo</li>
active-class
設定 連結啟用時使用的 CSS 類名。可以通過以下程式碼來替代。
<style> ._active{ background-color : red; } </style> <p> <router-link v-bind:to = "{ path: '/route1'}" active-class = "_active">Router Link 1</router-link> <router-link v-bind:to = "{ path: '/route2'}" tag = "span">Router Link 2</router-link> </p>
注意這裡 class 使用 active-class="_active"。
exact-active-class
配置當連結被精確匹配的時候應該啟用的 class。可以通過以下程式碼來替代。
<p> <router-link v-bind:to = "{ path: '/route1'}" exact-active-class = "_active">Router Link 1</router-link> <router-link v-bind:to = "{ path: '/route2'}" tag = "span">Router Link 2</router-link> </p>
event
宣告可以用來觸發導航的事件。可以是一個字串或是一個包含字串的陣列。
<router-link v-bind:to = "{ path: '/route1'}" event = "mouseover">Router Link 1</router-link>
以上程式碼設定了 event 為 mouseover ,及在滑鼠移動到 Router Link 1 上時導航的 HTML 內容會發生改變。
NPM 路由例項
接下來我們演示了一個使用 npm 簡單的路由例項,開始前,請先下載該例項原始碼:
路由例項你也可以在 Github 上下載:https://github.com/chrisvfritz/vue-2.0-simple-routing-example
下載完後,解壓該目錄,重新命名目錄為 vue-demo,vu 並進入該目錄,執行以下命令:
# 安裝依賴,使用淘寶資源命令 cnpm cnpm install # 啟動應用,地址為 localhost:8080 cnpm run dev
如果你需要釋出到正式環境可以執行以下命令:
cnpm run build
執行成功後,訪問 http://localhost:8080 即可看到如下介面: