Що таке Options API?
Options API - це традиційний спосіб написання компонентів у Vue (використовувався за замовчуванням у Vue 2 і доступний у Vue 3). У цьому підході вся логіка компонента розділена по опціях:
datamethodscomputedwatchpropsmounted,createdта інші хукиcomponentsfilters(у Vue 2)- тощо
Простіше кажучи:
Options API - це спосіб оголошувати компонент, де кожен тип логіки поміщається у свій блок.
Приклад компонента на Options API
<script>
export default {
data() {
return {
counter: 0
}
},
computed: {
double() {
return this.counter * 2
}
},
methods: {
increment() {
this.counter++
}
},
mounted() {
console.log("Компонент змонтовано")
}
}
</script>
<template>
<button @click="increment">Count: {{ counter }} (x2: {{ double }})</button>
</template>Основна ідея Options API
Весь код компонента розділено за типом, а не за функціональністю:
- у
data()- лише дані - у
methods- методи - у
computed- обчислювані властивості - у
watch- спостерігачі - у
mounted- код при монтуванні
Це зручно для простих компонентів, але у великих - логіка, що стосується одного функціонального блоку, виявляється розкиданою по файлу.
Переваги Options API
Підходить для новачків
Логіка структурована "по поличках".
Чудово підходить для невеликих компонентів
Простий, зрозумілий і читабельний підхід.
Легко читати, коли компонент маленький
Тому що все перебуває в очікуваних місцях.
Сумісний з Vue 3
Options API повністю підтримується у Vue 3.
Недоліки Options API (чому придумали Composition API)
Логіка розмазується по різних розділах
Коли компонент стає великим, робота з ним ускладнюється.
Погано підходить для повторного використання логіки
Доводилося використовувати міксини → вони давали:
- конфлікти імен
- приховану магію
- погану читабельність
Важче організовувати складні компоненти
Потрібно стрибати по файлу між data/methods/computed/watch/mounted…
Підсумок (ідеально для співбесіди)
Options API - це класичний спосіб описувати компоненти у Vue, використовуючи об'єкт з опціями (
data,methods,computed,watchтощо). Простий для навчання, зручний у маленьких компонентах, повністю підтримується у Vue 3, але погано масштабується, через що з'явився гнучкіший Composition API.
Якщо хочеш, можу дати порівняння Options API vs Composition API або розповісти, коли який підхід краще використовувати.
Коротка відповідь
Для співбесідиКоротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.