JavaScript for Devs – Telegram
JavaScript for Devs
712 subscribers
34 photos
11 videos
1 file
43 links
По сотрудничеству пишите в личные сообщения канала.
Download Telegram
Channel created
💡 Ошибки с async/await в JavaScript

Асинхронный код в JavaScript стал проще с появлением async/await, но у него есть коварная ловушка: ошибки в промисах могут «утекать» и не обрабатываться. Это приводит к UnhandledPromiseRejection, который проявляется далеко не сразу и часто маскирует настоящую причину бага.

Решение — всегда оборачивать асинхронный код в обработку ошибок. На уровне функции это try/catch:


async function fetchData(url) {
try {
const res = await fetch(url)
if (!res.ok) {
throw new Error(`HTTP error: ${res.status}`)
}
return await res.json()
} catch (err) {
console.error("Ошибка при получении данных:", err)
throw err // пробрасываем выше, если нужно
}
}


Но есть нюансы:
– Локальный try/catch хорош для точечной обработки (например, показать пользователю алерт).
– Глобальная обработка нужна для неожиданных ошибок: в браузере это window.onunhandledrejection, в Node.js — process.on('unhandledRejection').
– Параллельные вызовы лучше обрабатывать через Promise.allSettled(), чтобы ошибка одного промиса не обрушала весь батч.
6👍6🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
🥶 TypeScript 5.9 — что нового?

Вышел TypeScript 5.9, и это одно из самых «мягких» обновлений языка, но с рядом полезных улучшений.

Главное:
🟣 Поддержка import defer — новая синтаксическая конструкция для отложенной загрузки модулей.
🟣 Новый флаг компилятора --module node20, который упрощает работу с актуальными возможностями Node.js.
🟣 Expandable hovers в IDE — теперь можно раскрывать тип прямо в тултипе, не уходя в определение.

Интереснее другое: команда подтвердила, что TypeScript 6.0 станет переходным релизом. Он подготовит разработчиков к «нативному порту» компилятора на Go, который планируется в TypeScript 7.0. Это значит, что через несколько лет мы можем увидеть заметный прирост в скорости компиляции и новые возможности инструментов.

Такое мы одобряем 😇

Microsoft
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥43
🙈 Ловушки двойного равенства в JavaScript

Одна из самых частых проблем в JavaScript — неочевидные результаты сравнения с помощью ==. Алгоритм абстрактного сравнения (Abstract Equality Comparison) приводит типы «на лету», из-за чего код может вести себя неожиданно:


0 == false // true
'' == false // true
[0] == false // true (!)


В реальных проектах это часто превращается в баги при проверке пользовательского ввода или данных из API.

Решение — использовать строгое сравнение ===, которое сравнивает и значение, и тип:


0 === false // false
'' === false // false
[0] === false // false


Нюансы:
– Валидацию входных данных всё равно нужно делать вручную: === не спасёт, если вы сравниваете строку "42" и число 42.
– Иногда == может быть уместным (например, при проверке на null и undefined одновременно: value == null). Но такие кейсы стоит явно документировать, чтобы не путать коллег.
– Линтеры вроде ESLint (eqeqeq: "error") позволяют сразу исключить двусмысленное сравнение на уровне правил проекта.
👍7🔥52
🌕 Google Chrome исполнилось 17 лет: история браузера и его будущее

За эти годы браузер прошёл путь от «минималистичного проекта с комиксом» до полноценной платформы для приложений с ИИ.

Скорость, безопасность, стабильность и простота остаются его основными принципами, а впереди — новая эра с локальными AI-API и встроенным ассистентом Gemini.

📚 Подробности на Хабр: https://habr.com/ru/articles/944858/
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥52
🤟 Кэширование DNS в NodeJS

Команда JavaScript for Devs подготовила перевод статьи о том, как кэширование DNS в NodeJS помогает ускорить работу приложений.

На примере инфраструктуры крупного онлайн-сервиса автор показывает, как незаметные на первый взгляд DNS-запросы могут превратиться в узкое место и как простое решение на уровне кода способно повысить стабильность и отклик системы.

📚 Подробности на Хабр: https://habr.com/ru/articles/945166/
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥32
🕵️‍♂️ Supply Chain атака через NPM снова в деле

На днях произошла одна из крупнейших атак на NPM за последнее время — скомпрометирован аккаунт одного из известных авторов пакетов (да, через обычный фишинг), и в результате зловредный код оказался в десятках популярных пакетов, включая is-arrayish.

Через цепочку зависимостей под угрозой оказались сотни тысяч других пакетов — а значит, и тысячи проектов.

Что делает вредонос? Если вы используете один из заражённых пакетов в браузере (например, тот же is-arrayish), скрипт:
🟣 Подменяет fetch, XMLHttpRequest и window.ethereum.request;
🟣 Тихо перехватывает транзакции;
🟣 Заменяет адрес назначения на «похожий» адрес злоумышленника.

То есть вы решите отправить парочку ETH себе — в итоге... они придут уже не на ваш кошелёк.

Список наиболее популярных зараженных пакетов (более двух миллиардов загрузок в неделю):

