グローバル登録
登録後に作成された、全てのルート Vue インスタンス(new Vue)のテンプレート内で使用できることを意味します
ローカル登録
- グローバル登録は理想的ではありません。例えば Webpack のようなビルドシステムを利用しているときに、グローバルに登録した全てのコンポーネントは、たとえ使用しなくなっても、依然として最終ビルドに含まれてしまうことでしょう。これは、ユーザがダウンロードしなくてはならない JavaScript のファイルサイズを不要に増加させてしまいます。
- 他のサブコンポーネント内では使用できない ことに注意して下さい
サンプルコード
<!DOCTYPE html>
<html lang='ja'>
<head>
<meta charset='utf-8'>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
</head>
<body>
<div id="app">
<global-hello your-name="山田太郎"></global-hello>
<local-hello your-name="山田太郎"></local-hello>
<counter></counter>
</div>
<script>
Vue.component('global-hello',{
props: ['yourName'],
template: '<div>こんにちは、{{yourName}}!</div>'
})
new Vue({
el: '#app',
components: {
'local-hello': {
props: ['yourName'],
template: '<div>{{yourName}}ローカル</div>'
},
'counter': {
props:['init'],
template: '<div>{{ current }}<input type="button" v-on:click="countup" value="+"><input type="button" v-on:click="countdown" value="ー"></div>',
data: function () {
return {
current: this.init ? this.init : 0
}
},
methods:{
countup: function(){
this.current++;
},
countdown: function(){
this.current--;
}
}
}
}
})
</script>
</body>
</html>
実行結果
