Telegram Web Link
Хотите научиться управлять реактивностью в Vue 3? Это ключевая концепция для создания динамичных и интерактивных интерфейсов!

📌На нашем вебинаре вы разберете, как работает реактивность во Vue 3 и почему это важно для ваших приложений. Мы познакомим вас с Composition API — новым подходом к организации кода, который повысит гибкость и поддерживаемость ваших проектов.

Присоединяйтесь к вебинару и узнайте, как улучшить свои навыки и оптимизировать работу с Vue 3. Мы покажем практические примеры, которые вы сможете сразу применить в своих проектах!

Кому будет полезен вебинар?
- Разработчикам, которые хотят плавно перейти с Vue 2 на Vue 3.
- Новичкам, которые хотят понять основы реактивности и писать структурированный код.
- Опытным разработчикам, стремящимся углубить знания и освоить Composition API для крупных проектов.

👉Регистрируйтесь и получите скидку на обучение «JavaScript Developer. Professional»: https://vk.cc/cKuqI4

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
🧠 KeyUX — это легковесный JavaScript-фреймворк для описания пользовательских интерфейсов через "ключи внимания".
Он помогает разработчикам сосредоточиться на UX-логике, а не на структурной разметке UI.

🔹 Минимум кода
🔹 Управление вниманием пользователя через декларативные ключи
🔹 Подходит для сложных интерфейсов без необходимости создавать бесконечные состояния UI

Пример кода:


import { createApp } from 'keyux'

createApp({
keys: {
search: {
on: 'input',
effect: ({ value }) => console.log('Search:', value)
}
}
})


https://github.com/ai/keyux

👉 @frontend_1
Сложнейшая проблема компьютерных наук: центрирование

Центрирование элементов в веб-разработке кажется простой задачей, но на практике часто вызывает сложности. Данная статья подробно рассматривает распространённые проблемы с выравниванием текста, иконок и других элементов интерфейса, приводя примеры из продуктов таких компаний, как Apple, Microsoft и Google.

Автор анализирует причины этих трудностей и предлагает решения для корректного центрирования элементов на веб-страницах.

https://habr.com/ru/companies/ruvds/articles/810311/

👉 @frontend_1
Совет по JavaScript 💡

Одна строка кода, чтобы определить, есть ли в массиве дубликаты 🤩

👉 @frontend_1
🔒Устали от использования сложных библиотек для автосохранения данных в проектах? Пора использовать Vue.js и локальное хранилище!

На открытом вебинаре 14 апреля в 20:00 мск мы покажем, как работать с локальным хранилищем, включая LocalStorage, SessionStorage и базовые операции с IndexedDB. Вы увидите, как данные остаются, даже если вы перезагрузите страницу, и узнаете, как легко работать с ними через Composition API.

Научитесь добавлять автосохранение в реальный проект без лишнего кода и сторонних инструментов!

⚡️Зарегистрируйтесь и получите скидку на большое обучение «Vue.js-разработчик»: https://vk.cc/cKG5z4

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
This media is not supported in your browser
VIEW IN TELEGRAM
Совет по HTML 💡

Возможно, ты не знал об этой HTML-сущности для вставки мягких переносов слов 🤩

👉 @frontend_1
🚀 Подпишись и прокачай свои скилы: лучшие каналы для IT-специалистов 👨‍💻📲

Папка с каналами для DevOps, Linux - Windows СисАдминов 👍

Папка с каналами для 1С программистов 🧑‍💻

Папка с каналами для C++ программистов 👩‍💻

Папка с каналами для Python программистов 👩‍💻

Папка с каналами для Java программистов 🖥

Папка с книгами для программистов 📚

Папка для программистов (frontend, backend, iOS, Android) 💻


GitHub Сообщество 🧑‍💻
https://www.tg-me.com/Githublib Интересное из GitHub

Базы данных (Data Base) 🖥
https://www.tg-me.com/database_info Все про базы данных


Разработка игр 📱
https://www.tg-me.com/game_devv Все о разработке игр

