Обновить
256K+

JavaScript *

Прототипно-ориентированный язык программирования

277,89
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

Один поток, а всё успевает: как работает цикл событий в JavaScript

Уровень сложностиСредний
Время на прочтение12 мин
Охват и читатели5.9K

Promise, setTimeout и async/await часто работают совсем не в том порядке, которого ждёшь по коду, а тяжёлая синхронная функция способна заморозить весь интерфейс. Разберём модель цикла событий, которая объясняет эти эффекты и помогает понимать, где возникают блокировки, гонки запросов и лишние задержки.

Читать далее

Новости

Почему сайт невидим для роботов: проблемы вайб-кодинга

Уровень сложностиПростой
Время на прочтение9 мин
Охват и читатели4.6K

Вайб-кодинг уронил порог входа до плинтуса: Lovable, Bolt или v0 соберут лендинг за вечер. А потом сайт неделями болтается на дне выдачи, и даже ChatGPT про него не знает. Спрашиваешь у нейронки, почему SEO хромает, — она валит на «непродающие тексты». Причина обычно глубже: для поисковых роботов ваш сайт буквально пустая страница.

Внутри: почему нейронки по умолчанию лепят SPA, как на JavaScript смотрят Google и Яндекс, почему GPTBot и ClaudeBot скачивают ваши скрипты, но никогда их не запускают, работает ли llms. txt и какая одна строчка в промпте все чинит.

Читать далее

Ленивая загрузка — не лекарство: почему ваш main.js всё равно весит 2 МБ

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели11K

Вы разбили Angular‑приложение на ленивые модули, включили production‑сборку и всё равно получили main.js весом почти 2 МБ. Причина часто скрывается в общих модулях, тяжёлых зависимостях и импортах, которые мешают tree‑shaking.

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

Читать далее

Обзор на Astro JS: опыт боевого проекта на 500+ тысяч страниц

Уровень сложностиПростой
Время на прочтение10 мин
Охват и читатели8.9K

Привет! В этой статье я - Антон Резников, Fullstack разработчик и Lead проекта из evilUnion, расскажу, как мы отказались от знакомого всем Next JS, не пожалели об этом и запустили один из самых крупных наших проектов на очень перспективном фреймворке - Astro JS.

В этой статье мы посмотрим, что из себя представляет Astro, чем он выделяется среди других метафреймворков, изучим его особенности, а далее на реальном примере пройдем весь путь построения мультиязычного сайта на 500+ тыс. страниц. Поехали 🚀

Читать далее

Четыре месяца с Claude Code: что в итоге осталось лежать в .claude/

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели6K

За четыре месяца работы в паре с Claude Code вокруг проекта наросла инфраструктура, которой в первый день не было и в помине: пять скиллов, четыре хука, 2066 строк собственных скриптов. Разбираю четыре проблемы, которые пришлось решать не промптом, а кодом — и три случая, когда агент уверенно врал.

Читать далее

«Зачем Javasript-у DI контейнер?»

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели14K

Вот именно такой вопрос был задан в первом же комментарии к статье "DI-контейнер на чистом JavaScript без TypeScript и reflect-metadata" уважаемого @alexander_kubarski. Я когда-то и сам на Хабре отвечал на этот вопрос ("Зачем нужно внедрение зависимостей в JS"), и уважаемый @Wroud тоже ("Dependency Injection в JavaScript: зачем он вам нужен"), но непонимание места и значения DI у JS-разработчиков всё равно присутствует. Попробую ответить на этот вопрос ещё раз:

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

Именно для этого используют Inversion of Control в целом и Dependency Injection в частности - во всех языках программирования, а не только в JavaScript.

Чуть подробнее...

Как я организовал проект на Next.js

Уровень сложностиСредний
Время на прочтение20 мин
Охват и читатели8.1K

В этой статье я расскажу, как организовал свой проект на Next.js. На примере реального приложения рассмотрены структура проекта, организация маршрутизации, работа с данными через DAL, аутентификация, валидация, тестирование и другие подходы, которые я использовал в процессе разработки. Статья не претендует на универсальное руководство, а показывает один из возможных вариантов организации приложения.

Читать далее

Napominator Home: Полное руководство по установке, настройке и использованию

Время на прочтение8 мин
Охват и читатели7.9K

В прошлой статье я поспешил с публикацией и лишь в общих чертах объяснил, что такое Napominator Home. Сегодня, как и обещал, публикую подробное руководство, которое охватывает все этапы: от установки до ежедневного использования.

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

