在上面的練習當中咱們已經成功的加載了一個.vue
格式的單文件組件,而且實現了在使用vue狀況下的自動刷新。javascript
可是咱們最終的目的仍是要實現單頁面應用程序,這個時候咱們就必不可少的須要使用到路由管理器來進行SPA的開發,vue官方爲咱們提供了一個官方庫vue-router,而且配有對應的中文文檔。關於裏面的內容你們自行前去觀看。在這裏,只會把咱們須要的東西拿出來說。css
官網對於組件講解html
在Vue
中定義一個組件很是簡單,只須要一對自定義標籤,在其中填入內容就能夠進行咱們的組件編寫了,而後使用Vue.component()
去註冊咱們的組件下面來看一個例子,來直觀的看看vue的組件。vue
1 |
<script src="js/vue.js"></script> |
上面就是最簡單的定義組件的方式,template
屬性中寫的東西:就是<my-component>
這個自定義標籤渲染後展示出來的樣式,這裏渲染爲:java
1 |
<div id="app"> |
組件的基礎介紹就到這,更多詳細內容請移步官網,有着很是清晰的講解。webpack
剛剛已經對於vue的組件有了必定的瞭解。如今來結合vue-router,來進行一下動態的切換。git
首先是安裝,若是使用npm的形式的話,直接運行npm install vue-router --save
,就能夠看到vue-router
,已經被添加到了項目依賴中。直接上ES6
的語法來進行引入github
1 |
import Vue from "vue"; |
其實這一部分vue-router
的中文文檔中已經講的很是詳細了。。在這裏與它不一樣的是它用的CommonJS
的規範來進行模塊安裝,而我使用ES6的import,有興趣本身去看- -。其餘的內容我就直接扒下來了。web
html:vue-router
1 |
<div id="app"> |
javascript:
1 |
// 定義組件 |
我我的感受這部分仍是很好理解的,官方也給了一系列的例子:查看倉庫的 README.md 來運行它們。很好的展示了它的路由切換。
簡單的介紹到這,下面最重要的部分到了,看看如何結合咱們定義的.vue
單文件組件。
首先來看咱們的文件目錄結構:
最主要是main.js
的變化,直接在文件中講解了:
1 |
import Vue from 'vue' |
App.vue 須要有用於渲染匹配的組件,以下
1 |
<template> |
如今當咱們運行 npm start
進入http://localhost:8080/
就會自動跳轉到http://localhost:8080/#/index
,而且讀取裏面的內容。
主要抽出index.vue
中的內容來說解,的內容是:(list.vue
裏面的內容自行設置查看吧)
1 |
<template> |
由於自刷新的緣故,直接切換到瀏覽器。
點擊上面使用的router-link
,與this.$router.push
的方式均可以跳轉到list
定義的路由。(觀察瀏覽器地址欄的變化)在這裏咱們使用 { path: '/list' }
,若有別名的話,使用的{name:"list"}
,會有一樣的效果。
在第一小點裏面咱們看到了在頁面內的組件的使用方法,第二小點中學習到了vue-router
的制定路由規則。
看過這兩個地方以後,咱們把思惟發散開來,應該就能舉一反三的想到如何在頁面中嵌套加載別的組件了。
咱們建立一個hello.vue
,裏面內容隨意。如今咱們若是要在app.vue
中加載它,那麼只須要在app.vue
中使用import hello from "./hello.vue"
(其實這個達到了使用require兩步的效果。引入賦值)。
引入以後,只須要以下注冊:
1 |
export default { |
最後在app.vue
中添加<hello></hello>
這一對自定義標籤,就能夠實現加載hello.vue
中的內容。
組件的嵌套也就是這樣,很簡單的描述完了,可是怎麼樣去抽離組件,在工做中積累能夠複用的組件纔是咱們真正須要去思考的。
那麼先到這,關於組件之間通訊的問題,留到之後慢慢了解。
仍是剛剛的代碼與目錄結構,咱們已經實現了組件之間的嵌套,可是有時並不但願組件直接就加載進來,而是在用戶點擊後才展示在頁面中,這是就須要使用到路由嵌套。
爲了偷懶,這裏就直接使用hello.vue
。實現嵌套路由主要有如下幾步:
第一步:制定嵌套路由規則:
看main.js
下面這部分的代碼:
1 |
{ |
第二步:在組件中添加<router-view>
來自官網的解釋:
<router-view>
用於渲染匹配的組件,它基於Vue的動態組件系統,因此它繼承了一個正常動態組件的不少特性。
將<router-view>
寫在app.vue
的<template></template>
標籤中。
第三步:寫入跳轉路徑
仍是在index.vue
中:
1 |
<router-link :to="{ path: '/index' }">回去主頁</router-link> |
,切換到瀏覽器,點擊該嵌套的路由
便可讓hello.vue
中的展示出來,在這裏直接使用了router-link
來實現跳轉 ,固然$router.push
同理。(注意在點擊兩個不一樣的文字時,地址欄的變化,以及展示內容的切換)
注意:
記錄 vue-webapck 的學習基礎,代碼示例 github地址
這個教程更多的是從基礎開始學習,vue 與 webpack 應該要怎麼結合。在真實的實際項目中,仍是推薦 vue-cli。
關於 vue-cli 生成的配置解析能夠參考一下 vue-cli#2.0 webpack 配置分析
在個人源碼中是在<style scoped></style>
標籤中定義樣式的,請注意scoped
的使用,它表示在該style
中定義的樣式只會在當前的組件中起到效果,而不會去影響全局的css樣式。
最簡單的理解應該就是:
未寫該scoped
屬性的全部組件中的樣式,在通過vue-loader
編譯以後擁有全局做用域。至關於共用一份css
樣式表。
而寫了該屬性的的組件中定義的樣式,擁有獨立做用域。至關於除去引入了公用的一份css
樣式表外,但單獨擁有一份css
的樣式表。