https://vuejs.org/guide/extras/composition-api-faq.html Я читаю о различиях между составным API и устаревшими опциями API с vue 3. Я был сбит с толку тем, когда я должен использовать функцию настройки и параметр реквизита над настройка скрипта и defineProps. Из того, что я прочитал в FAQ, " Да. Вы можете использовать Composition API через опцию setup() в компоненте Options API.
Однако мы рекомендуем делать это только в том случае, если у вас есть существующая кодовая база API параметров, которую необходимо интегрировать с новыми функциями/внешними библиотеками, написанными с помощью API композиции. "
Итак, чтобы быть педантичным и спрашивать о правильности, используется ли функция настройки с использованием параметров API?
Если бы вы начали новый проект vue 3, вы бы использовали <script setup> в каждом компоненте?
Есть ли причина не использовать <script setup>?
До сих пор я использовал функцию настройки с параметрами реквизита, и я думаю, что код выглядит хорошо и читабельно, но я думаю, что это неправильный способ действий. Сделать все <script setup> и убрать функцию настройки?





Вы можете использовать script setup или setup() внутри Options API.
Кто-то предпочитает Options API, остальным нравится CAPI.
Это просто предпочтение, которое позволяет людям по-прежнему использовать API параметров, поскольку он более доступен и прост для понимания (особенно для новичков).
CAPI больше нацелен на продвинутых пользователей или разработчиков React hooks.
Итак, чтобы быть педантичным и спрашивать о правильности, используется ли функция настройки с использованием параметров API?
API опций не идентичен блоку script. API параметров означает параметры компонента, которые были заменены API композиции, а именно data, methods, computed, watch, mixins.
Если бы вы начали новый проект vue 3, вы бы использовали его в каждом компоненте? Есть ли когда-нибудь причина не использовать ?
Это субъективно, но есть причины избегать этого.
script setup является DSL и не соответствует спецификации JavaScript. Он непрозрачен и недостаточно документирован, значительное количество проблем, связанных с этим синтаксисом, происходит из-за того, что разработчики не полностью понимают, что делает код, это можно подтвердить только путем отладки скомпилированного кода JavaScript. Это усугубляет аналогичную проблему с template DSL, за исключением того, что последний хорошо документирован и для его существования есть другие причины, помимо того, что он позволяет писать меньше кода.
Синтаксис охватывает наиболее распространенные случаи, но любой экстраординарный случай требует добавления дополнительного блока скрипта или рефакторинга компонента для использования script вместо script setup. Некоторые из этих случаев невозможно предсказать во время принятия решения о синтаксисе компонента. Это приводит к несоответствиям и дополнительному обслуживанию.
Все еще есть инструменты, которые не полностью поддерживают синтаксис script setup.
Преобразования реактивности Vue — еще один пример синтаксического сахара, который использует макросы $ доллара и т. д. Для краткого кода компонента за счет его ясности и соответствия стандартам ECMAScript.
Таким образом, он не обрабатывает все случаи - я видел три, которые вы мне прислали, где вам все равно понадобится обычная <script>... Если вам нужна согласованная и поддерживаемая кодовая база, вы предлагаете использовать скрипт с функцией настройки? лучший маршрут? Я как бы сгорбился таким образом.
import MyComp ... не работает и будет встряхиваться деревом, но в настройке скрипта он добавляется к components по волшебству и так далее. Да, я лично рекомендую использовать функцию скрипта, это более безопасная ставка, несмотря на то, что установка скрипта широко рекламируется. установка скрипта может сделать работу на несколько процентов быстрее, но никто не знает, сколько времени вы потеряете, разбираясь с его ограничениями и причудами, и общие знания JS с ними не помогут.
Спасибо, это отличный ответ, и я думаю, что полностью понимаю, что сейчас происходит. Цените помощь.
Не могли бы вы уточнить, что «настройка сценария - это DSL, а не соответствующий спецификации JavaScript». Я не знаю, что такое DSL.