БигДата, машинное обучение 🖥
https://www.tg-me.com/bigdata_1 Data Science, Big Data, Machine Learning, Deep Learning


QA, тестирование 🖥
https://www.tg-me.com/testlab_qa Библиотека тестировщика

Шутки программистов 📌
https://www.tg-me.com/itumor Шутки программистов

Защита, взлом, безопасность 💻
https://www.tg-me.com/thehaking Канал о кибербезопасности
https://www.tg-me.com/xakep_2 Хакер Free

Книги, статьи для дизайнеров 🎨
https://www.tg-me.com/ux_web Статьи, книги для дизайнеров

Математика 🧮
https://www.tg-me.com/Pomatematike Канал по математике
https://www.tg-me.com/phis_mat Обучающие видео, книги по Физике и Математике

Excel лайфхак🙃
https://www.tg-me.com/Excel_lifehack

Технологии 🖥
https://www.tg-me.com/tikon_1 Новости высоких технологий, науки и техники💡
https://www.tg-me.com/mir_teh Мир технологий (Technology World)

Вакансии 💰
https://www.tg-me.com/sysadmin_rabota Системный Администратор
https://www.tg-me.com/progjob Вакансии в IT
https://www.tg-me.com/rabota1C_rus Вакансии для программистов 1С
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 Трюк с :has() в CSS: "Родительская магия"

Селектор :has() наконец стабильно работает во всех современных браузерах. Это открывает мощные возможности — реакция родителя на состояние потомка без JS!

Пример: подсветить div, если внутри есть заполненный input:


div:has(input:valid) {
border: 2px solid green;
}


Или показать ошибку, если инпут невалиден:


form:has(input:invalid) .error-message {
display: block;
}


📌 Зачем это нужно:
- 💡 Упрощает логику UI без JS
- 🚫 Убирает необходимость в лишних классах и хендлерах
- 💪 Делает компоненты декларативнее и чище

Проверить поддержку: https://caniuse.com/css-has

👉 @frontend_1
🔥 useMemo vs useCallback — не путай!

Многие React-разработчики путают useMemo и useCallback. Давай раз и навсегда разберёмся:

🤯 В чём разница?

- useMemo(fn, deps)мемоизирует значение, возвращает результат выполнения fn().
- useCallback(fn, deps)мемоизирует саму функцию, возвращает fn.

💡 Когда использовать?

- useMemo — если ты вычисляешь что-то тяжёлое или зависящее от пропсов/стейта:

const filtered = useMemo(() => data.filter(i => i.active), [data]);


- useCallback — если передаёшь функцию в дочерний компонент, чтобы избежать лишних ререндеров:

const handleClick = useCallback(() => {
console.log('clicked');
}, []);


⚠️ Антипаттерн


const memoized = useMemo(() => () => doSomething(), []);

Это просто useCallback(doSomething, []). Не усложняй 😄

🔁 Используй по назначению — и код будет быстрее и понятнее!

👉 @frontend_1
🔥 Трюк с :has() в CSS — как маленький хак улучшает UX

Селектор :has() поддерживается во всех современных браузерах. Его часто называют «селектором родителя», но он куда мощнее.

Вот пример, как улучшить UX форм без JS 👇


form:has(input:invalid) button[type="submit"] {
opacity: 0.5;
pointer-events: none;
}


📌 Что делает:
Если в форме есть невалидный input, сабмит-кнопка становится неактивной.

💡 Применения :has():
- Показывать/прятать элементы в зависимости от вложенности;
- Делать UI реактивным без JS;
- Улучшать доступность форм и состояний.

Минимализм, UX и современный CSS — в одном трюке. Попробуй!

👉 @frontend_1
🧑🏻‍💻Хотите начать разрабатывать с Vue.js, но не знаете, с чего начать?

На открытом вебинаре 22 апреля в 20:00 мск мы расскажем вам о Vue.js 3. Вы увидите, как просто установить Vue, какие основные концепции нужно освоить и какие библиотеки вам понадобятся для старта. Убедитесь, что этот фреймворк проще, чем кажется, и намного мощнее, чем вы могли бы подумать!

