Category : javascript

javascript
Написал валидатор llms.txt на 64 тестах — и проверил, читают ли этот файл боты

Файл llms.txt предлагают класть в корень сайта с 2024 года: считается, что языковые модели прочитают его вместо того, чтобы разбирать вёрстку. Я написал для него генератор и валидатор, проделал 64 теста для отладки — и параллельно посмотрел, сколько раз ИИ-боты вообще запрашивают этот файл. Значения получились неутешительные, но валидатор всё равно оказался полезным. Ниже — устройство разбора, схема оценки и код.Что такое llms.txt и чем он отличается от llms-full.txtllms.txt — текстовый файл в …

  • суббота, 15 августа 2026 г. в 00:00:21
javascript
Ускоряем drop in replace Next.js в 100 раз. Часть 1

Как говорил классик: в 100 раз за Rust. Кажется, что название является кликбейтом. И такого быть в принципе не может. Но я запланировал цикл из трёх статей, в которых постараюсь рассказать, как достичь такого фантастического результата. Часть 1. Архитектура и бенчмаркиПоследние годы, если мы говорим о BFF, SSR, API routes, React Server Components или server-side fetch, мы почти автоматически думаем про JavaScript runtime. Node.js, Deno, Bun, много маркетинга, но парадигма одна: JS/TS исполняет…

  • суббота, 15 августа 2026 г. в 00:00:19
javascript
Use-As-Dictionary: как мы перестали отдавать один и тот же бандл по пять раз в день

Все цифры в статье - с нашего клиентского портала (CRA-сборка, React 16 (да, посмейтесь, а я поплачу ещё раз)). Размеры и дельты измерены локально на 18 реальных релизных сборках, поведение пользователей - из прод-таблицы логинов за 30 и 100 дней. Строки таблицы результатов, которые не измерены, а посчитаны по модели, помечены отдельно. Методика - в конце.У нас непрерывная поставка. В спокойный день один релиз, в шумный - восемь. За сто дней (4 мая - 10 августа) в клиентский портал уехал 81 рел…

  • суббота, 15 августа 2026 г. в 00:00:17
javascript
Encode, don't stringify — как JSON.stringify вам врёт

Помните, как лет 5–7 назад все сидели на Yup или Ajv и всех всё устраивало? Признаю, половину интернета устраивает до сих пор 🫡Потом появилось «Parse, don’t validate», стало настольной книгой для кучи разработчиков и в итоге выстрелило и у нас, в JavaScript и TypeScript. Тысячи библиотек со схемами — лучшее тому подтверждение 😁Но это уже решённая проблема, и статью вы открыли не ради неё. А вот что не решено:“Encode, don’t stringify”Или, проще говоря: НИКОГДА не используйте JSON.stringify в сво…

  • суббота, 15 августа 2026 г. в 00:00:16
javascript
Astryx: дизайн-система, которой может пользоваться AI-агент

В прошлой статье про StyleX я разбирал, почему компилируемый CSS выглядит логичным продолжением ветки CSS-in-JS. Одно из главных свойств StyleX для меня — предсказуемость: стили описываются в ограниченной форме, которую можно анализировать ещё до запуска приложения.Это особенно важно в момент, когда код всё чаще пишет не только человек, но и AI-ассистент. Если инструмент допускает любую форму записи стилей, ассистент рано или поздно начнёт пользоваться всей этой свободой: добавлять магические з…

  • суббота, 15 августа 2026 г. в 00:00:14
javascript
Как я перестал разрывать архитектуру на десяток документов — и сделал свой C4-редактор

Инструмент: C4 QuietGridLabs. Можно открыть демо без авторизации: проект будет храниться локально в браузере.Иногда архитектура «есть» — но пользоваться ею невозможно.На доске лежит схема сервисов. В Confluence живёт описание. Где-то рядом — sequence-диаграмма, которую никто не открывал с прошлого года. ER-модель хранится в другом инструменте. А когда на ревью возникает простой вопрос «какой endpoint обслуживает этот путь?», команда начинает собирать ответ из памяти, догадок, выдумок, ссылок и …

  • суббота, 15 августа 2026 г. в 00:00:09
javascript
Бесшовный переезд с Perl на Nuxt: история одного 20-летнего монолита

Привет, Хабр! Меня зовут Эрнест Гилязов, я тимлид группы разработки интерфейсов Рунити. В этой статье расскажу, как мы переносим на новый стек проект Рег.ру, кодовой базе которого исполняется 20 лет, и почему в итоге Nuxt-приложение само раздает шапку и футер в легаси-монолит через обычный JSON-эндпоинт.Навигация по тексту:Точка отсчета: монолит на Perl и Template ToolkitПервый сигнал к переезду: стек как узкое горлышкоМиграция без риска: редирект по списку услугЛегаси, которое не мешало: витри…

  • пятница, 14 августа 2026 г. в 00:00:11
javascript
Web‑карты: от координат до изображения

Недавно я вспомнил стартап, над которым работал в 2024 году. Мы делали что‑то вроде Pokemon GO на свой лад: пользователь должен был ходить по городу и собирать сундучки, из которых можно было получить скидку, промокод или специальное предложение от компании‑партнёра.В какой‑то момент проект свернулся, а я ушёл в вольное плавание. Но из него у меня остался интересный и достаточно уникальный опыт — в ходе разработки пришлось довольно глубоко разобраться в том, как вообще работают карты в браузере…

  • пятница, 14 августа 2026 г. в 00:00:10
javascript
Как я собрал браузерный хоррор на Three.js: GLB-контракт, аномалии и PS1-рендеринг для слабых устро…

Привет, Хабр.Я frontend-разработчик и большую часть времени работаю с интерфейсами. В какой-то момент мне стало интересно, можно ли на привычном для меня веб-стеке сделать не демо с вращающимся кубом, а законченную 3D-игру — с загрузкой сцены, управлением, звуком, меню, мобильной версией и публикацией на платформе.Так появилась Taproom 8 — браузерная игра, в которой нужно искать аномалии в мрачном баре.Играть: Taproom 8 в Яндекс ИграхИсходный код: GitHubНиже расскажу не столько о самой игре, ск…

  • четверг, 13 августа 2026 г. в 00:00:23