Telegram Web Link
Знаешь, как работает defineExpose() в контексте доступа к компоненту?

defineExpose() делает свойства доступными через template ref компонента, а не через определение компонента, импортированное из .vue-файла.

При использовании defineExpose() экспортируемые свойства не добавляются к самому определению компонента (т.е. к объекту, который ты получаешь при импорте компонента в JavaScript).

Вместо этого эти свойства становятся доступными на экземпляре компонента, когда ты получаешь его через useTemplateRef()

👉 Гайды по JavaScript | дать буст
Please open Telegram to view this post
VIEW IN TELEGRAM
Давай поговорим об использовании watch во Vue для реактивных обновлений:

• Во Vue.js можно использовать API watch, чтобы реактивно обновлять CSS-переменные при изменении данных. Это особенно полезно, если состояние приложения должно динамически управлять стилями — например, при переключении темы.

• Изображение 1: допустим, у нас есть CSS-переменная --main-color в :root, и мы используем её для установки цвета body.

• Изображение 2: улучшенный вариант с использованием Composition API Vue.js через script setup и watch.

Каждый раз, когда переменная isDarkTheme меняется, срабатывает функция watch, которая обновляет CSS-переменную --main-color. Такой подход особенно удобен, когда тема или другие стили должны динамически меняться в зависимости от состояния приложения.

👉 Гайды по JavaScript | дать буст
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
1
Чистый приём в JavaScript: деструктуризация с псевдонимами и значениями по умолчанию

👉 Гайды по JavaScript | дать буст
Please open Telegram to view this post
VIEW IN TELEGRAM
Отображать пользовательские уведомления с Nuxt UI — проще простого благодаря useToast

А ты уже пробовал?

👉 Гайды по JavaScript | дать буст
Please open Telegram to view this post
VIEW IN TELEGRAM
Вывод кортежей для структурированной логики в TypeScript

Посмотри, как работает пошаговый процесс на практике.

👉 Гайды по JavaScript | дать буст
Please open Telegram to view this post
VIEW IN TELEGRAM
Типичные сценарии использования defineExpose в Vue:

defineExpose особенно полезен, когда нужно открыть внутренние методы или состояние компонента для родительских компонентов — например, в случае сложных взаимодействий или при создании собственных UI-библиотек. Вот примеры:

✓ Доступ к состоянию компонента для тестирования: Иногда необходимо получить доступ к внутреннему состоянию компонента во время отладки или юнит-тестирования.
✓ Создание переиспользуемых компонентов: При разработке компонентной библиотеки можно сделать некоторые методы или свойства доступными для продвинутых сценариев использования.
✓ Интеграция со сторонними библиотеками: Иногда нужно передать внутренние данные компонента внешним JS-библиотекам, которые работают напрямую с экземпляром компонента.

👉 Гайды по JavaScript | дать буст
Please open Telegram to view this post
VIEW IN TELEGRAM
Используй продвинутые типы TypeScript для создания чистых, композиционных и безопасных с точки зрения типов структур.

Посмотри, как работает связка template literal + exclude + extract в действии.

👉 Гайды по JavaScript | дать буст
Please open Telegram to view this post
VIEW IN TELEGRAM
1
Практические кейсы использования :root CSS-переменных с JavaScript и Vue.js

1. Переключение тем

Динамическое изменение CSS-переменных отлично подходит для переключения тем. Можно хранить несколько тем в виде наборов CSS-переменных и обновлять их в зависимости от предпочтений пользователя. Например, легко реализовать переключение между светлой и тёмной темами или дать более тонкий контроль — над размерами шрифта, цветовой схемой и т.д.

2. Адаптивные изменения в дизайне


CSS-переменные также удобно использовать в адаптивной вёрстке. Можно менять стили в зависимости от ширины экрана или ориентации устройства. Например, при изменении размеров окна можно программно обновлять значения переменных — чтобы подстроить отступы или размер шрифта под мобильные устройства.

В приведённом примере кода размер шрифта динамически адаптируется к ширине экрана, обеспечивая отзывчивый и удобный для пользователя интерфейс.

👉 Гайды по JavaScript | дать буст
Please open Telegram to view this post
VIEW IN TELEGRAM
Angular httpResource совет