Читать далее

Что нового в WebStorm 2026.2

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели9K

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

В релиз вошли поддержка TypeScript 7, нативная интеграция с GitHub Copilot, менеджер скиллов для ИИ-агентов и обновления для React, Vue, Svelte, Angular и других популярных технологий. Разработчики также улучшили отладку, работу с Node.js и Git, производительность и стабильность IDE.

В статье разберём основные изменения WebStorm 2026.2, а также расскажем, какие возможности для веб-разработки уже доступны в OpenIDE и чего ожидать от её предстоящего перехода на платформу 2026.2.

Читать далее

N тел в браузере: PWA‑бенчмарк на Rust, WebAssembly и Three.js

Время на прочтение10 мин
Охват и читатели6.9K

В статье расскажу о PWA‑бенчмарке, который основан на задаче N тел. Физический движок написан на Rust/WebAssembly, визуализация через Three.js, и результаты запусков сохраняются в Supabase. Тут присутствует разбор архитектуры, сравнение алгоритмов расчета — прямой и Barnes‑Hut, а также тут расписаны проблемы, связанные с измерением производительности в браузере.

Читать далее

page.waitForTimeout — это всего лишь warning. Почему зелёный линт не спасает Playwright-тесты

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели6.3K

Тест кликает с force: true, ждёт waitForTimeout(3000) и не делает ни одной проверки — а CI с подключённым eslint-plugin-playwright зелёный: все три греха в recommended — warning. Я выписал из исходников плагина, где error, а где warn. Под катом — конфиг, который это чинит. Ну и десять правил ревью, до которых линту не дотянуться в принципе.

Читать далее

История корутин: появление, развитие, спад и возрождение

Уровень сложностиПростой
Время на прочтение11 мин
Охват и читатели7.9K

Привет, Хабр! Меня зовут Дмитрий Попов, я Android‑разработчик в ПСБ. В какой‑то момент мне захотелось разобраться — что такое корутина и откуда они вообще взялись. Погрузившись в различные статьи и видео, я узнал много нового, рассказал коллегам внутри команды, а теперь решил рассказать и вам. Все, что важно знать о корутинах, по моему скромному мнению, — в этой статье!

Читать далее

Вышел Nuxt 4.5

Уровень сложностиПростой
Время на прочтение13 мин
Охват и читатели9.3K

Nuxt 4.5 это действительно крупный релиз. В нём обновили сразу три ключевых компонента системы сборки: Vite 8, Rspack 2 и совершенно новый пайплайн на базе Rsbuild для сборщика Rspack.

Также появились экспериментальный режим потокового SSR, стабильная система кодов ошибок, несколько новых composables и соглашений, а ещё множество внутренних улучшений, которые приближают нас к Nuxt 5.

Читать далее

Ближайшие события

FFmpeg в браузере: как мы сделали медиа-конвертер, который ни разу не обращается к серверу

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели12K

Конвертация медиа. Люди решают эту задачу десятки раз в неделю. Видео с дрона нужно перевести в MP4 для мессенджера, HEIC с айфона в JPEG для сайта, аудиозапись интервью обрезать и сжать. Обычно это выглядит так: человек открывает один из сотен онлайн-конвертеров, загружает туда полугигабайтный файл, ждёт, пока он доползёт до сервера, потом ждёт очереди, потом скачивает обратно. Параллельно его файлы лежат на чужом сервере, о чём мало кто задумывается (а зря, если речь про корпоративный договор или личное видео).

Мы решили проверить, можно ли полностью убрать из этой схемы сервер. Чтобы конвертация происходила целиком в браузере, на устройстве пользователя. Без загрузок, без очередей, без серверных затрат. Так появился BrowsersKit: набор инструментов (медиа-конвертер, PDF, математика, Python-песочница), работающих на клиенте. Дальше расскажу, как это устроено внутри, какие грабли нас поджидали и как мы с ними справились.

Читать далее

Эмиграция в США после 30: от подработок на складе до Apple, своей школы и разработки с ИИ

Уровень сложностиСредний
Время на прочтение26 мин
Охват и читатели8.5K

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

Я, Александр, автор телеграм-канала «Shulepov Code», поговорил с Виктором Богуцким — разработчиком, который переехал в США в 2016 году, прошёл путь от физической работы и десятков отказов до позиции в Apple и eBay, а сейчас основателем школы программирования PASV.   

