Вы можете динамически загружать компоненты следующим образом:
(при условии, что вы используете веб-пакет)
<template>
<!-- Just a combo to pick the string 'one' or 'two' into currentComponent variable -->
<v-select v-model="currentComponent" :items="components" solo/>
<!-- 1 - This component is a dynamic one: -->
<component :is="currentComponent"/>
</template>
<script>
// 2 - Importing dynamically
const one = () => import(/* webpackChunkName: "one" */ "../vue/One.vue")
const two = () => import(/* webpackChunkName: "two" */ '../vue/Two.vue')
export default {
name: "toto",
components: {one, two},
data: () => ({
components: ['one', 'two'],
currentComponent: null
})
}
</script>
1 - Использование компонента в шаблоне будет динамически отображать компонент, названный значениемпеременная currentComponent.Вы можете передавать реквизиты и т. Д.
2 - Использование обещаний при импорте компонентов будет загружать компонент с сервера только при использовании.Даже если у вас есть 20 больших компонентов для условного отображения, с сервера будут загружаться только использованные компоненты во время выполнения.
3 - Обратите внимание, что вы также можете использовать один и два компонента с условиями v-if, это тоже работает.
Более подробную информацию о динамических компонентах можно найти здесь