> Что такое Composition API во Vue и в чем разница с Options API (Vue.js)
Уровень: junior · Роль: frontend · Категория: Технические вопросы
Компании: Библио-Глобус, 1221 Systems
Стек: Vue.js
> Пример ответа
Composition API - это набор функций (например, ref, reactive, computed, watch, onMounted), представленный во Vue 3, который позволяет организовывать логику компонента по функциональному признаку, а не по опциям. В отличие от Options API, где код разбит на обязательные секции (data, methods, computed, watch, lifecycle hooks), Composition API даёт возможность группировать связанный код вместе внутри функции setup() (или в <script setup>).
Основные различия:
-
Организация кода:
-
Options API: логика разбросана по разным опциям (например, данные в
data, методы вmethods). -
Composition API: можно сгруппировать данные, вычисляемые свойства и методы, относящиеся к одной сущности (например, работа с пользователем) в одном блоке.
-
-
Переиспользование логики:
-
Options API: для повторного использования приходится использовать миксины (mixins), которые могут приводить к конфликтам имён и неясному происхождению свойств.
-
Composition API: создаются композаблы (composables) - обычные функции, возвращающие реактивные данные и методы. Их легко импортировать и комбинировать без побочных эффектов.
-
-
Типизация:
-
Options API: типизация через
thisможет быть неудобной, особенно в TypeScript. -
Composition API: лучше поддерживает TypeScript, так как всё работает через обычные переменные и функции.
-
-
Гибкость:
-
Options API: жёсткая структура, сложно вынести часть логики в отдельный файл.
-
Composition API: можно динамически создавать реактивные данные, использовать условные хуки жизненного цикла, легко комбинировать несколько источников логики.
-
Пример сравнения:
Options API:
JAVASCRIPTexport default {data() {return { count: 0 }},methods: {increment() { this.count++ }},watch: {count(newVal) { console.log(newVal) }}}
Composition API (с <script setup>):
<script setup> import { ref, watch } from 'vue' const count = ref(0) const increment = () => count.value++ watch(count, (newVal) => console.log(newVal)) </script>
Когда что использовать?
-
Options API для простых компонентов, где логика невелика, или если команда привыкла к Vue 2.
-
Composition API - для сложных компонентов, где требуется переиспользование логики, работа с TypeScript или более чистая организация кода.
> Похожие задачи по frontend
Почему выбрали Vue и учитывали ли преимущества инструментов
Как реализована реактивность во Vue 2 и Vue 3 и в чем их отличия
В чем разница shallowRef и ref во Vue
В чем разница отрисовки HTML страницы в браузере и работы с фреймворком Vue
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью