Журнал «Доктайп» — фронтенд, айти, обучение

Свежие статьи

Git worktree: как работать в двух ветках, не прерывая текущую задачу

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

Читать дальше
Git
  • 9 ноября 2026

Playwright MCP: как проверить интерфейс после правки ИИ-агента

ИИ-агент добавил проверку промокода и сообщил, что форма работает. Примем правку через Playwright MCP: проверим неверный код, восстановление после отказа и пересчёт цены. Намеренно оставим в исходной странице ошибку, которую приёмка обязана обнаружить.

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

Нужны Node.js 24 или новее, основы HTML и JavaScript, а также клиент агента с уже подключённым Playwright MCP. Подключайте сервер по настройкам своего клиента; здесь используем готовое соединение. Отдельный материал о подключении MCP к локальному серверу поможет подготовить этот этап.

Читать дальше
Нейронки
  • 8 ноября 2026

Почему Vite собирает TypeScript с ошибками и как добавить проверку типов

Vite собрал приложение, хотя TypeScript подчёркивает ошибку в редакторе. Такое возможно: преобразовать файл в JavaScript и проверить типы — отдельные операции. Соберём небольшой заказ и добавим команду, которая остановит сборку на заведомо неверном типе.

Читать дальше
JS
  • 7 ноября 2026

Первый тест на Playwright: проверяем форму в настоящем браузере

Форма выглядит исправной, пока сервер не возвращает ошибку. Проверим в настоящем браузере путь от ввода адреса до ответа API, затем повторим отправку после управляемого сбоя. Все файлы и сервер будут локальными.

Понадобятся основы HTML и JavaScript, терминал и Node.js 24 или новее. Пример использует Playwright Test — средство запуска браузерных тестов. React не требуется: проверять будем законченную страницу подписки с собственным HTTP-сервером.

Читать дальше
JS
  • 3 ноября 2026

Тестируем форму React с Vitest и Testing Library: ввод, ошибка и успешная отправка

Кнопка формы нажимается, но неверный адрес всё равно уходит в API. Напишем тест, который воспроизведёт сбой, затем добавим проверку поля и убедимся, что повторная отправка после ошибки сохраняет введённые данные.

Объект проверки — форма подписки на подборку статей. Vitest запустит тесты, Testing Library найдёт элементы по доступным именам, а user-event выполнит ввод и нажатия. Тесты работают в jsdom — среде с DOM внутри Node.js. Настоящий браузер здесь не запускается.

Нужны основы React, промисы JavaScript и Node.js 24 или новее. React Hook Form для упражнения не требуется: поведение проверяемой формы важно само по себе, независимо от способа управления полем.

Читать дальше
JS
  • 1 ноября 2026

React Hook Form и Zod: форма с валидацией, ошибкой сервера и повторной отправкой

Форма проходит проверку в браузере, сервер отклоняет заявку, а введённые данные исчезают. Соберём форму записи на консультацию: React Hook Form сохранит значения и состояние отправки, Zod проверит поля, сервер вернёт управляемую ошибку для повторной попытки.

Понадобятся основы React, асинхронные функции JavaScript и Node.js 24 или новее. У примера два процесса: Vite показывает интерфейс, локальный сервер принимает JSON. Регистрироваться во внешнем сервисе не потребуется. Данные существуют только в памяти запроса.

Читать дальше
JS
  • 30 октября 2026

Git cherry-pick: как перенести один коммит в другую ветку

Исправление доставки уже закоммичено в ветке новой функции, но нужно и в релизной ветке. Перенесём выбранный коммит через git cherry-pick, проверим новый результат и отдельно воспроизведём конфликт, чтобы отработать продолжение и отмену операции.

Читать дальше
Git
  • 28 октября 2026

Git stash не возвращает изменения: что проверить и как разобрать конфликт

После git stash pop появились конфликтные маркеры, а изменения вернулись лишь частично. Сначала сохраним исходную запись и выясним, какие правки уже попали в рабочую папку. Затем разберём конфликт в отдельном учебном репозитории.

Читать дальше
Git
  • 26 октября 2026

Поиск с debounce: почему показывается старый ответ и как это исправить

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

Читать дальше
JS
  • 24 октября 2026

Фильтры каталога в URL: как сохранить выбор после обновления страницы и нажатия кнопки «Назад»

Вы выбрали тему каталога, обновили страницу — фильтр исчез. Исправим это: сохраним применённые условия в URL, восстановим форму при открытии ссылки и научим выдачу следовать кнопкам «Назад» и «Вперёд».

Читать дальше
JS
  • 22 октября 2026

Один API упал, второй работает: частичная загрузка страницы через Promise.allSettled

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

Читать дальше
JS
  • 20 октября 2026

