開心檔之Vue.js 路由
本章節我們將為大家介紹 Vue.js 路由。
Vue.js 路由允許我們透過不同的 URL 訪問不同的內容。
透過 Vue.js 可以實現多檢視的單頁Web應用(single page web application,SPA)。
Vue.js 路由需要載入
中文文件地址: 。
推薦使用淘寶映象:
cnpm install vue-router
Vue.js + vue-router 可以很簡單的實現單頁應用。
<router-link> 是一個元件,該元件用於設定一個導航連結,切換不同 HTML 內容。 to 屬性為目標地址, 即要顯示的內容。
以下例項中我們將 vue-router 加進來,然後配置元件和路由對映,再告訴 vue-router 在哪裡渲染它們。程式碼如下所示:
<script src="https://unpkg.com/vue/dist/vue.js"></script><script src=""></script> <div id="app"> <h1>Hello App!</h1> <p> <!-- 使用 router-link 元件來導航. --> <!-- 透過傳入 `to` 屬性指定連結. --> <!-- <router-link> 預設會被渲染成一個 `<a>` 標籤 --> <router-link to="/foo">Go to Foo</router-link> <router-link to="/bar">Go to Bar</router-link> </p> <!-- 路由出口 --> <!-- 路由匹配到的元件將渲染在這裡 --> <router-view></router-view></div>
// 0. 如果使用模組化機制程式設計,匯入 Vue 和 VueRouter,要呼叫 Vue.use(VueRouter) // 1. 定義(路由)元件。// 可以從其他檔案 import 進來const Foo = { template: '<div>foo</div>' }const Bar = { template: '<div>bar</div>' } // 2. 定義路由// 每個路由應該對映一個元件。 其中"component" 可以是// 透過 Vue.extend() 建立的元件構造器,// 或者,只是一個元件配置物件。// 我們晚點再討論巢狀路由。const routes = [ { path: '/foo', component: Foo }, { path: '/bar', component: Bar } ] // 3. 建立 router 例項,然後傳 `routes` 配置// 你還可以傳別的配置引數, 不過先這麼簡單著吧。const router = new VueRouter({ routes // (縮寫)相當於 routes: routes}) // 4. 建立和掛載根例項。// 記得要透過 router 配置引數注入路由,// 從而讓整個應用都有路由功能const app = new Vue({ router }).$mount('#app') // 現在,應用已經啟動了!
點選過的導航連結都會加上樣式 class ="router-link-exact-active router-link-active"。
接下來我們可以瞭解下更多關於 <router-link> 的屬性。
表示目標路由的連結。 當被點選後,內部會立刻把 to 的值傳到 router.push(),所以這個值可以是一個字串或者是描述目標位置的物件。
<!-- 字串 --><router-link to="home">Home</router-link><!-- 渲染結果 --><a href="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 屬性的話,當點選時,會呼叫 router.replace() 而不是 router.push(),導航後不會留下 history 記錄。
<router-link :to="{ path: '/abc'}" replace></router-link>
設定 append 屬性後,則在當前 (相對) 路徑前新增其路徑。例如,我們從 /a 導航到一個相對路徑 b,如果沒有配置 append,則路徑為 /b,如果配了,則為 /a/b
<router-link :to="{ path: 'relative/path'}" append></router-link>
有時候想要
<router-link>
渲染成某種標籤,例如
<li>
。 於是我們使用
tag
prop 類指定何種標籤,同樣它還是會監聽點選,觸發導航。
<router-link to="/foo" tag="li">foo</router-link><!-- 渲染結果 --><li>foo</li>
設定 連結啟用時使用的 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"。
配置當連結被精確匹配的時候應該啟用的 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>
宣告可以用來觸發導航的事件。可以是一個字串或是一個包含字串的陣列。
<router-link v-bind:to = "{ path: '/route1'}" event = "mouseover">Router Link 1</router-link>
以上程式碼設定了 event 為 mouseover ,及在滑鼠移動到 Router Link 1 上時導航的 HTML 內容會發生改變。
接下來我們演示了一個使用 npm 簡單的路由例項,開始前,請先下載該例項原始碼:
你也可以在 Github 上下載:
下載完後,解壓該目錄,重新命名目錄為 vue-demo,vu 並進入該目錄,執行以下命令:
# 安裝依賴,使用淘寶資源命令 cnpmcnpm install# 啟動應用,地址為 localhost:8080cnpm run dev
如果你需要釋出到正式環境可以執行以下命令:
cnpm run build
執行成功後,訪問 即可看到如下介面:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70026554/viewspace-2937908/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 開心檔之Go教程Go
- 開心檔之MySQL 管理MySql
- 開心檔之C++ 引用C++
- 開心檔之MySQL ALTER命令MySql
- 開心檔之Go 併發Go
- 開心檔之C++ 運算子C++
- 開心檔之C++ 多型C++多型
- 開心檔之MySQL 複製表MySql
- 開心檔之C++ 數字C++
- 開心檔之Go 語言常量Go
- 開心檔之Java 9 新特性Java
- 開心檔之MySQL 正規表示式MySql
- 開心檔之Go 錯誤處理Go
- 開心檔之python 推導式Python
- 開心檔之Java switch case 語句Java
- 開心檔之Java 變數型別Java變數型別
- 開心檔之C++ 訊號處理C++
- 開心檔之C++ 前處理器C++
- 【21】vue.js — 路由Vue.js路由
- 開心檔之Go 語言環境安裝Go
- 開心檔之C++ 修飾符型別C++型別
- 邏輯Vue.js 路由Vue.js路由
- 開心檔之Python3 資料結構Python資料結構
- 開心檔之C++ 過載運算子和過載函式C++函式
- 後臺管理系統vue.js路由Vue.js路由
- Vue開發之基礎路由Vue路由
- 開心檔-軟體開發入門教程網之Node.js 回撥函式Node.js函式
- Swift Web 開發之 Vapor – 路由(二)SwiftWebVapor路由
- 開心檔-Node.js入門篇2Node.js
- Flutter開發之導航與路由管理Flutter路由
- Vue.js 2.x筆記:路由Vue Router(6)Vue.js筆記路由
- flutter之從零開始搭建(二)之 Navigator路由Flutter路由
- Laravel多路由檔案,路由分組Laravel路由
- Vue.js中,如何自己維護路由跳轉記錄?Vue.js路由
- 從零開始學 Web 之 Vue.js(六)Vue的元件WebVue.js元件
- Vue之動態路由、巢狀路由Vue路由巢狀
- vue.js元件開發Vue.js元件
- Vue.js和微信小程式路由(頁面)跳轉攔截Vue.js微信小程式路由