1全局註冊實例(按照官網的例子下面是代碼)
<div id="app">
<com-btn></com-btn>
<com-btn></com-btn>
</div>
<script>
Vue.component('com-btn',{
data:function(){
return{
num:0,
}
},
template:`<button v-on:click='change'>點我{{num}}次</button>`,
methods:{
change:function(){
this.num += 1;
}
}
})
var vm = new Vue({
el:'#app',
data:{
},
})
</script>
我們在註冊一個組件的時候需要給他起一個名字比如com-btn,從上面的代碼我們可以看見
Vue.component('my-component-name', { /* ... */ })
這個組件名字就是我們註冊的這個組件com-btn的第一個參數.這個組件就是全局註冊的,在他們註冊之後,我們可以用在任何新創建的vue根實例(new Vue)裏面。
值得注意的是所有組件必須寫在根實例的前面纔會生效,
2局部祖冊的實例
<script>
var childcom ={
data:function(){
return{
num:0,
}
},
template:`<button v-on:click='change'>點我{{num}}次</button>`,
methods:{
change:function(){
this.num += 1;
}
}
}
var vm = new Vue({
el:'#app',
data:{
},
components:{
'com-btn':childcom,//調用這個組件
}
})
</script>
局部註冊的好處 就是當你使用的是webpack這樣的構建系統時,如果是用全局註冊的這種方法註冊的組件,那麼當你不使用某一個組件的時候,它仍然會存在最終的構建結果之中,這就增加的無謂的js下載。
所以我們可以通過一個簡單的js對象來註冊組件
var ComponentA = { /* ... */ }
在需要使用這個組件時, 你只需要在你的你的根實例裏面去調用這個定義的組件即可。
new Vue({
el: '#app'
components: {
'component-a': ComponentA,
'component-b': ComponentB
}
})
值得注意的是根實例的屬性名字是components,千萬不要忘記s。組件中的其他屬性和實例的一樣但是data必須是一個函數。
對於components對象中的每個的屬性來說就是自定義組件的名字,屬性值就是這個組件的選項對象。
局部註冊的組件在其子組件中是不可用的,如果你希望componentA在componentB中可以使用那你需要下面這樣寫法:
var ComponentA = { /* ... */ }
var ComponentB = {
components: {
'component-a': ComponentA
},
// ...
}