Из чего состоит твой проект
Разбираемся с архитектурой: что происходит в браузере, когда нужен бэкенд и как разложить код, чтобы с ним было удобно работать.
Ты уже можешь собрать первую HTML-страницу. Следующий шаг — понять, как устроен проект целиком: где живёт его логика, где хранятся данные и что придётся менять, когда появится новый контент.
Это конспект встречи с видео-вставками от 19 сентября.
Сначала — что должно происходить
Для нашей работы удобно смотреть на архитектуру с трёх сторон. Первая — замысел: что делает проект и какой путь проходит участник. Вторая — техническая: что выполняется в браузере, а что требует серверной части. Третья — организация кода: какие файлы будут в проекте и за что каждый отвечает.
Замысел
Экраны, действия, состояния и контент. Что увидит участник? Что произойдёт после нажатия?
Фронт и бэкенд
Где выполняется логика и кому должны быть доступны данные?
Файлы
Где лежат разметка, стили, скрипты и материалы? Как их обновлять?
Фронт — в браузере. Бэкенд — на серверной стороне
Фронтенд
Страница, текст, кнопки, анимация и поведение интерфейса. Он может проверять ответ, считать баллы, выбирать случайную фразу и показывать обратную связь.
Бэкенд
Серверная логика: принимает запросы, проверяет права доступа, обрабатывает и сохраняет данные, возвращает результат. Для хранения он может обращаться к базе данных.
Ты завершила лонгрид — прогресс появился на главной
Нажимаешь «Завершить лонгрид». Страница отправляет результат на сервер. Бэкенд сохраняет его, а главная страница запрашивает обновлённые данные и показывает твой прогресс.
и твой прогресс
сохранить или вернуть результат
Здесь хранится прогресс
Кнопку и шкалу прогресса ты видишь в браузере. Серверная часть работает за кулисами.
Так же можно устроить общую доску рефлексии: один участник оставляет стикер, а следующие видят его и добавляют свои. Или статистику ответов: после выбора участник узнаёт, сколько людей выбрали тот же вариант.
А фронт умеет запоминать?
Да. В браузере есть небольшое хранилище — localStorage. Например, сайт может запомнить, на каком шаге ты остановилась, и при следующем открытии продолжить с этого места.
Но эта «память» остаётся в том браузере и на том устройстве, где ты проходила курс. На другом компьютере прогресс сам не появится. А если очистить данные сайта, он может пропасть.
Вопрос для выбора: достаточно ли, чтобы результат был доступен здесь, в этом браузере, или он нужен на другом устройстве, преподавателю и другим участникам?
Что есть, как выглядит и как работает
HTML
Структура: заголовок, абзац, кнопка, поле ввода.
CSS
Оформление: цвета, шрифты, отступы, расположение и адаптация к экрану.
JavaScript
Поведение: реакция на нажатие, проверка ответа, подсчёт, обновление интерфейса.
Разберём карточку по слоям
Нажми на три шага: сначала увидишь структуру, затем добавишь оформление, а в конце — действие по кнопке.
Твой первый проект
Начни с одной идеи и одного работающего действия.
Собираем элементы
div объединяет всё в карточку. Внутри — заголовок, текст и кнопка. В коде ниже видно, какой тег отвечает за каждый элемент.
<div class="card"> <h3>Твой первый проект</h3> <p>Начни с одной идеи…</p> <button>Открыть подсказку</button> </div>
Это учебный каркас. Пунктир помогает увидеть границы элементов.
Одеваем тот же каркас
Элементы остались прежними. Добавились фон, скругление, тень, отступы и цвет кнопки.
.card {
background: #fff;
padding: 24px;
border-radius: 20px;
box-shadow: 0 12px 28px #00000014;
}Кнопка пока не открывает подсказку. Переключись на JavaScript, чтобы добавить это действие.
Добавляем реакцию на клик
Теперь нажми «Открыть подсказку» на карточке. Появится попап, который можно закрыть кнопкой или клавишей Esc.
button.addEventListener('click', () => {
popup.showModal();
});У попапа тоже есть структура: контейнер, заголовок, текст и кнопка. CSS задаёт его вид, а JavaScript открывает его.
В примере используются встроенное окно <dialog> и кнопка его закрытия.
Сейчас виден HTML-каркас. Добавь CSS, чтобы увидеть оформление.
В «Песочнице» мы сначала собираем прототип и проверяем механику, затем наполняем его контентом и дорабатываем оформление. Так проще увидеть, работает ли сама идея, прежде чем тратить силы на её внешний вид.
Один файл или папочная структура?
Это способ организовать проект. Количество файлов не определяет, есть ли в нём бэкенд: и одна HTML-страница, и большая папка с фронтендом могут обращаться к серверу.
Всё в одном файле
Разметка, стили и скрипт находятся рядом. Удобно для небольшого лонгрида, теста, мини-игры или прототипа, который нужно перенести одним фрагментом.
index.html ├─ HTML: содержание ├─ <style>: оформление └─ <script>: поведение
По мере роста становится сложнее искать нужные места и править разные части независимо.
Несколько файлов
Каждая часть лежит отдельно. Удобно для большого проекта, сложной механики или серии курсов с общим оформлением.
project/ ├─ index.html ├─ style.css ├─ script.js └─ assets/
Нужно следить за путями и переносить все необходимые файлы вместе.
Для Тильды можно подготовить HTML-фрагмент со стилями и скриптом и вставить его в блок T123 «HTML-код». Если проект размещён отдельно, его можно встроить через iframe, когда площадка разрешает такое встраивание. Ещё один вариант — подготовить сборку или подключить внешние файлы.
А если нужен SCORM?
Оба способа организации можно использовать для курса в LMS. Но упаковка включает описание ресурсов в манифесте, а передача баллов и завершения требует настройки обмена с LMS через SCORM API. Одного добавленного манифеста для этих функций недостаточно.
Редактор помогает видеть структуру
Блокнота хватает, чтобы сохранить первый файл. В редакторе кода удобнее открыть всю папку, видеть подсветку синтаксиса и переключаться между разметкой, стилями и логикой. В демонстрации используется VS Code: меняем текст, сохраняем файл и смотрим результат в браузере.
Видео 1 · Папочная структура и где работать с кодом
Смотрим, как организовать файлы проекта, открыть их в редакторе и проверить изменения в браузере.
Механика одна — контент меняется
Представь серию курсов: расположение блоков, кнопки и проверка ответов одинаковые, а темы, вопросы и примеры разные. Можно вынести данные в отдельный файл и обновлять его, сохраняя общую механику.
В воркшопе это показано на мини-проекте «Фраза дня». Страница загружает список фраз, а кнопка выводит случайную. Чтобы пополнить список, меняем файл с данными.
quotes.json
[
{ "id": 1, "text": "Начни с маленького шага." },
{ "id": 2, "text": "Путь осилит идущий." }
] JSON — текстовый формат структурированных данных. Такой файл может содержать вопросы, ответы, подписи и настройки. Сам по себе он не является полноценной базой данных: в этом примере это подготовленный список, который читает страница.
Видео 2 · JSON: собираем «Фразу дня» и обновляем контент
Выносим фразы в отдельный файл, подключаем его к странице, запускаем проект и добавляем новую фразу.
Почему иногда недостаточно двойного клика по HTML?
Когда скрипт загружает соседний JSON через fetch, открытие страницы как локального файла может упереться в ограничения браузера. Для такого примера запускаем локальный HTTP-сервер и открываем страницу по адресу http://localhost:…. В видео используется Go Live. Этот сервер помогает тестировать проект на компьютере; он сам по себе не публикует курс в интернете.
При добавлении фразы важно сохранить структуру JSON: между элементами нужна запятая, после последнего элемента её нет. Имена полей должны совпадать с теми, которые ожидает скрипт.
Что поручить ИИ
Можно попросить ИИ структурировать контент, затем создать страницу, которая его читает. Укажи имена файлов, поля данных, ожидаемое поведение и способ запуска. Например:
У меня есть quotes.json — массив объектов с полями id и text. Создай index.html, style.css и script.js. Страница должна загрузить список фраз и по нажатию кнопки «Дать знак» показывать случайную фразу. Предусмотри состояния загрузки, пустого списка и ошибки. Объясни, как запустить проект через локальный HTTP-сервер.
Работать можно в чате с ИИ, редакторе кода с ИИ или генераторе приложений. При выборе учитывай, в каком виде нужен результат: один фрагмент для Тильды или проект из нескольких файлов.
Опиши архитектуру в пяти строках
- Мой проект делает… Какую задачу решает участник?
- В браузере происходит… Какие действия, проверки и расчёты нужны?
- Сохранять нужно… Какие данные, для кого и на каких устройствах?
- Код будет организован… Один файл или несколько — и почему?
- Контент будет обновляться… Внутри страницы или в отдельном файле?
Например: «Делаю тренажёр на пять вопросов. Ответы проверяются в браузере, результат показывается сразу. Общую статистику не собираю. Для первой версии достаточно одного файла для Тильды. Если появится серия тренажёров, вынесу вопросы в отдельный источник данных».
Проверь, что разобралась
Дополнительные вопросы для самопроверки.
Кнопка считает баллы. Значит, у проекта есть бэкенд?
Нет. JavaScript может посчитать баллы прямо в браузере. Бэкенд понадобится, если серверная часть должна обрабатывать или хранить результат — например, для отчёта преподавателю.
В проекте четыре файла. Значит, это уже бэкенд?
Нет. HTML, CSS, JavaScript и JSON могут обслуживать полностью клиентский проект. Важно, где выполняется код и как организована работа с данными.
Участник должен продолжить курс с другого устройства. Хватит localStorage?
Сам по себе localStorage не синхронизируется между устройствами. Нужен механизм общего хранения и идентификации участника — например, возможности учебной платформы или бэкенд.
Нужно ли заранее делать сложную структуру «на вырост»?
Начни с требований первой рабочей версии. Отдельные файлы полезны, когда они упрощают конкретные изменения: обновление контента, повторное использование стилей или работу с большой логикой.
Теперь у тебя есть схема будущего проекта
Что делает участник → что выполняет браузер → какие данные нужны → где они хранятся → как организованы файлы. С этой схемой проще и писать код, и ставить задачу ИИ.
Открыть доску воркшопа ↗