因為之前看了的VUE元件的幾種通信方式,但是對其中一些概念了解并不是非常的清晰,是以打算把Vue的元件注冊來重新梳理一下,梳理之後再回去看通信方式,應該會有更好的了解。
Vue的元件注冊其實有以下幾種:
1.全局注冊
2.局部注冊
3.子產品系統中:在子產品系統中局部注冊,基礎元件的自動化全局注冊。
Vue.component(元件),元件可以擴充 HTML 元素,封裝可重用的代碼。在較高層面上,元件是自定義元素,Vue.js 的編譯器為它添加特殊功能,通俗的了解話相當于是一個腳手架的工具。所有的 Vue 元件同時也都是 Vue 的執行個體。
全局注冊:
//HTML
<div id="componentExample">
<my-component></my-component>
</div>
//JS代碼
Vue.component('my-component', {
template: '<div>some thing</div>'
})
var vm = new Vue({
el: '#example',
data: {
}
})
//渲染結果為
<div id="example">
<div>some thing</div>
</div>
或者另外一種注冊方式,通過 全局API:Vue.extend()
// 注冊
var MyComponent = Vue.extend({
template: '<div>some thing</div>'
});
// 注冊
Vue.component('my-component', MyComponent);
var vm = new Vue({
el: '#example',
data: {
}
})
2.局部注冊
全局注冊我認為是會導緻資源的浪費,我們一般使用 webpack 來建構系統,全局注冊所有的元件就相當于把所有的元件全部都注冊了,即便已經不再使用一個元件了,仍然會被包含在你最終的建構結果中。可以用局部注冊來優化:
先定義3個元件
var ComponentA = { /* ... */ }
var ComponentB = { /* ... */ }
var ComponentC = { /* ... */ }
然後在 components 選項中定義你想要使用的元件:
new Vue({
el: '#app',
components: {
'component-a': ComponentA,
'component-b': ComponentB
}
})
對于 components 對象中的每個屬性來說,其屬性名就是自定義元素的名字,其屬性值就是這個元件的選項對象。
注意局部注冊的元件在其子元件中不可用。例如,如果你希望 ComponentA 在 ComponentB 中可用,則你需要這樣寫:
var ComponentA = { /* ... */ }
var ComponentB = {
components: {
'component-a': ComponentA
},
// ...
}
3.子產品系統
這塊還沒有完全看懂,等看懂了再來