Сравни способы создания динамических компонентов на Vue и объясни, когда выбирать каждый вариант.
Компоненты
Во Vue динамические компоненты создают через <component :is>, асинхронную загрузку и render-функции.
<component :is>
<component :is="tabs[current]" v-bind="props" />Подходит для вкладок, шагов мастера, виджетов на дашборде. В :is можно передать сам компонент или зарегистрированное имя. Чтобы сохранить состояние при переключении, оборачивают в <KeepAlive>.
defineAsyncComponent
const Chart = defineAsyncComponent(() => import('./Chart.vue'));Компонент загружается отдельным чанком только когда нужен — для тяжёлых редко используемых частей.
Render-функция h
render() {
return h(this.level === 1 ? 'h1' : 'h2', this.$slots.default());
}Подходит, когда структура вычисляется из данных и шаблона недостаточно.
Как выбирать
Переключение между известными компонентами — :is; ленивая загрузка — defineAsyncComponent; полностью программная разметка — h.
Коротко для собеседования
<component :is> для переключения, defineAsyncComponent для ленивой загрузки, render-функции для сложной динамики.
Подробнее: Vue — Динамические компоненты