Vue DevTools — отладка и профилирование
Vue DevTools — браузерное расширение для отладки Vue-приложений. Инспекция компонентов, реактивности, Pinia, роутов, timeline и производительности.
Установка
Vue DevTools доступен в двух вариантах:
- Браузерное расширение — для Chrome, Firefox, Edge
- Standalone-приложение — для любой среды (Electron, мобильные браузеры)
Vite-плагин (рекомендуется)
Для разработки с Vite — встраиваемая версия DevTools:
npm install -D vite-plugin-vue-devtools
// vite.config.ts
import VueDevTools from 'vite-plugin-vue-devtools'
export default defineConfig({
plugins: [vue(), VueDevTools()],
})
Это добавляет иконку DevTools прямо на страницу — работает в любом браузере.
Nuxt
В Nuxt DevTools встроены:
export default defineNuxtConfig({
devtools: { enabled: true },
})
Основные панели
Components
Дерево компонентов в реальном времени:
- Иерархия всех смонтированных компонентов
- Инспекция props, emits, data, computed
- Редактирование reactive-свойств прямо в DevTools
- Поиск по имени компонента
- Переход к исходному коду (кнопка «Open in editor»)
Клик по компоненту в дереве открывает панель справа. Там можно видеть и менять значения реактивных свойств.
Inspector (Reactivity)
Отслеживание зависимостей реактивности:
- Какие
refиreactiveсуществуют - Кто подписан на каждое значение
- Когда и почему происходит перерендер
Pinia
Отдельная вкладка для Pinia-stores:
- Все stores и их текущее состояние
- History изменений — можно откатить
- Редактирование state прямо в DevTools
- Время выполнения actions
Timeline
Хронология событий приложения:
- Component events — mount, update, unmount
- Router — навигация между роутами
- Pinia — mutations и actions
- Custom events — ваши собственные события
- Performance — время рендера компонентов
Таймлайн показывает, когда произошло событие, какой компонент затронут и сколько времени заняло.
Router
Текущий маршрут, параметры, query, meta-поля. История навигации.
Практические приёмы
Поиск багов в реактивности
Когда компонент не обновляется:
- Откройте панель Components
- Выберите проблемный компонент
- Проверьте reactive-свойства — изменилось ли значение?
- Посмотрите Timeline — было ли событие обновления?
Отладка Pinia
- Откройте вкладку Pinia
- Выберите нужный store
- Проверьте текущее состояние
- В Timeline видно, какой action изменил state
Профилирование рендера
- Перейдите на панель Timeline
- Включите запись (кнопка Record)
- Выполните действие (клик, навигация)
- Остановите запись
- Смотрите, какие компоненты перерендерились и сколько времени заняло
Программный доступ
devtools-хелперы в коде
// Логирование состояния компонента в DevTools
import { devtools } from 'vue'
// Кастомное событие в Timeline
if (import.meta.env.DEV) {
// Vue DevTools plugin API
}
Inspector для composables
DevTools автоматически показывает composables, использующие effectScope. Для кастомных composables можно добавить отладочную информацию:
export function useFeature() {
const state = ref(0)
if (import.meta.env.DEV) {
// DevTools увидит этот ref в инспекторе компонента
}
return { state }
}
Горячие клавиши
| Действие | Клавиша |
|---|---|
| Выбрать компонент на странице | Клик с зажатым DevTools-инспектором |
| Перейти к исходнику | «Open in editor» |
- Сбросить состояние | Pinia → кнопка «Reset» |
Советы
- В production DevTools автоматически отключается — не нужно убирать из кода
- Используйте Vue DevTools вместе с Chrome DevTools — первый для Vue-специфики, второй для сети и DOM
console.logreactive-объектов лучше заменять на инспекцию в DevTools — там объекты разворачиваются полностью- Timeline помогает найти «залипающие» компоненты, которые перерендериваются без причины
Итог
Vue DevTools — главный инструмент отладки Vue-приложений. Панель Components для инспекции props и state, Pinia для stores, Timeline для хронологии событий, Router для маршрутизации. Для Vite-проектов используйте vite-plugin-vue-devtools, для Nuxt — встроенный devtools: { enabled: true }.