В своей версии 3 Vue представил новую систему организации кода компонентов под названием «Composition API». Этот API является альтернативой «API параметров», который был исходной системой для организации кода в Vue.
Фундаментальное различие между этими двумя API заключается в том, как организованы и доступны различные части компонента Vue.
API опций
Когда вы определяете компонент с помощью API параметров, вы делаете это, предоставляя объекту различные предопределенные параметры.
Среди этих параметров: данные, методы, вычисляемые, часы, свойства, компоненты и т. д. Каждый из этих параметров служит определенной цели и определяет часть функциональности компонента. Есть много других опций (смонтировано, создано, перед уничтожением и т. д.), отсюда и название.
export default { data() { return { message: '¡Hola, Vue!' } }, methods: { sayHello() { console.log(this.message); } } }
API композиции
Composition API — это новый способ определения и организации компонентов в Vue 3. Вместо того, чтобы использовать разные параметры для разных функций, с помощью Composition API вы определяете свой компонент, используя единую функцию: настройку.
Внутри функции настройки вы можете определить все аспекты вашего компонента: реактивные данные, функции, наблюдатели и т. д. Это позволяет вам группировать связанную логику вместе, а не разделять ее по функциям.
import { ref } from 'vue'; export default { setup() { const message = ref('Hello, Vue!'); const sayHello = () => { console.log(message.value); } return { message, sayHello } } }
API композиции
Composition API — это новый способ определения и организации компонентов в Vue 3. Вместо того, чтобы использовать разные параметры для разных функций, с помощью Composition API вы определяете свой компонент, используя единую функцию: настройку.
Внутри функции настройки вы можете определить все аспекты вашего компонента: реактивные данные, функции, наблюдатели и т. д. Это позволяет вам группировать связанную логику вместе, а не разделять ее по функциям.
import { ref } from 'vue'; export default { setup() { const message = ref('Hello, Vue!'); const sayHello = () => { console.log(message.value); } return { message, sayHello } } }
Отличия
Основные различия между этими двумя API:
- Организация кода: с помощью API параметров связанная логика разделена между различными параметрами, тогда как с помощью API композиции вы можете сгруппировать связанную логику вместе.
- Повторное использование кода: Composition API упрощает повторное использование кода и логики между компонентами.
- Тип данных: в Options API this используется для доступа к реактивным данным, а в Composition API такие функции, как ref и reactive, используется для создания и доступа к реактивным данным.
Vue 3 по-прежнему полностью поддерживает API параметров, поэтому вы можете продолжать использовать его, если хотите.
Настройка скрипта
‹script setup› появился в Vue 3.2. Он обеспечивает более краткий способ использования Composition API в компонентах одного файла (SFC).
Вместо экспорта объекта конфигурации компонента с функцией настройки вы можете написать код компонента непосредственно в блоке ‹script setup›. Любая переменная или функция, которые вы объявляете в ‹настройке скрипта›, автоматически отображаются в шаблоне вашего компонента.
<script setup> import { ref } from 'vue'; const message = ref('Hello, Vue!'); const sayHello = () => { console.log(message.value); } </script>
Это точный эквивалент компонента, который мы определили ранее со стандартной функцией настройки, но он более лаконичен.
Преимущества настройки скрипта
- Более лаконичный и понятный код. Вы можете написать свой код прямо в блоке, вместо того чтобы экспортировать объект.
- Больше повторного использования логики: вы можете сгруппировать всю связанную логику с функцией в одном блоке.
- Улучшенная поддержка Typescript. Если вы используете Typescript, настройка скрипта и Composition API имеют лучшую поддержку, чем Options API.
- Более детальный контроль над реактивностью: вы можете точно решить, какие данные должны быть реактивными и как они должны реагировать на изменения.
- Организация кода. Вы можете организовать код по логике функций, а не по параметрам компонента.
Заключение
Выбор между использованием ‹настройки сценария› и Composition API или Options API во многом зависит от вашего проекта и ваших личных предпочтений. Тем не менее, ‹настройка сценария› — это новое предпочтение в проектах Vue 3.