組件化思想是Vue最爲核心的一個思想瀏覽器
Vue中的每個實例都是一個組件,也就是說一個項目是由不少個組件/實例組成的,所以,掌握組件的知識點尤其重要組件化
組件即爲一個能夠複用的Vue實例,能夠在Vue根實例中反覆使用this
分兩種:全局和局部3d
全局組件用Vue實例的component方法來建立component
全局組件能夠在Vue根實例下直接使用其名字爲標籤名的標籤來調用,無需註冊對象
而局部組件則是用一個對象來建立的,對象名即組件名,但使用以前須要註冊(Vue實例的components中)blog
若是對原有的組件名不滿意,能夠在註冊時修改生命週期
因爲組件是能夠複用的Vue實例,所以組件中也能夠添加data、computed、methods、watch等,只有el是不能夠添加的(僅屬於根實例)table
組件中,一個模板中只能有一個根元素模板
以下就是不行的,會報錯,只認第一個元素,其他元素都刪除
這時須要用一個父元素充當根元素,以下
當須要向組件內添加內容的時候,可能出現以下的狀況
這時hello不會出如今頁面中,所以須要添加一個插槽,以便讓添加在組件中的內容添加到其中,並被瀏覽器渲染出來
若是出現多個插槽,全部添加進去的內容會被複製,並插入這多個插槽中,可是並非咱們所須要的效果
這裏就須要對插槽添加name屬性,以標識出不一樣的插槽,具體內容須要插入哪一個插槽,在標籤中添加slot屬性並書寫對應的插槽的name值
對於註冊過的組件,若是想動態變動調用的組件,可使用Vue自帶的component標籤,在其中用v-bind綁定is屬性
有些元素內部的標籤是固定的,例如table中只能夠有tr、td,若是在table標籤中添加了非tr、td標籤,則頁面渲染時,會把內部標籤渲染到外面
爲了解決這種問題,能夠在table標籤中正常添加tr標籤,在tr標籤上添加is屬性,屬性值爲須要添加在這個位置的組件名稱
ref是Vue裏用來獲取DOM節點的一個方法,綁定在須要獲取節點的標籤上,能夠在mounted這個生命週期裏用this.$refs.ref名稱的方法取到相應的DOM節點
獲取以後,就能夠對這個DOM節點進行編輯了(相似於原生的JS)
而在組件中,給組件添加上ref,獲得的是組件自己的引用
(未完待續)