VueUse — это коллекция композабл-функций для Vue 3 (и Vue 2 с Composition API), которые значительно упрощают разработку, избавляя от необходимости писать повторяющийся код. Библиотека предоставляет более 200 удобных хуков для работы с состоянием, DOM, браузерными API, анимациями и многим другим.
Преимущества VueUse
✅ Экономия времени – Готовые хуки избавляют от необходимости писать boilerplate-код.
✅ Реактивность из коробки – Все функции полностью реактивны и работают с Vue-экосистемой.
✅ Отличная TypeScript-поддержка – Полная типизация для безопасной разработки.
✅ Легковесность – Функции импортируются по мере необходимости (tree-shakable).
✅ Совместимость – Работает с Vue 2 (с @vue/composition-api
) и Vue 3.
Самые интересные композаблы из VueUse
1. useMouse
и useMousePressed
Отслеживание позиции курсора и состояния клика:
import { useMouse, useMousePressed } from '@vueuse/core'
const { x, y } = useMouse()
const { pressed } = useMousePressed()
2. useLocalStorage
и useSessionStorage
Удобная работа с хранилищами браузера:
const count = useLocalStorage('counter', 0) // Сохраняется между сессиями
const token = useSessionStorage('auth-token', null) // Удаляется после закрытия вкладки
3. useFetch
Упрощённый fetch с реактивными данными:
const { data, error, isFetching } = useFetch('https://api.example.com/data')
4. useClipboard
Работа с буфером обмена:
const { copy, copied, text } = useClipboard()
copy('Текст для копирования') // copied станет true после успешного копирования
5. useDark
и useToggle
Тёмная тема в одну строку:
const isDark = useDark()
const toggleDark = useToggle(isDark)
6. useDebounce
и useThrottle
Оптимизация производительности:
const debouncedSearch = useDebounce(searchQuery, 500) // Задержка 500 мс
const throttledScroll = useThrottle(scrollPosition, 200) // Не чаще чем раз в 200 мс
7. useGeolocation
Геолокация в браузере:
const { coords, locatedAt, error } = useGeolocation()
8. useIntersectionObserver
Отслеживание видимости элемента:
const target = ref(null)
const { isIntersecting } = useIntersectionObserver(target)
9. useSpeechSynthesis
Синтез речи прямо в браузере:
const { speak, isSupported } = useSpeechSynthesis()
if (isSupported) speak('Привет, мир!')
10. useOnline
и useNetwork
Отслеживание состояния сети:
const isOnline = useOnline() // true/false
const { downlink, saveData } = useNetwork() // Доп. информация о соединении
Заключение
VueUse — это мощный инструмент, который ускоряет разработку, предоставляя готовые решения для типовых задач. Библиотека постоянно развивается, добавляя новые полезные функции.
🔗 Официальный сайт: https://vueuse.org/
Попробуйте VueUse в своём проекте и убедитесь, насколько удобнее становится писать код на Vue! 🚀
Добавить комментарий