Vue 2 и Vue 3 - отличия
Vue JS, как мы все знаем, является отличным инструментом, который поможет вам приступить к разработке внешнего интерфейса. В нем есть все, что нужно разработчику интерфейса в 2023 году. Сегодня мы сосредоточимся на том, «что нового появилось в Vue 3» и являются ли новые функции полезными для среднего разработчика Vue.
Что нового в Vue 3
Сначала давайте углубимся в API параметров.
Итак, как вы знаете, разработчики vue, в vue 2 мы используем «API параметров». API параметров — это традиционный способ структурирования и определения компонентов. Он включает в себя определение компонента с использованием набора параметров.
data() { return { message: 'Hello, Vue!', count: 0 }; }
Выше приведен пример использования API опций.
- У нас также есть «Методы» для функций, реквизиты для реквизита (очевидно), наблюдатели, методы жизненного цикла, такие как созданные, смонтированные, обновленные и т. д. в Options Api.
watch: { message(newVal, oldVal) { console.log('Message changed from ' + oldVal + ' to ' + newVal); } }, created() { console.log('Component created'); }, mounted() { console.log('Component mounted'); }, destroyed() { console.log('Component destroyed'); }
Теперь в Vue 3 у нас также есть Composition Api.
Composition Api
Composition API — это альтернативный способ структурирования и организации кода внутри компонентов Vue. Он обеспечивает более гибкий и масштабируемый подход по сравнению с options API. Вместо того, чтобы разделять параметры компонента на разные разделы, Composition API рекомендует группировать связанную логику вместе.
Вот ключевые концепции и функции Composition API в Vue 3:
- Setup function: В Composition API каждый компонент состоит из функции настройки, которая возвращает объект, содержащий свойства, методы и другие реактивные ссылки компонента. Функция настройки запускается перед созданием компонента, что позволяет настроить реактивное состояние компонента и определить логику компонента.
import { reactive, computed } from 'vue'; export default { setup() { const state = reactive({ message: 'Hello, Vue!', count: 0 }); const increment = () => { state.count++; }; const doubleCount = computed(() => { return state.count * 2; }); return { state, increment, doubleCount }; } };
- Реактивное состояние: Composition API предоставляет реактивную функцию, которая позволяет создавать реактивные объекты. Любые изменения, внесенные в реактивные свойства, вызовут реактивность и соответствующим образом обновят вид компонента.
- Вычисляемые свойства: Вычисляемые свойства могут быть созданы с помощью вычисляемой функции. Вычисляемые свойства — это производные значения, которые автоматически обновляются при изменении их зависимостей.
- Методы: Вы можете определить методы компонента в функции настройки. Доступ к этим методам можно получить и использовать в шаблоне компонента или программно.
- Крючки жизненного цикла: Composition API предоставляет хуки жизненного цикла, аналогичные API Options. Однако они имеют префикс on, например onMounted, onUpdated и onUnmounted. Эти хуки позволяют выполнять действия на разных этапах жизненного цикла компонента.
import { onMounted, onUnmounted } from 'vue'; export default { setup() { onMounted(() => { console.log('Component mounted'); }); onUnmounted(() => { console.log('Component unmounted'); }); } };
- Ref: Composition API представляет функцию ref, которая позволяет создавать реактивную ссылку на значение. Ссылки особенно полезны при работе с примитивными значениями, которые требуют реактивности.
- Watch: Composition API предоставляет функцию наблюдения, которая позволяет выполнять операции на основе изменений реактивного состояния или ссылок.
import { watch } from 'vue'; export default { setup() { const count = ref(0); watch(count, (newValue, oldValue) => { console.log('Count changed from ' + oldValue + ' to ' + newValue); }); return { count }; } };
Это основное отличие vue 2 от vue 3, которое появилось и улучшит качество кода и производительность vue. Однако Options API никуда не денется, он останется как есть и будет доступен и в vue 3.
Система реактивности
Vue 3 представляет обновленную систему реактивности, которая более эффективна и работает лучше по сравнению с Vue 2. Новая система, известная как система реактивности на основе прокси, предлагает улучшенное отслеживание реактивности, что приводит к более быстрому и большему точные обновления.
// Vue 2 this.message = 'Hello, Vue!'; // Vue 3 import { reactive } from 'vue'; const state = reactive({ message: 'Hello, Vue!' });
Улучшения производительности
Vue 3 обеспечивает значительные улучшения производительности по сравнению с предшественником. Алгоритм виртуального DOM (VDOM) был оптимизирован для уменьшения выделения памяти и увеличения скорости рендеринга. Новый метод подъема статического дерева в Vue 3 устраняет избыточную повторную визуализацию статического содержимого, что приводит к повышению производительности в сложных приложениях.
Меньший размер пакета
Vue 3 имеет меньший размер пакета по сравнению с Vue 2. Это достигается за счет лучшего встряхивания дерева и улучшенной системы модулей. Модульная конструкция Vue 3 позволяет разработчикам импортировать только необходимые функции, уменьшая общий размер пакета приложений.
Интеграция TypeScript
В то время как Vue 2 имел ограниченную поддержку TypeScript, Vue 3 в полной мере использует возможности статической типизации TypeScript. Кодовая база Vue 3 написана на TypeScript, что обеспечивает лучший вывод типов и предоставляет расширенную поддержку автозаполнения и инструментов для пользователей TypeScript.
Заключение
Основное внимание в vue 3 уделялось производительности и оптимизации. Что ж, многие могут возразить, что API-интерфейс композиции — это здорово, и всем следует немедленно переключиться на него — я могу с уверенностью сказать, что многие захотят придерживаться API-интерфейса вариантов по ряду очевидных причин.
Основными отличиями являются Composition API, обновленная система реактивности, повышенная производительность, меньшие размеры пакетов, улучшенная интеграция TypeScript.
Хотя переход на vue 3 может занять некоторое время, улучшения того стоят.
Я надеюсь, что вы найдете эту статью полезной, и я смог вам чем-то помочь.