✔️Используй Value Guard при вызове .value()

Это помогает безопасно обрабатывать возвращаемые данные и избежать ошибок, если значение отсутствует или не загружено.

👉 Гайды по JavaScript | дать буст
Please open Telegram to view this post
VIEW IN TELEGRAM
2
Причина, почему твой React-код разваливается — это useEffect + setState.

Не синхронизируй локальное состояние внутри useEffect — это делает код излишне запутанным и трудным для понимания.

👉 Гайды по JavaScript | дать буст
Please open Telegram to view this post
VIEW IN TELEGRAM
Совет по JavaScript

Используй document.hasFocus() чтобы проверить, активна ли текущая вкладка.

👉 Гайды по JavaScript | дать буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Совет дня:

используй as const, чтобы получать литеральные типы, а не расширенные. Отлично подходит для enum'ов и конфигурационных объектов.

👉 Гайды по JavaScript | дать буст
Please open Telegram to view this post
VIEW IN TELEGRAM
Three.js — это JavaScript-библиотека, которая позволяет создавать 3D-графику прямо в браузере.

В этом курсе ты научишься работать с ней на практике, создавая реальные проекты.

Ты создашь рендерер, загрузишь и применишь текстуры, поработаешь с wireframe-геометриями и многим другим.

https://freecodecamp.org/news/learn-threejs-by-building-five-projects/

👉 Гайды по JavaScript | дать буст
Please open Telegram to view this post
VIEW IN TELEGRAM
Лучшие практики обновления CSS-переменных :root с помощью JavaScript и Vue.js

1. Группировка обновлений

Если требуется обновить сразу несколько CSS-переменных, объединяйте их в одну операцию. Это снижает количество reflow в браузере и повышает производительность.

Изображение 1: пример с использованием Composition API и script setup. Обновление происходит через style.cssText, что позволяет применить несколько изменений за один проход.

2. Дебаунсинг обновлений


При обновлении CSS-переменных в ответ на частые события (например, resize) следует использовать debounce, чтобы избежать избыточных операций.

Изображение 2: вместо самописного debounce-функционала используется useDebounceFn из VueUse, что упрощает реализацию и повышает читаемость.

3. Ограничение области применения

По возможности ограничивайте область действия CSS-переменных конкретными компонентами, а не глобальным пространством. Это делает изменения более управляемыми и улучшает поддержку кода.

Иногда можно вовсе обойтись без явного объявления CSS-переменных.
Изображение 3: здесь используется реактивная переменная themeColor и директива v-bind() для привязки её значения к CSS-свойству напрямую.

👉 Гайды по JavaScript | дать буст
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Оптимизируйте архитектуру и читаемость своего кода, придерживаясь следующих рекомендаций:

1. Отдавайте предпочтение функциональным компонентам, а не классовым
2. Давайте компонентам осмысленные имена
3. Выносите вспомогательные функции за пределы компонента
4. Выносите повторяющуюся разметку в конфигурационные объекты
5. Следите за размером компонентов — чем меньше, тем проще сопровождать
6. Деструктурируйте props при получении
7. Контролируйте количество props — их не должно быть слишком много
8. Используйте объекты вместо примитивов в props, чтобы группировать связанные значения
9. Избегайте вложенных тернарных операторов — сложные условия выносите в переменные
10. Выносите отображение списков в отдельные компоненты
11. Используйте хуки вместо HOC и render props
12. Переиспользуйте и инкапсулируйте логику в кастомных хуках
13. Выносите части JSX в отдельные функции рендера
14. Используйте Error Boundaries для обработки ошибок в UI
15. Используйте Suspense для управления асинхронной загрузкой компонентов или данных

https://thetshaped.dev/p/15-react-component-principles-for-better-design

👉 Гайды по JavaScript | дать буст
Please open Telegram to view this post
VIEW IN TELEGRAM
Совет дня:

В nuxt_js ты можешь указать, какие composables нужно удалить при tree shaking из клиентского или серверного бандла для повышения производительности.

Это настраивается в файле nuxt.config.ts в секции optimization.treeShake.composables

👉 Гайды по JavaScript | дать буст
Please open Telegram to view this post
VIEW IN TELEGRAM
2025/07/13 18:12:32
Back to Top
HTML Embed Code: