Модуль 0 · Фронтенд в эпоху ИИ

Справочник по Angular и React · модуль 0 · фронтенд в эпоху ИИ

0.5

0.5

Как устроена
дисциплина

В этой главе описано, чему учит дисциплина и как она построена. Каждый модуль состоит из трёх частей: теория React, нужная для проекта, небольшой проект на этой теории и автоматизация вокруг проекта: бот, языковая модель, работа по расписанию. Перечислены модули с проектами, бесплатные инструменты, на которых всё работает, правила работы с ИИ и список проверки кода. Глава заканчивается заданием к модулю 0.

Категория
Организация
Уровень
Вводный
Связанные темы
React и Angular (глава 0.2), карта задач (глава 0.3)
Зачем это знать
Понимать, что будет сделано за дисциплину и как будет проверяться работа

§1Чему учит дисциплина

Дисциплина длится 4–6 недель по пять пар. Чтобы стать профессиональным фронтенд-разработчиком, нужны месяцы ежедневной работы, поэтому цель дисциплины — понять, как устроено современное веб-приложение, научиться собирать небольшое приложение на React и связывать его с сервисами и автоматизациями так, чтобы оно решало настоящую задачу.

Основной фреймворк дисциплины — React. По опросу Stack Overflow 2025 года им пользуются 44,7% разработчиков, на нём по умолчанию пишут генераторы приложений (глава 0.2, §5), и у него меньше понятий на старте. Angular изучается одной обзорной парой в модуле 4: студент читает код того же компонента на Angular и сравнивает его с React-версией. Этого достаточно, чтобы разобраться в коде на Angular, если он встретится в работе.

После дисциплины студент должен уметь пять вещей:

  1. Создать и запустить проект на React, понимать, из каких файлов он состоит и что происходит при запуске.
  2. Объяснить механизмы React: компонент, props, состояние, эффект, обновление интерфейса из состояния.
  3. Связать приложение с сервисами: базой данных, ботом Telegram, конвейером GitHub Actions, сервисом автоматизации n8n, языковой моделью.
  4. Работать с ИИ и проверять результат: ставить задачу агенту и находить ошибки в написанном им коде.
  5. Защитить свою работу: объяснить любую строку кода и показать автоматизацию в работе.

§2Теория, проект, автоматизация

Сравнение из жизни

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

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

Каждый модуль, кроме вводного и последнего, состоит из трёх частей. Теории даётся столько, сколько нужно для проекта модуля: тема, которая в проекте не понадобится, переносится в тот модуль, где она нужна. Проект — небольшое приложение на React из 3–6 экранов, которое студент пишет сам. Автоматизация — процесс вокруг приложения, который работает без участия человека: отправляет уведомления, обрабатывает данные моделью, проверяет сайты по расписанию.

ТеорияТемы React для проектаКороткие главы справочника с примерами. Упражнения выполняются без ИИ, чтобы механизм был понят.
ПроектПриложение на React3–6 экранов, решает задачу из жизни колледжа или студента. Студент пишет его сам, ИИ объясняет непонятное.
АвтоматизацияПроцесс вокруг приложенияБот, модель, расписание, база данных. Собирается из готовых блоков и дорабатывается под проект.

Автоматизация стоит в каждом модуле, потому что на ней видно, зачем нужен фронтенд. Если после отправки формы заявки ответственный получает сообщение в Telegram, а модель уже определила срочность, такой формой может пользоваться студсовет: заявки не теряются и приходят отсортированными. Кроме того, автоматизация знакомит с частями приложения, которые не видны в браузере: запросами между сервисами, токенами доступа, работой по расписанию.

§3Модули и проекты

Ниже план на шесть недель — 30 пар. Каждый следующий модуль добавляет новые темы React и новый вид автоматизации, а проект модуля 2 продолжает проект модуля 1. При четырёх неделях модуль 4 переходит в самостоятельную работу, а модули 3 и 5 сокращаются до трёх пар: 2 + 6 + 6 + 3 + 3 = 20.

Модуль 0. Фронтенд в эпоху ИИ2 пары
Теория

Что делает фронтенд, состояние и интерфейс, React и Angular, что ИИ делает во фронтенде и что показывают измерения, правила дисциплины.

Задание

Подсчёт вакансий по фреймворкам и проверка страницы, созданной генератором, по списку из §7.

Модуль 1. React: первый проект и первый бот6 пар
Теория

Node.js и npm: что устанавливается и зачем. Создание проекта на Vite, запуск, структура папок. JSX, компоненты и props. Состояние useState и события. Списки и ключи, условный вывод. Формы: управляемые поля и проверка ввода. Отправка данных запросом fetch.

Проект

Доска заявок. Форма заявки (в ИТ-отдел колледжа, в общежитие, в студсовет), список карточек, смена статуса «Новая → В работе → Готово», фильтр по статусу. Данные пока хранятся в браузере.

Автоматизация

n8n в Docker принимает заявку от формы и отправляет сообщение в Telegram-бот ответственного.

новое: Docker, вебхук, токен бота хранится в n8n, во фронтенде его нет
Модуль 2. Данные с сервера и ИИ-диспетчер6 пар
Теория

Эффекты useEffect и случаи, когда они не нужны. Загрузка данных, состояния «загрузка» и «ошибка». Собственный хук для работы с данными. База PocketBase: коллекции, программный интерфейс, правила доступа. Обновление интерфейса по событиям из базы.

Проект

Доска заявок с базой. Заявки хранятся в PocketBase, доска у всех пользователей обновляется без перезагрузки страницы, у заявки появляются категория, срочность и ответственный.

Автоматизация

ИИ-диспетчер: n8n передаёт текст заявки языковой модели, модель определяет категорию и срочность и пишет краткое описание. Срочные заявки приходят в Telegram с кнопками «Взять» и «Закрыть»; нажатие кнопки меняет статус в базе, и карточка переезжает на доске.

новое: запрос к модели, формат ответа модели, бот с кнопками без публичного адреса сервера
Модуль 3. Несколько экранов, публикация и работа по расписанию5 пар
Теория

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

Проект

Мониторинг сайтов группы. Таблица сайтов студентов с оценками, страница каждого сайта с графиком по дням и последним снимком экрана.

Автоматизация

GitHub Actions каждую ночь открывает все сайты, проверяет доступность и оценки Lighthouse, сохраняет результат в репозиторий, и опубликованная панель обновляется. Если сайт перестал открываться, бот пишет владельцу.

новое: работа без своего сервера, данные в репозитории, проверка сайтов программой Playwright
Модуль 4. Работа с ИИ-агентом и обзор Angular6 пар
Теория

Тесты компонентов: Vitest и Testing Library. Доступность интерфейса. Постановка задачи ИИ-агенту и проверка результата (§6, §7). Обзорная пара: тот же компонент на Angular, сигналы и шаблоны, перевод компонента с React на Angular агентом и проверка перевода.

Проект

Дайджест новостей. Лента карточек с краткими пересказами, теги, поиск, отметка «прочитано». Проект делается в режиме Р2: код пишет агент, студент ставит задачу, проверяет и принимает работу.

Автоматизация

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

новое: регулярный сбор данных, обработка пачки текстов моделью
Модуль 5. Свой проект и защита5 пар
Проект

Студент или пара выбирает проект из каталога или предлагает свою задачу и делает её по шаблону технического задания. Каталог: сторож страницы (снимки и описание изменений), чек → бюджет (QR-код чека, графики расходов), голос → задачи (распознавание речи в браузере), ассистент по конспектам (поиск по смыслу), карта заявок.

Защита

Показ работающей автоматизации, ответы по любой строке кода, журнал работы с ИИ, проверка по списку из §7.

Каждый проект решает знакомую студенту задачу и после модуля готов к использованию: доской заявок может пользоваться студсовет, мониторинг следит за сайтами, которые студенты сделали в других дисциплинах. Для каждого проекта есть стартовая заготовка: репозиторий с настроенным React, файл compose.yaml, который поднимает n8n и PocketBase одной командой, и шаблон процесса автоматизации. Студент пишет React-часть сам, а автоматизацию дорабатывает из готовых блоков.

Все проекты собираются на инструментах, за которые не нужно платить. Они перечислены в следующем разделе.

§4Бесплатные инструменты

Набор подобран по трём условиям: инструмент бесплатен для учебного проекта, работает без банковской карты и доступен из России. Часть инструментов запускается на компьютере студента и от условий сторонних компаний не зависит.

ЗадачаИнструментГде работает
ИнтерфейсReact и Viteна компьютере студента
База данных и вход пользователейPocketBase — база с готовым программным интерфейсом, один файлна компьютере студента, в Docker
Автоматизацииn8n — конструктор процессов из блоковна компьютере студента, в Docker
Языковая модельOllama с небольшой моделью; запасной вариант — GigaChat API с бесплатным лимитом для физических лицна компьютере студента или в облаке Сбера
Уведомления и кнопкиTelegram Bot APIсерверы Telegram
Хранение кода, публикация, расписаниеGitHub, GitHub Pages, GitHub Actionsсерверы GitHub; для открытых репозиториев время работы Actions не ограничено
Проверка сайтов и интерфейсаPlaywright, Lighthouse, Vitestна компьютере студента и в GitHub Actions
Что проверить до начала занятий

