全局組件注冊
就是說它們在注冊之后可以用在任何新創(chuàng)建的 Vue 根實例 (new Vue) 的模板中。下面是使用在root根示例下的first-component全局組件:

image.png
使用Vue.component定義的全局組件里面的data,和普通new Vue示例里面的data有所不同,Vue.component定義的時候data必須是一個function,而new Vue實例里邊data必須是一對象

image.png
關于Vue.component里面組件命名以及標簽使用的時候的一些問題:
html標簽是不區(qū)分大小寫的,但是如果注冊組件的時候使用了駝峰命名或者帕斯卡命名,html標簽里面必須以短橫線分隔命名,如果注冊組件的時候不是駝峰命名或者帕斯卡命名的話,html標簽是不區(qū)分大小寫的。如下:

image.png
局部組件注冊
局部組件注冊在vue實例中的components對象里面,可以注冊多個局部組件,只有在實例中注冊了該組件的根元素才能夠使用這個組件,所有叫做局部組件。注意js中定義變量時不允許中線鏈接,所以這里定義使用帕斯卡或者駝峰,則根元素中使用組件時需要使用中線連接

image.png
關于上面的name屬性傳參時,當設級到動態(tài)的值需要使用
v-bind:進行綁定。通過props獲取值。Vue中的props自帶屬性類型檢測,如下:
image.png
Vue中is屬性渲染動態(tài)組件
下圖示例通過點擊國際新聞,國內新聞修改data中currentTab的值,然后html中使用is動態(tài)綁定值獲取組件。(is屬性還有一個作用就是,當組件嵌套不符合html規(guī)則的時候,通過將組件修改為標簽,然后is屬性綁定組件即可)

image.png
Vue中組件間傳參問題
子組件像父組件傳參:
需要在子組件上通過$.emit這個對象注冊事件監(jiān)聽(第一個參數(shù)是事件名,第二個參數(shù)是需要傳遞的值),之后再父組件中通過v-on:綁定事件,若觸發(fā)該事件則觸發(fā)一個父組件的方法,

image.png
若父組件像子組件傳參:
則在父組件中以屬性的形式傳值,在子組件中以props獲取,子組件里面可以通過插值表達式調用

image.png