Пост 4. Оптимизатор: Ресурсы и золотые правила

Внутренняя оптимизация Vue 3 великолепна, но CRP (путь до первых пикселей) также зависит от того, что и как мы отдаем браузеру. Даже если Vue внутри оптимизирован, долгая работа JS блокирует главный поток (Main Thread), а пока главный поток занят, браузер не может делать Layout и Paint (то есть CRP стоит на месте). Поэтому оптимизация JS напрямую ускоряет CRP.

🧩 Последний ресторан: Если вы хотите быстрее получить свою еду - не стоит беседовать с официантом о том что hh убили нейросети, просто сделайте заказ. С приложением так же - не грузите весь JS бандл на первую отрисовку.

⚙️ Под капотом: Code Splitting: Используйте динамические импорты () => import('./Heavy.vue') в роутере. Suspense: Позволяет добавить fallback, чтобы отрисовать "скелет" UI, пока асинхронные компоненты грузятся. Это убирает белый экран и улучшает FCP. Виртуализация: Для больших список используйте vue-virtual-scroller или другие инструменты виртуализации. Благодаря ним в DOM рендерятся только видимые строки.

💡 Золотые правила: 1. Декомпозиция: Дробите монолитные состояния. Чем точнее реактивность отследит зависимость, тем меньше компонентов перерисуется. 2. computed: Используйте computed вместо методов в шаблоне. Методы вызываются при каждом рендере, а computed кэшируется и пересчитывается только при изменении зависимостей, что снова экономит время выполнения JS (и ускоряет CRP) 3. shallowRef: Если вы работаете с большими объектами и не меняете их вложенные свойства, используйте shallow-версии. Это отключит глубокий Proxy-трекинг. Вы не только сэкономите CPU, но и избежите проблем с памятью и лишних триггеров при изменении вложенных свойств, которые UI не отслеживает