Отличия между Options API и Composition API

Options API (классический подход):

1
2
3
4
5
6
7
8
9
10
11
12
13
<template> <button @click="count++">Кликнули {{ count }} раз</button></template> <script>export default { data() { return { count: 0 { {}</script>

Composition API (новый подход)

1
2
3
4
5
6
7
8
9
<template> <button @click="count++">Кликнули {{ count }} раз</button></template> <script setup>import { ref } from 'vue' const count = ref(0)</script>

Ключевые отличия:

  • Организация кода:
    • Options API: Код организован по опциям (data, methods, computed и т.д.)
    • Composition API: Код организован по логической функциональности (все связанное с одной логикой вместе)
  • Переиспользование логики:
    • Options API: Mixins, которые имеют проблемы с конфликтами имен и неявными зависимостями
    • Composition API: Композаблы (composables) - чистые функции JavaScript
  • Типизация:
    • Options API: Ограниченная поддержка TypeScript
    • Composition API: Отличная поддержка TypeScript
  • this контекст:
    • Options API: Используется this для доступа к свойствам
    • Composition API: Нет this, используются refs и reactive
  • Гибкость:
    • Options API: Более строгая структура
    • Composition API: Больше свободы в организации кода