Какие знаешь способы создания динамических компонентов на Vue

«Какие знаешь способы создания динамических компонентов на Vue» — вопрос из категории Vue, который задают на 10% собеседований Frontend Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Vue есть несколько способов создания динамических компонентов:

  1. <component :is> - основной способ:
<component :is="currentComponent" />

currentComponent может быть строкой с именем компонента или самим импортированным компонентом.

  1. Динамический импорт + defineAsyncComponent (для ленивой загрузки):
const AsyncComp = defineAsyncComponent(() => import('./AsyncComp.vue'))
  1. Рендер-функции (для сложной логики):
render() {
  return h(resolveComponent(this.componentName))
}
  1. Фабричные компоненты - когда компонент создаётся программно:
const component = defineComponent({...})
createApp(component).mount('#app')

Для переключения между компонентами часто используют v-if/v-else или keep-alive для сохранения состояния.