Условия бесплатных тарифов меняются, поэтому перед началом дисциплины проверяются лимит GigaChat для физических лиц и доступ к GitHub и Telegram из сети колледжа. Для Ollama с небольшой моделью нужно около 8 ГБ оперативной памяти; если компьютеры в аудитории слабее, модель вызывается через GigaChat. API OpenAI и Gemini из России недоступны, поэтому в проектах не используются.

Ниже описаны правила: как в каждой части модуля можно пользоваться ИИ.

§5Три режима работы с ИИ

ИИ в дисциплине не запрещается: им пользуются 84% разработчиков, и после выпуска студент будет работать с ним. Разрешить его во всех заданиях тоже нельзя: тогда задания проверяют умение модели, и механизмы React останутся непонятыми. Поэтому каждое задание помечено одним из трёх режимов, и режим зависит от части модуля.

Без ИИР0

ИИ не используется: ни подсказки в редакторе, ни чат. Автодополнение ИИ в редакторе отключается.

Где: упражнения к теории, контрольные точки.

Зачем: проверить, что механизм понят и код пишется самостоятельно.

ИИ объясняетР1

Можно спрашивать ИИ, что означает ошибка, как работает функция, чем отличаются два способа. Код пишет студент.

Где: проекты модулей 1–3, настройка автоматизаций.

Зачем: получить объяснение в любое время, не дожидаясь занятия.

ИИ пишетР2

Код может писать агент или генератор. Студент ставит задачу, проверяет результат по списку из §7 и отвечает за каждую строку.

Где: проект модуля 4, свой проект в модуле 5.

Зачем: научиться работать так, как работают в компаниях в 2026 году.

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

Общие правила для всех режимов

Первое правило: студент может объяснить любую строку сданной работы. На защите преподаватель указывает на строку и спрашивает, что она делает и почему написана так. Ответ «так написал ИИ» оценивается так же, как отсутствие ответа. В режиме Р2 код ИИ, который студент принял в работу, считается его кодом.

Второе правило: в режимах Р1 и Р2 к работе прилагается журнал работы с ИИ. В нём записано, каким инструментом пользовались, какие задачи ему ставили, что из предложенного приняли, что отклонили и почему. По журналу видно, умеет ли студент ставить задачу и замечать ошибки. Отклонённое предложение ИИ с объяснением причины засчитывается как часть работы.

Третье правило: токены ботов, ключи доступа и персональные данные не передаются в чаты ИИ и не попадают в код фронтенда. Они хранятся в n8n, в скрипте бота или в секретах GitHub Actions.

§6Порядок работы с ИИ-агентом

Сравнение из жизни

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

Бригада сама знает строительные нормы, а агенту известно только то, что есть в его контексте: правила проекта нужно передать ему явно.

В режиме Р2 работа идёт по циклу из шести шагов. Шаги, отмеченные малиновым номером, выполняет только человек; синим — может выполнять агент. Цикл повторяется, пока результат не пройдёт проверку.

ЗадачаПонять, что нужно пользователю: какие экраны, данные, ограничения. Записать критерии готовности.человек
ПостановкаНаписать задание агенту: что сделать, какие правила проекта соблюдать, как проверить результат.человек
КодАгент пишет код, запускает сборку, проверку типов и тесты, исправляет ошибки.агент
Автоматическая проверкаСборка, типы, тесты, линтер, проверка доступности. Это могут запускать и агент, и человек.агент или человек
Чтение и проверкаПрочитать изменения целиком. Пройти список из §7. Проверить вручную то, чего нет в тестах.человек
РешениеПринять, вернуть с замечаниями или переписать самому. Записать решение в журнал.человек

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

Как выглядит хорошая постановка задачи

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

Задание агенту · лента дайджеста
Задача: компонент ленты новостей для проекта на React 19, Vite, TypeScript.

Что сделать:
- карточки новостей: заголовок, пересказ, теги, ссылка на источник;
- фильтр по тегу и поиск по заголовку;
- отметка «прочитано» сохраняется после перезагрузки страницы;
- если новостей нет — строка «Новостей за сегодня нет».

Правила проекта:
- данные берутся из файла public/digest.json, формат описан в types.ts;
- отфильтрованный список не хранится в состоянии, а вычисляется;
- никакого dangerouslySetInnerHTML: пересказ выводится как текст;
- у поля поиска есть подпись (label), связанная с полем.

Готово, когда:
- npm run build проходит без ошибок;
- есть тесты: фильтр по тегу, поиск, пустая лента;
- лентой можно пользоваться только с клавиатуры.