После вебинара вы будете понимать, как применять Vue.js в своих проектах. Это простой, быстрый и эффективный фреймворк для вашего будущего в веб-разработке.

👉Регистрируйтесь прямо сейчас и получите скидку на большое обучение «Vue.js-разработчик»: https://vk.cc/cKTCQf

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
🔥 useDeferredValue: плавный UX без костылей

При ререндере сложных компонентов (таблиц, графиков, списков) часто случаются лаги при вводе.
useDeferredValue из React решает эту проблему

🧠 Как это работает?
Хук откладывает обновление значения до тех пор, пока браузер не "освободится". Ввод остаётся отзывчивым, а тяжёлые компоненты обновляются асинхронно.


const [query, setQuery] = useState('');
const deferredQuery = useDeferredValue(query);

const filteredData = useMemo(() => {
return heavyList.filter(item => item.includes(deferredQuery));
}, [deferredQuery]);


⚠️ Важно: useDeferredValue не откладывает сет стейт — он откладывает только чтение значения внутри зависимостей.

🚀 Идеально для:
– Автокомплитов
– Фильтрации больших списков
– Любых дорогих вычислений при вводе

📚 Подробнее: https://react.dev/reference/react/useDeferredValue

👉 @frontend_1
🧠 useCallback — не всегда оптимизация, иногда вред

Многие считают useCallback must-have для всех функций в компонентах. Но это антипаттерн, если применять его без понимания.

📉 Когда useCallback не нужен:
- Функция не передаётся в пропсы дочерним компонентам;
- Нет реального выигрыша от мемоизации (см. профилировщик);
- Компонент и так редко рендерится.

📌 Плохо:

const MyComponent = () => {
const handleClick = useCallback(() => {
console.log('clicked');
}, []);

return <button onClick={handleClick}>Click</button>;
};


Хорошо:

const MyComponent = () => {
const handleClick = () => {
console.log('clicked');
};

return <button onClick={handleClick}>Click</button>;
};


🚀 useCallback создаёт объект в памяти и усложняет читаемость. Используй его, только если действительно экономит ресурсы или предотвращает лишние ререндеры.

👉 @frontend_1
Как стать профи в JavaScript? Вебинар для разработчиков, которые хотят расти

JavaScript — это не только язык программирования. Это целый мир, где важно уметь выбирать правильные инструменты и фреймворки, которые действительно помогут вам двигаться вперед.

На открытом вебинаре 21 апреля в 20:00 мск мы разберемся, как стать профессионалом, а не просто джуном. Обсудим:

— Почему одного знания JavaScript недостаточно для роста.
— Как фреймворки (React, Vue, Angular, Svelte) влияют на вашу карьеру и как выбрать тот, который подходит именно вам.
— Почему Node.js полезен фронтенд-разработчикам и как он ускоряет ваш путь в мире технологий.
— Как научиться быстро осваивать новые фреймворки и не бояться перемен.

Этот вебинар — не о коде, а о том, как осознанно развивать свою карьеру. Присоединяйтесь и получите скидку на большое обучение «JavaScript Developer. Professional»:
https://vk.cc/cKV8Hr

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
🔎 Как "убить" ненужный console.log в проде — элегантно

Многие забывают удалять console.log, warn, error перед продом. Это 💩 и баги безопасности, и просто шум. Есть изящное решение — удаление логов на этапе сборки.

Для Vite / Rollup / esbuild / Terser — добавьте:

🔧 Terser (например, в Vite):

// vite.config.ts
terserOptions: {
compress: {
drop_console: true,
drop_debugger: true,
},
}


⚙️ Esbuild:

esbuild: {
drop: ['console', 'debugger'],
}


💡 Совет:
Если используете логгер типа logger.info(...), настройте статический анализ через Babel plugin или tree-shaking.

Важно: не отключайте console.error на деве — это может скрыть критичные баги.

🧼 Чистый прод = меньше багов + быстрее загрузка

👉 @frontend_1
🔥 React: useEffect с async-функцией — антипаттерн!

Многие пишут так:


