Vue.js フォルダ内のコンポーネントをまとめてグローバルコンポーネントに登録する
特定のフォルダ内にあるシングルファイルコンポーネントを、他のコンポーネントからもグローバルに参照できるように設定します。
webpack
を使用している前提とします。
shared
フォルダにあるコンポーネントを他のコンポーネントでも使用できるようにします。 + /shared + .test1.vue + .test2.vue + .test3.vue
以下のように使用したいコンポーネントをimport
すれば使用できますが、使用頻度が高いコンポーネントはグローバルに登録しておけば、各ファイルでそれぞれimport
する処理を記載せずにすみます。
<template>
<test1></test1>
</template>
<script>
import test1 from './shared/test1.vue'; //各ファイルで記載したくない
export default {
components: [test1]
}
</script>
エントリポイントのファイルに以下を記載します。
main.js
// sharedフォルダは以下のvueファイルを読み込み
const files = require.context('./shared', true, /\.vue$/);
const components = {};
files.keys().forEach(key => {
components[key.replace(/(\.\/|\.vue)/g, '')] = files(key).default;
});
// 読み込んだvueファイルをグローバルコンポーネントとして登録
Object.keys(components).forEach(key => {
Vue.component(key, components[key]);
});
グローバルコンポーネントとして登録しておけば、各ファイルでimport
することなくコンポーネントを使用することができます。
<template>
<test1></test1>
</template>
<script>
export default {
}
</script>