Как запускать TypeScript в Node.js и где проверять типы

Файл .ts можно выполнить в Node.js без предварительной сборки, если выбранная версия поддерживает удаление типов. Проверки TypeScript при этом не будет. Запустим расчёт доставки, отдельно найдём ошибку типов и проверим границы этого способа.

Читать дальше
JS
  • 18 октября 2026

HTML-таблица на телефоне: как сохранить читаемость и связь с заголовками

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

Читать дальше
Как сверстать
  • 16 октября 2026

Доступные ошибки формы: как связать сообщение с полем и пройти форму клавиатурой

После отправки форма выделяет поля красным, а человек с клавиатурой остаётся на кнопке и ищет причину отказа. Добавим сводку ошибок, ссылки на поля и связанные пояснения. Проверим тот же путь после серверного ответа.

Рабочий пример — запись на консультацию: два поля, имя и почта, и один путь исправления для клиентских и серверных ошибок. Нужны основы HTML и JavaScript, Node.js 24 или новее. Для страницы и сервера хватит встроенных возможностей платформы: отдельные библиотеки устанавливать не потребуется. В конце вы сможете отправить пустую форму, перейти из сводки к ошибочному полю, исправить его и повторить отправку без мыши.

Читать дальше
Как сверстать
  • 14 октября 2026

Компонент карточки на React и TypeScript: пропсы, события и необязательные данные

Карточке товара нужны название и цена, а описание и фотография иногда отсутствуют. Опишите данные через пропсы, задайте поведение для пропусков и передайте действие «Добавить в корзину» родителю. TypeScript проверит вызовы компонента. Ещё до запуска страницы.

Пропсы (props) — параметры, которые родитель передаёт компоненту. Наш ProductCard покажет вымышленную кружку за 1299 ₽ и сообщит родителю её строковый идентификатор. Настоящую корзину здесь не собираем: под карточкой появится результат нажатия. Так видно, правильно ли работает её контракт.

Пример рассчитан на существующий клиентский проект с React, TypeScript, обработкой JSX и пакетами типов @types/react и @types/react-dom. Подойдёт шаблон React + TypeScript в Vite. Файлы с JSX сохраняйте с расширением .tsx, а в настройках TypeScript включите strict. Основы языка есть в нашей статье о TypeScript.

Читать дальше
JS
  • 13 октября 2026

MCP в Claude Code: подключаем локальный инструмент и проверяем границы доступа

Подключите к Claude Code собственный MCP-сервер с одной функцией: получить вымышленный товар по идентификатору. Проверим результат, отсутствие товара и недоступность записи. Так будет видно, что агент действительно вызвал программу и какие действия она ему предлагает.

Читать дальше
Нейронки
  • 9 октября 2026

Новинки веб-платформы в октябре 2026 на 9 октября: JPEG XL, текстовые импорты и CSS для списков

На 9 октября в обзоре есть новые возможности для изображений, списков и текста. Все они пока поддерживаются частью браузеров. Самый полезный старт — добавить JPEG XL с запасной фотографией в привычном формате.

Это промежуточный выпуск за 1–9 октября 2026 года. Месяц ещё продолжается. Сверяемся с октябрьской страницей Web Features Explorer и выбираем изменения для вёрстки и фронтенда.

Хронологию взяли из Explorer и дополнили релизом Edge 155 от 8 октября: в его примечаниях подтверждены все четыре возможности выпуска. Chrome 155 вышел шестого октября. Возможности остаются ограниченно доступными из-за отсутствия поддержки в Firefox или Safari.

Читать дальше
Как сверстать
  • 9 октября 2026

Корзина на React: где хранить состояние карточки, списка и счётчика

Кнопка добавила товар, список корзины обновился, а счётчик остался прежним? Храните корзину в общем родительском компоненте. Карточкам передавайте количество и обработчики; счётчик и сумму вычисляйте из того же массива при рендере.

Соберём учебный магазин с блокнотом и карандашом. Два клика по блокноту дадут одну строку корзины с количеством два; счётчик покажет две единицы. Сумма — 700 ₽. После удаления блокнота карточка снова покажет ноль.

Нужен проект React, в котором уже работают JSX и основной компонент App. Замените его App.jsx и добавьте рядом cart-model.mjs. Понадобятся основы компонентов и useState; если пока разбираетесь с JSX, начните с введения в React.

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

Читать дальше
JS
  • 9 октября 2026

Claude Code permissions: настраиваем разрешения для одного репозитория

Настройте Claude Code на трёх учебных файлах: один можно менять сразу, второй — после подтверждения, третий — запрещено. Проверим реальные вызовы инструментов и содержимое файлов. Это поможет понять разрешения до работы с важным проектом.

Читать дальше
Нейронки
  • 8 октября 2026