backslash (0.2.1);
chalk-template (1.1.1);
supports-hyperlinks (4.1.1);
has-ansi (6.0.1);
simple-swizzle (0.2.3);
color-string (2.1.1);
error-ex (1.3.3);
color-name (2.0.1);
is-arrayish (0.3.3);
slice-ansi (7.1.1);
color-convert (3.1.1);
wrap-ansi (9.0.1);
ansi-regex (6.2.1);
supports-color (10.2.1);
strip-ansi (7.1.1);
chalk (5.6.1);
debug (4.4.2);
ansi-styles (6.2.2);
color (5.0.1).


Источник.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥3🤯2😱2
Please open Telegram to view this post
VIEW IN TELEGRAM
😁6👍3🔥1
🤔 Почему браузеры ограничивают JavaScript таймеры?

Команда JavaScript for Devs подготовила перевод статьи о том, почему браузеры намеренно замедляют выполнение setTimeout и других таймеров.

Автор объясняет, как это связано с защитой пользователей, рассказывает о своём бенчмарке разных подходов (setTimeout, MessageChannel, scheduler.postTask) и делает прогноз, какие таймеры будут использоваться в будущем.

📚 Подробности на Хабр: https://habr.com/ru/articles/945872/
👍4🔥3🤔2
🫡 Еженедельный дайджест №1

Для тех, кто был слишком занят на неделе или просто пропустил некоторые посты, публикуем дайджест!

Статьи:
Google Chrome исполнилось 17 лет: история браузера и его будущее
Кэширование DNS в NodeJS
Почему браузеры ограничивают JavaScript таймеры?

Новости:
Supply Chain атака через NPM снова в деле

Самый популярный комментарий этой недели – комментарий к статье "Google Chrome исполнилось 17 лет: история браузера и его будущее" от пользователя @Einherjar:

"Если функция полезна только Chrome, но вредит открытому вебу — мы её пересматриваем. Chrome всё больше будет становиться умным ассистентом для жизни в интернете: помогать справляться с потоком информации"
Ага, например возможность установить uBlock Origin, капец как вредит открытому вебу и особенно (!) мешает справляться с потоком информации. Этому челу бы в политики идти, лицемерия и вранья просто через слово.
Прочитав статью задонатил мозилле - вот мой подарок гуглхрому


@js_for_devs
👍52🔥2
💀 Вам больше не нужен JavaScript

Команда JavaScript for Devs подготовила перевод статьи о том, как CSS и HTML могут заменить значительную часть JavaScript.

Автор делится взглядом на веб как на искусство, показывает возможности современных фич CSS — от вложенности и @starting-style до динамических viewport-единиц, — и доказывает, что сайты могут быть быстрыми, красивыми и интерактивными даже без JS.

📚 Подробности на Хабр: https://habr.com/ru/articles/946498/
Please open Telegram to view this post
VIEW IN TELEGRAM
🤯4👍3🔥2
🔑 Caps Lock + пароли = боль. Вот решение

Вы когда-нибудь набирали пароль, он не подходил, а потом оказывалось, что включён Caps Lock? В обычных инпутах это видно сразу, но в type="password" — сюрприз!

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

Хорошая новость — это легко отловить в браузере! Используйте KeyboardEvent.getModifierState('CapsLock') и покажите подсказку:


document.querySelector('input[type=password]')
.addEventListener('keyup', e => {
const capsLockOn = e.getModifierState('CapsLock');
if (capsLockOn) {
console.warn('Caps Lock is ON!');
}
});


А getModifierState умеет определять не только Caps Lock, но и NumLock, ScrollLock, Fn и даже Super (да, та самая Win/Command-клавиша).

#js_tips@js_for_devs
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥42
😎 Как Node.js выжимает максимум из I/O в 2025 году

Команда JavaScript for Devs подготовила перевод статьи о том, как Node.js выжимает максимум из I/O в 2025 году.

В ней подробно объясняется цикл событий, порядок фаз и то, как правильно писать код, чтобы серверы оставались отзывчивыми даже под нагрузкой.

📚 Подробности на Хабр: https://habr.com/ru/articles/947524/
🔥52👍2
JavaScript всё ещё в топ-6, но теряет позиции

JavaScript держится на 6-м месте TIOBE Index с долей 3.22%, но за год просел на −0.70%. Вспомним, что в 2005 он был всего на 11-й позиции — путь наверх он прошёл впечатляющий.

🤔 Как думаете, сможет ли JS удержаться в топ-10 ещё 10 лет — или его место займёт TypeScript?

Источник.

#news@js_for_devs
🔥42👍2👏2
😵 React-монополист: как мы сами убиваем развитие фронтенда

Выбор React «по умолчанию» тормозит инновации, мешает развитию альтернативных фреймворков и превращает всю экосистему в монокультуру.

Пора выбирать фреймворки по их соответствию задачам и техническим достоинствам, а не по инерции. Ваш следующий проект заслуживает большего, чем "React по умолчанию". Экосистема заслуживает инноваций, которые возможны только при разнообразии.


📚 Подробности на Хабр: https://habr.com/ru/articles/948072/
👍4🔥3👏3