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

Компонент карточки на 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

Skills в Claude Code: создаём повторяемую проверку фронтенд-компонента

Сохраните проверку формы в SKILL.md, чтобы Claude Code каждый раз сверял одинаковые критерии. В упражнении навык найдёт несвязанный label и неправильный тип кнопки, а затем проверит исправную форму без выдуманных замечаний.

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

Claude Code на Windows: установка, PowerShell, Git Bash и ошибки запуска

Команда claude должна открывать агент в нужной папке проекта. На Windows сначала выберите среду, затем проверьте установку и оболочку: это поможет отличить ошибку PATH от проблемы входа или выполнения команд.

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

Новинки веб-платформы в сентябре 2026: картинки для темы, прозрачность и отмена запросов

Сентябрь принёс CSS-функции для тёмной темы и расчётов. А группировка данных и объединение сигналов отмены перешли в широко доступные возможности. Начнём с оформления карточки: здесь результат видно сразу.

Выпуск собран по сентябрьским заметкам Web Features Explorer, поддержка сверена на 9 октября 2026 года. Выбрали то, что пригодится в вёрстке и браузерном JavaScript.

У новинок бывают разные даты. Newly Available означает, что возможность поддерживают актуальные основные браузеры. Через 30 месяцев она получает статус Widely Available. Поэтому широко доступная функция могла появиться несколько лет назад; старые браузеры всё равно нужно учитывать отдельно.

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

Почему текст растягивает Flexbox: min-width, переносы и flex-shrink

Длинная ссылка в карточке выталкивает кнопку за край экрана? Разрешите текстовому флекс-элементу сжиматься через min-inline-size: 0 и добавьте переносы. Эти правила отвечают за разные части задачи: ширину блока и строки внутри него.

Получится строка с аватаром, именем и кнопкой. На узком экране имя и ссылка займут несколько строк, а кнопка останется видна. Для примера нужны HTML и CSS; JavaScript не понадобится. Основы Flexible Box Layout, или Flexbox, можно освежить в нашем руководстве по флексам.

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

Claude Code в VS Code: установка, контекст файлов и проверка первой правки

Кнопка в карточке выходит за край экрана. Исправим её с помощью Claude Code в VS Code: подключим официальный инструмент, передадим нужные файлы и проверим предложенную правку по коду и в браузере.

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

Controlled или uncontrolled: форма React с текстом, чекбоксом и файлом

В форме профиля имя меняет предпросмотр, чекбокс включает рассылку, а файл выбирает пользователь. Имя и чекбокс удобно связать с состоянием React. Поле файла оставьте браузеру: при отправке все значения можно собрать через FormData.

Управляемое поле, или controlled, получает текущее значение из React. У неуправляемого, uncontrolled, текущее значение хранит DOM. Выбирайте модель для каждого поля отдельно: одна форма может сочетать обе модели.

Что нужно от поляПодходПара свойств
Имя сразу видно в предпросмотреУправляемое текстовое полеvalue и onChange
От отметки зависит сообщение рядомУправляемый чекбоксchecked и onChange
Значение понадобится при отправкеНеуправляемое полеdefaultValue или defaultChecked
Пользователь выбирает файлНативное неуправляемое полеtype="file", без value

Если JSX и useState пока незнакомы, начните с нашего введения в React. Здесь мы уже собираем работающую форму в существующем клиентском проекте с React и обработкой JSX. Например, в проекте на Vite подойдут файлы src/App.jsx и src/main.jsx; в index.html нужен <div id="root"></div>.

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

Как пользоваться Claude Code: от задачи на фронтенде до проверенного изменения

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

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

Корзина в localStorage: восстановление, битый JSON и новая версия данных

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

Соберём пример для учебного каталога. Товары вымышлены; у каждой позиции есть идентификатор и количество. После нажатия «Добавить учебную кружку» на странице появится товар с productId: 7. После перезагрузки его количество восстановится, если браузер разрешает хранение и запись прошла успешно.

Общее устройство хранилища уже разобрано в статье «Что такое localStorage». Здесь займёмся корзиной, которую можно прочитать после изменения кода.

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

Ответ API как unknown: проверка данных до использования

API вернул priceCents: "неизвестно", и карточка после деления на 100 показала NaN. Примите ответ как unknown, проверьте поля и передайте товар интерфейсу только после успешного разбора.

У нас учебная кружка за 1299 ₽. Название и цена вымышлены; задача настоящая: код должен различать корректный товар, ошибочный ответ сервера и данные другого формата. Готовый проверяющий код находится ниже. Если нужен обзор самих предикатов типов, он есть в статье «Предикаты типов в TypeScript».

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

Как отправить форму через fetch: JSON, FormData и файлы

Для отправки формы сначала уточните, какой формат принимает API. В учебном примере подготовим два маршрута: JSON для полей и FormData для полей с необязательным файлом. Затем проверим ответ сервера.

Соберём учебную заявку: почта, число мест и согласие получать новости. Вложение необязательно. Для проверки используйте вымышленные данные, например student@example.test, и небольшой текстовый файл без личной информации. Базовый принцип запроса уже разобран в статье «Как работать с fetch»; здесь внимание на том, что именно отправит форма.

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

React Router на практике: маршруты каталога, параметры и страница 404

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

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

Ошибки REST API: единый ответ для клиента и лог для разработчика

Пользователь видит «Не удалось открыть товар». Как разработчику найти причину? Соберём API каталога, который возвращает понятные ошибки и связывает каждый ответ с записью в серверном логе через идентификатор запроса.

Разберём три ситуации: неправильный номер товара, отсутствующая карточка и сбой сервера. Понадобятся основы JavaScript, терминал и современная установленная Node.js. Создадим два файла. Пример работает на встроенных модулях и вымышленных данных.

В статье про причину ошибки в JavaScript разобран Error.cause. Здесь работаем на границе сервера и клиента: какие сведения попадут в HTTP-ответ, что интерфейс покажет человеку и как разработчик найдёт этот запрос.

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

REST API каталога на Node.js: от запроса браузера до ответа сервера

Соберём API учебного каталога: список товаров, отдельную карточку и понятные ошибки запроса. Браузер получит JSON, сервер выберет маршрут и статус, а вы сможете проверить контракт командой curl и небольшой страницей.

Начнём с интерфейса API, затем напишем сервер на встроенном модуле Node.js http. Сторонний фреймворк для этого упражнения не нужен. Все товары вымышленные, данные хранятся в памяти и не меняются между запросами.

Понадобятся установленный современный Node.js и база JavaScript: функции, массивы, объекты, модули и обработка ошибок. Если запуск файла пока вызывает вопросы, воспользуйтесь разбором запуска JavaScript через Node.js. Наша задача начинается после установки среды.

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

Новинки веб-платформы в августе 2026: CSS считает соседей, HTML создаёт теневой DOM

В августе CSS получил сведения о положении элемента среди соседей, а декларативный теневой DOM стал широко доступным. Разберём список с задержками анимации, изолированный бейдж и новый способ соединять значения итератора в строку.

Темы взяли из августовского выпуска Web Features Explorer. Факты сверены на 9 октября 2026 года. Newly Available означает поддержку актуальных основных браузеров; Widely Available наступает спустя 30 месяцев. В старых версиях и встроенных браузерах приложений поддержка может отличаться.

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