useEffect(() => {
async function fetchData() {
const res = await fetch('/api/data')
const json = await res.json()
setData(json)
}

fetchData()
}, [])


💥 Это работает, но неявно. Возникают проблемы:
- нет отмены запроса при анмаунте;
- сложно обрабатывать race conditions;
- нельзя обрабатывать ошибки на уровне useEffect.

Лучше — использовать AbortController и обычную функцию:


useEffect(() => {
const controller = new AbortController()

fetch('/api/data', { signal: controller.signal })
.then(res => res.json())
.then(setData)
.catch(err => {
if (err.name !== 'AbortError') console.error(err)
})

return () => controller.abort()
}, [])


🧠 Профит:
- безопасное отключение;
- контроль ошибок;
- читаемый код.

👉 @frontend_1
🚨 Антипаттерн: усложнённые condition-рендеры

Иногда в JSX попадаются вот такие "шедевры":

{isLoggedIn && user?.settings?.theme === 'dark' && !isClick Me Load More && <DarkDashboard />}


🧠 Да, работает. Но читаемость? Поддержка? Страдает.

Лучше так:

const shouldShowDarkDashboard =
isLoggedIn && user?.settings?.theme === 'dark' && !isClick Me Load More;

return (
<>
{shouldShowDarkDashboard && <DarkDashboard />}
</>
);


📌 Плюсы:
- легко отлаживать;
- можно переиспользовать;
- код "говорит", что делает.

🎯 Правило: выноси сложные условия из JSX — это прокачивает читаемость и облегчает поддержку.

👉 @frontend_1
⚡️Vue.js — когда хочется меньше шаблонного кода и больше чистой разработки.

Быстрый, гибкий, понятный. Vue.js остаётся одним из самых удобных фреймворков для фронтенд-разработки — и на этом обучении вы освоите его в полной мере: от компонентной архитектуры и Composition API до юнит-тестов и продвинутой интеграции с GraphQL, Electron, TypeScript.

Вы не просто изучаете синтаксис — вы учитесь строить масштабируемые SPA, настраивать продакшн-сборки и писать код, который реально читается. Программа составлена практиками и обновляется с учётом требований рынка.

👉Набор скоро закроется, пройдите вступительное тестирование и получите скидку на обучение: https://vk.cc/cL3aJ6

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
🔥 Vue: тонкий нюанс с v-if и v-for

Если используешь v-if и v-for на одном и том же элементе — осторожно! Порядок важен 👇


<!-- ⚠️ Антипаттерн -->
<li v-for="item in items" v-if="item.visible">
{{ item.name }}
</li>


Такой код неэффективен: v-if не влияет на v-for — Vue сначала рендерит все элементы, а потом фильтрует по v-if.

Лучше так:

<li v-for="item in visibleItems">
{{ item.name }}
</li>


А в computed:

computed: {
visibleItems() {
return this.items.filter(item => item.visible);
}
}


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

Подробнее — в оф. доках:
https://vuejs.org/guide/essentials/list.html#v-for-with-v-if

👉 @frontend_1
🔥 useMemo vs. переоптимизация

Многие мидлы бездумно оборачивают всё подряд в useMemo, думая, что так улучшают производительность. На деле — часто наоборот: добавляют лишние вычисления и усложняют отладку.

📌 Когда useMemo реально нужен:
- 🧠 Тяжёлые вычисления (парсинг, сортировка, фильтрация больших массивов);
- 🧱 Объекты/массивы в props, чтобы избежать лишних ререндеров memo-компонентов;
- 🖼️ Стабильность зависимостей в useEffect.

Когда НЕ нужен:
- 💨 Простые вычисления (арифметика, строковые конкатенации);
- 🧹 "на всякий случай" — без профилирования.

📊 Как проверить, помогает ли useMemo?
Открой DevTools → вкладка Profiler → замерь рендер до и после — часто разница нулевая (или хуже).

🛠️ Альтернатива: начни с чистого компонента, профилируй, оптимизируй только узкие места.

👉 @frontend_1
2025/07/06 13:12:27
Back to Top
HTML Embed Code: