版權聲明:出處http://blog.csdn.net/qq20004604html
本篇資料來於官方文檔:webpack
http://cn.vuejs.org/guide/components.html#u6742_u9879
web
本文是在官方文檔的基礎上,更加細緻的說明,代碼更多更全。ajax
簡單來講,更適合新手閱讀數組
(三十)組件——雜項服務器
簡單來講,就是組件被屢次複用;app
例如表格裏的某一行,又例如電商的商品櫥窗展現(單個櫥窗),均可以成爲能夠被複用的組件;異步
只要編寫其中一個做爲組件,而後使數據來源成爲一個數組(或對象,但我的以爲最好是數組),經過v-for的遍歷,組件的每一個實例,均可以獲取這個數組中的一項,從而生成所有的組件。ide
而數據傳輸,因爲複用,因此須要使用props,將遍歷結果i,和props綁定的數據綁定起來,綁定方法同普通的形式,在模板中綁定。
示例代碼:
說明:
【1】記得將要傳遞的數據放在props裏!
【2】將index和索引$index綁定起來,由於索引從0開始,所以索引所在列是從0開始;id是和遍歷items的i綁定在一塊兒的,所以id從1開始。
【3】能夠在父組件中,經過this.$children來獲取子組件(可是比較麻煩,特別是組件多的時候,比較難定位);
簡單來講,一次性組件(只用在這裏,不會被複用的)跟其餘組件緊密耦合是能夠的,可是,可複用的組件應當定義一個清晰的公開接口。(否則別人怎麼用?)
可複用的組件,基本都是要和外部交互的,而一個組件和外部公開的交互接口有:
【1】props:容許外部環境數據傳遞給組件;
【2】事件:容許組件觸發外部環境的action,就是說經過在掛載點添加v-on指令,讓子組件的events觸發時,同時觸發父組件的methods;
【3】slot:分發,容許將父組件的內容插入到子組件的視圖結構中。
如代碼:
說明:
【1】在第一個父組件中使用了分發slot,使用了props來傳遞值(將test的值傳到子組件的theValue之中);
【2】在兩個組件中,子組件在點擊後,調用methods裏的dosomething方法,而後執行了events裏的some事件。又經過掛載點的@some=」todo」,將子組件的some事件和父組件的todo方法綁定在一塊兒。
所以,點擊子組件後,最終會執行父組件的todo方法。
【3】更改父組件中,被傳遞到子組件的值,會同步更改子組件的值(即兩者會數據綁定);
按照個人理解,簡單來講,一個大型應用,他有多個組件,但有些組件無需當即加載,所以被分拆成多個組件(好比說須要當即加載的,不須要當即加載的);
須要當即加載的,顯然放在同一個文件中比較好(或者同一批一塊兒請求);
而不須要當即加載的,能夠放在其餘文件中,但須要的時候,再ajax向服務器請求;
這些後續請求的呢,就是異步組件;
作到這種異步功能的,就是Vue.js的功能——容許將組件定義爲一個工廠函數,動態解析組件的定義。
能夠配合webpack使用。
至於如何具體使用,我還不太明白,教程中寫的不清,先擱置等須要的時候來研究。
連接:
http://cn.vuejs.org/guide/components.html#u5F02_u6B65_u7EC4_u4EF6
簡單來講,html標籤(好比div和DIV是同樣的)和特性(好比要寫成v-on這樣的指令而不是vOn)是不區分大小寫的。
而資源名每每是寫成駝峯式(好比camelCase駝峯式),或者單詞首字母都大寫的形式(好比PascalCase,我不知道該怎麼稱呼這個,不過這樣寫不多的說)。
Vue.component("myTemplate", {
//......略
})
Vue.js能夠自動識別這個並轉換,
<my-template></my-template>
以上那個模板能夠自動替換這個標籤。
簡單來講,遞歸組件就是組件在本身裏內嵌本身的模板。
組件想要遞歸,須要name屬性,而Vue.component自帶name屬性。
大概樣子是這樣的,
這種是無限遞歸,確定是不行的。所以,須要控制他遞歸的層數,例如經過數據來控制遞歸,當數據爲空時,則中止遞歸。
示例代碼以下:
說明:
【1】向下傳遞時,經過props傳遞a的值和b的值,其中a的值做爲遞歸後組件的a和b的值的數據來源;
而後判斷傳遞到遞歸後的組件的a的值是否存在,若是存在則繼續遞歸;
若是a的值不存在,則中止遞歸。
簡單來講,所謂片段實例,就是組件的模板不是處於一個根節點之下:
片段實例代碼:
非片段實例:
片段實例的如下特性被忽略:
【1】組件元素上的非流程控制指令(例如寫在掛載點上的,由父組件控制的v-show指令之類,但注意,v-if屬於流程控制指令);
【2】非props特性(注意,props不會被忽略,另外props是寫在掛載點上的);
【3】過渡(就是transition這個屬性,將被忽略);
更多的參照官方文檔:
http://cn.vuejs.org/guide/components.html#u7247_u65AD_u5B9E_u4F8B
參照:http://cn.vuejs.org/guide/components.html#u5185_u8054_u6A21_u677F
反正我試了下失敗了,google也沒搜到相關的內容,┑( ̄Д  ̄)┍
————————組件的基本知識到這裏結束————————————