Глобальная регистрация — это способ сделать компонент доступным во всем приложении без необходимости его импортировать в каждом файле, где он используется.
import Vue from 'vue'
import MyComponent from './MyComponent.vue'
Vue.component('MyComponent', MyComponent)
new Vue({
el: '#app',
render: h => h(App)
})
import { createApp } from 'vue'
import App from './App.vue'
import MyComponent from './MyComponent.vue'
const app = createApp(App)
app.component('MyComponent', MyComponent)
app.mount('#app')
// components/index.js
import BaseButton from './BaseButton.vue'
import BaseIcon from './BaseIcon.vue'
const components = {
BaseButton,
BaseIcon
}
export default {
install(app) {
Object.entries(components).forEach(([name, component]) => {
app.component(name, component)
})
}
}
app.component('BaseButton', BaseButton)
app.component('IconHome', IconHome)
// Автоматическая регистрация всех компонентов из папки `base`
const requireComponent = require.context(
'./components/base',
false,
/Base[A-Z]\w+\.(vue|js)$/
)
requireComponent.keys().forEach(fileName => {
const componentConfig = requireComponent(fileName)
const componentName = fileName.split('/').pop().replace(/\.\w+$/, '')
app.component(componentName, componentConfig.default || componentConfig)
})
Для оптимизации производительности лучше использовать локальную регистрацию, когда компонент:
Пример локальной регистрации:
import ComponentA from './ComponentA.vue'
export default {
components: {
ComponentA
}
}
В Vue 3 появилась возможность отложенной регистрации компонентов:
// Ленивая регистрация с динамическим импортом
app.component(
'MyComponent',
() => import('./components/MyComponent.vue')
)
Глобальная регистрация компонентов — это мощный инструмент для часто используемых элементов интерфейса, который следует применять осознанно, учитывая влияние на производительность и архитектуру приложения. Для больших проектов рекомендуется комбинировать глобальную и локальную регистрацию.