Category : javascript

javascript
Как правильно реализовать кнопку «Назад» во Vue: просто о сложном

Сегодня разберём тему, которая кажется элементарной, но на практике вызывает кучу вопросов. Речь о кнопке «Назад» в приложении на Vue.Казалось бы, что тут сложного? Кликнули - ушли на предыдущую страницу. Но нет. Большинство разработчиков, даже с опытом, не до конца понимают, как устроена навигация в роутерах и как работает история браузера. А это критично, когда речь заходит о предсказуемом поведении приложения.Немного жизни из собеседованийКогда на интервью я спрашиваю: «Как вы реализуете пер…

  • четверг, 16 апреля 2026 г. в 00:00:09
javascript
Разработка нового статического анализатора: PVS-Studio JavaScript

Вот уже 18 лет статический анализатор кода PVS-Studio находится на рынке. За это время он обзавёлся поддержкой языков C, C++, C# и Java. Разумеется, останавливаться на этих языках мы не планируем, и в этой статье расскажем про разработку нового JavaScript/TypeScript анализатора, который выйдет уже совсем скоро.ВведениеПоддержка анализатора для одной из самых популярных семей языков ECMAScript была лишь вопросом времени, учитывая их доминирующую популярность у программистов на протяжении долгих …

  • четверг, 16 апреля 2026 г. в 00:00:09
javascript
Как я написал свою библиотеку валидации схем и создал свою альтернативу Zod

Статья о том, как попытка разобраться в валидации объектов привела к созданию библиотеки валидации схем с runtime-интроспекцией, а на её основе — отдельных библиотек для type-safe маппинга объектов и генерации форм.Предыстория: большие объекты без TypeScriptНесколько лет назад в одном из моих проектов на чистом JavaScript возникла задача: валидировать большие вложенные объекты со сложной структурой. Объекты содержали различные подобъекты, к каждому из которых применялись свои правила валидации …

  • среда, 15 апреля 2026 г. в 00:00:11
javascript
Вышел Playwright 1.59: как тестировщикам с пользой применить каждую новую фичу

Playwright 1.59 — не очередное инкрементальное обновление. Это заявка на то, куда движется автоматизация тестирования, и это направление глубоко агентное. Если вы ждали, когда инструменты догонят AI-driven воркфлоу, о которых все говорят, этот релиз закрывает разрыв.Разберём каждую крупную фичу и, что важнее, как каждую из них можно применить немедленно.🎬 Screencast API: тесты теперь показывают, что делаютГлавная фича релиза — новый page.screencast API. Это не просто запись видео под новым имен…

  • среда, 15 апреля 2026 г. в 00:00:10
javascript
Как я сделал PWA-приложение для заметок и ссылок за вечер (и почему оно работает без интернета)

Вместо предисловия: проблема, которая бесила меня годамиУ каждого из нас есть «чёрная дыра», куда уходят полезные ссылки. Кто-то сохраняет их в «Избранном» браузера, кто-то пишет сам себе в Telegram, кто-то держит десяток вкладок открытыми «на потом». У меня была та же проблема. Я пробовал Notion, Evernote, Google Keep, Obsidian - всё это мощные инструменты, но для простого «сохранить ссылку и не забыть» они часто избыточны.Так родилась идея KylikLink - минималистичного PWA-приложения для замет…

  • среда, 15 апреля 2026 г. в 00:00:08
javascript
Формы в Angular: от Reactive Forms к Signal Forms

Привет! Меня зовут Егор Молчанов, я разработчик в компании Домклик. В прошлой статье мы познакомились с новыми функциями input(), output() и model(), которые закладывают фундамент для будущего Angular без Zone.js. Сегодня поговорим о том, как эти изменения дошли до самой, пожалуй, наболевшей темы в любом приложении — работы с формами. В Angular v21 появился новый, экспериментальный способ управления формами — Signal Forms. Он не заменяет привычные Reactive Forms, а предлагает совершенно иной по…

  • среда, 15 апреля 2026 г. в 00:00:07
javascript
Предварительная загрузка изображений с помощью JavaScript

Я узнал, что задача предварительной загрузки изображений с помощью JavaScript удивительно сложна. Существует несколько способов это сделать, и лучший из них зависит от требований конкретного приложения.❯ КейсВ последней версии JamComments появилась возможность перетаскивать и вставлять изображения в поле для комментариев. Это очень похоже на добавление изображения в запрос на слияние (PR) на GitHub:При разработке все выглядело отлично, до момента отправки комментария, когда новый комментарий до…

  • среда, 15 апреля 2026 г. в 00:00:05
javascript
WebGPU, библиотека Orillusion и кастомные шейдеры: как я создавал 4D Тессеракт

orillusion ТессерактыWebGPU — это новый стандарт для доступа к возможностям видеокарт, который я уже несколько лет хочу использовать в своем проекте. Два года, даже с включенными флагами, у меня не получалось с моей встроенной видеокартой это сделать. В отличие от WebGL, WebGPU создавался с нуля под архитектуры современных GPU, предоставляя разработчикам низкоуровневый контроль над вычислениями, поддержку compute-шейдеров и высокую производительность в браузерах.Но сегодня эта технология выход…

  • среда, 15 апреля 2026 г. в 00:00:05
javascript
dc.send(file) не существует: что на самом деле нужно для передачи файла в браузере

Рис. 1. dc.send(file) не означает, что файл уже доставлен.Самая опасная иллюзия в WebRTC-файлообмене выглядит примерно так:const dc = pc.createDataChannel('file'); for (let offset = 0; offset < file.size; offset += CHUNK) { dc.send(file.slice(offset, offset + CHUNK)); } dc.send(JSON.stringify({ type: 'transfer_done' })); // Готово! ...или нет?Выглядит правдоподобно. DataChannel открыт, чанки летят, transfer_done отправлен. В туториале этого достаточно. В продакшене – нет. Н…

  • вторник, 14 апреля 2026 г. в 00:01:18