Каждая строка раздела «Готово, когда» проверяется командой, тестом или действием. Раздел «Правила проекта» содержит то, что модель по умолчанию сделала бы иначе: пересказ от модели может содержать разметку, и без запрета агент часто выводит его через dangerouslySetInnerHTML; подпись к полю модели пропускают (глава 0.3, §5, строка о доступности).

§7Проверка кода, написанного ИИ

Список ниже собран из ошибок, разобранных в главах 0.2 и 0.3, и из правил работы с сервисами. Каждый пункт — отдельная проверка, которую выполняют командой, инструментом или вручную. В модулях 1–4 к списку добавляются пункты по изучаемым темам.

  • Сборка и типыПроект собирается без ошибок; в коде нет any там, где тип известен, и нет отключённых проверок // @ts-ignore.
  • ТестыТесты проверяют требования задачи; тест, который повторяет текущее поведение кода, ошибку не найдёт. Хотя бы один тест должен падать, если сломать требование.
  • Текущая версия ReactВ новом коде нет классовых компонентов и устаревших методов жизненного цикла. Все компоненты — функции.
  • Состояние без дублейТо, что вычисляется из состояния, не хранится отдельно. Нет useEffect, который только копирует одно состояние в другое.
  • Вывод HTMLНет dangerouslySetInnerHTML. Если он нужен, данные очищаются перед выводом и это объяснено в журнале.
  • Ключи и токеныВ коде фронтенда нет токенов ботов, ключей моделей, паролей базы. Всё, что во фронтенде, видно пользователю.
  • ПраваСкрытая кнопка не считается защитой. Правила доступа PocketBase не дают пользователю читать и менять чужие записи.
  • ДоступностьУ полей есть подписи, у картинок — alt, всё работает с клавиатуры, проверка Lighthouse по доступности без ошибок.
  • Ответы моделиОтвет модели проверяется перед записью в базу: категория из допустимого списка, срочность — одно из заданных значений. Неверный ответ не приводит к ошибке на доске.
  • ПониманиеКаждую строку можно объяснить на защите.
Почему последний пункт в списке

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

§8Задание к модулю 0

Режим Р2 · сдаётся отчётом в формате Markdown или PDF

Задание из двух частей. Первая — подсчёт вакансий на сегодняшних данных, вторая — проверка кода ИИ по списку из §7 на собственном примере.

Часть 1. Рынок вакансий

  1. Откройте hh.ru, раздел вакансий, регион — ваш город и отдельно вся Россия.
  2. Выполните поиск по словам React, Angular, Vue в названии и описании вакансии. Запишите число найденных вакансий и дату.
  3. Отдельно найдите вакансии со словами «junior» или «младший» вместе с React и Angular.
  4. Посчитайте соотношение React к Angular и долю вакансий для начинающих. Сравните с долями из опроса Stack Overflow в главе 0.2 и объясните в двух-трёх предложениях, почему цифры могут отличаться.

Часть 2. Проверка кода от ИИ

  1. Попросите любой генератор или чат (v0, Lovable, Bolt, Google AI Studio, GigaChat, Claude) сделать страницу записи на консультацию: имя, телефон, выбор даты, кнопка «Записаться», сообщение об успешной записи. Запрос запишите дословно.
  2. Откройте получившуюся страницу в Chrome. Запустите в инструментах разработчика проверку Lighthouse с категорией Accessibility и запишите результат.
  3. Пройдите форму только с клавиатуры: клавиши Tab, Shift+Tab, Enter, пробел. Запишите, что не удалось сделать.
  4. Откройте код и найдите по списку из §7 не меньше трёх проблем. Для каждой укажите строку, что не так и как исправить.
  5. Напишите генератору исправленный запрос, который предупреждает найденные проблемы, и сравните результат с первым.

В отчёт входят: таблица с числами вакансий и датой, ответ на вопрос о расхождении, первый и второй запросы к ИИ, результат Lighthouse до и после, найденные проблемы со строками кода и журнал работы с ИИ. Оценивается точность: каждая названная проблема должна быть в коде, а объяснение — верным. Число найденных проблем на оценку не влияет.

Итог главы

Дисциплина учит понимать, как устроено веб-приложение, собирать небольшое приложение на React и связывать его с сервисами и автоматизациями. Основной фреймворк — React, Angular изучается одной обзорной парой. Каждый модуль состоит из теории, нужной для проекта, проекта на React и автоматизации к нему: доска заявок с ботом, затем с базой и ИИ-диспетчером, мониторинг сайтов по расписанию, дайджест новостей, сделанный с ИИ-агентом, и свой проект. Все инструменты бесплатны, часть из них работает на компьютере студента. Каждое задание помечено режимом работы с ИИ, а любую строку сданной работы студент объясняет на защите.

Справочник по Angular и React © Макаров Максим Николаевич