В этом выпуске мы разбираем, почему эмигранту важнее упорство, чем талант, как устроен найм в американском IT, почему высокая зарплата не гарантирует больших накоплений и зачем разработчику в эпоху вайбкодинга становиться «дирижёром-архитектором». Виктор делится реальным опытом переезда с семьёй, особенностями поиска работы после 30 и тем, как он построил свою школу программирования.    

Читать далее

Я забыл — не прокатит, или какой подход у админа к детям

Время на прочтение6 мин
Охват и читатели10K

Пока я работал над Mini-Bucket, параллельно развивался еще один проект. Именно о нем и пойдет речь в этой статье.

Предыстория: от проблемы к идее Я уже неоднократно сталкивался с одной проблемой. Вернее, даже с кучей мелких, но если их обобщить, получится одна большая. Думаю, родители, читающие эту статью, меня прекрасно поймут.

ДЕТИ… Их вечное: «Забыл!», «Я не слышал!», а в голове — только игры и бесконечное сидение в телефонах.

В очередной раз услышав это «Забыл», у меня просто поднакипело (признаюсь, я и сам порой забываю что-то проверить). Я решил: пусть.....

Читать далее

FSD, Clean или modular? Шесть вариантов React-магазина под четырьмя изменениями

Уровень сложностиСредний
Время на прочтение12 мин
Охват и читатели9.7K

Мы вынесли компактную карточку банковской карты в entities/card/ui: маска номера, баланс и статус — решение казалось очевидным.

Через два спринта в карточке появились действия «заблокировать карту» и «изменить лимит». В итоге entity начала импортировать features/block-card, features/change-card-limit и проверку прав доступа мимо public API. Когда ту же карточку понадобилось показать в выборе счёта списания, вместе с ней приехали ненужные зависимости и проверки ролей.

Пользовательских инцидентов не случилось, но исправление отняло время. В entity оставили чистый CardPreview, сценарии подключили выше, композицию дашборда перенесли в widgets/card-summary, затем заново прогнали ролевые тесты.

После этого на ревью мы стали обсуждать имя папки ближе к концу разговора. Сначала отвечали на другой вопрос:

Какие будущие изменения выбранная граница позволит оставить локальными?

В FSD 2.1 для подобных ситуаций рекомендуют начинать со страниц и извлекать код ниже по мере появления переиспользования. Это хороший вариант по умолчанию, хотя самостоятельный сценарий с близким вторым потребителем иногда оправдывает границу раньше.

Читать далее

DI-контейнер на чистом JavaScript без TypeScript и reflect-metadata

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели12K

В статье разберем, как собрать простой DI-контейнер на чистом JavaScript без TypeScript, декораторов и reflect-metadata. Заодно посмотрим, как применить его в небольшом DDD-примере с корзиной, репозиторием, скидками и разными lifetime зависимостей.

Читать

Установщик на Go Wails: Полный гайд. Своя self-hosted двухсерверная VPN-архитектура: ЧАСТЬ 3

Уровень сложностиСложный
Время на прочтение25 мин
Охват и читатели11K

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

В Wails основными файлами, с которыми проходит 90% работы это index.html, styles.css, main.js, app.go. Остальные файлы мы либо не трогаем, либо настраиваем один раз в самом начале.

Для фронтенда я использовал стандартный html, css, js без современных фреймворков (так как я в них не разбираюсь). Frontend часть подробно рассматривать в этой статье не планируется, a html будет использоваться только чтобы показать, где используются js функции.

Читать далее

Зачем учить бинарный поиск, если платят за покраску кнопок

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели12K

Привет, Хабр!

Среди разработчиков уже давно идёт спор: действительно ли нужны алгоритмы в повседневной разработке, или это исключительно сухая теория для прохождения собеседований? Вот и я решил вступить в спор.

Когда я только начинал карьеру во фронтенд-разработке, то постоянно задавался вопросами: «Зачем на интервью просят обходить граф, если на работе я просто правлю CSS-отступы?» или «Зачем мне знать сложность O(N), если вёрстка всё равно ломается в Safari?» С развитием ИИ подобные вопросы стали звучать ещё громче: «Зачем мне вообще думать, если агент напишет этот цикл за меня?»

Однако по мере прокачки в алгоритмических задачах я стал замечать их применение в реальной разработке, где задача сводилась к чему-то более сложному, чем выравнивание div по вертикали. Я научился проектировать более лаконичные реализации бизнес-фич, стал быстрее находить узкие места, убивающие производительность, и, самое главное, обрёл уверенность в собственных действиях.

Читать далее
1
23 ...