8.4 KiB
8.4 KiB
Файловая структура проекта My Speaker
Ниже представлена скорректированная файловая структура проекта веб-приложения My Speaker. Корректировки включают:
- Добавление
main-params.htmlв папкуcomponents/для постоянной левой части (Main Parameters) на главном экране. - Добавление
footer.htmlв папкуcomponents/для футера с логами. - Добавление
graphics.htmlв папкуpages/для правой части с графиками (как указано в макетах). - Обновление модулей JavaScript для соответствия новым компонентам (например, добавление
graphics.jsдля логики графиков). - Уточнение папок для лучшей организации:
pages/для динамически подгружаемых правых частей,components/для общих элементов (шапка, навигация, Main Parameters, футер). - Обеспечение модульности в соответствии с
FRONTEND_REQUIREMENTS.md: использование чистого JavaScript (ES6+), без фреймворков. - Учёт ретро-стиля и адаптивности в
style.css.
Структура проекта оптимизирована для SPA (Single Page Application), где index.html служит точкой входа, а контент подгружается динамически через router.js.
Полная структура
webapp/
├── index.html # Основная страница приложения (SPA): содержит контейнеры для шапки, основного экрана и футера
├── style.css # Основные стили в ретро-стилистике (пиксельные рамки, шрифт "Press Start 2P", адаптивность)
├── api.js # Модуль для работы с API (авторизация, получение данных, обновление настроек)
├── app.js # Точка входа: инициализация приложения, подключение модулей и запуск маршрутизации
├── modules/ # Папка для JavaScript-модулей (логика страниц и компонентов)
│ ├── router.js # Маршрутизация: динамическая загрузка HTML в правую часть основного экрана
│ ├── login.js # Логика страницы авторизации (обработка формы, настройки интерфейса)
│ ├── dashboard.js # Логика главного экрана: инициализация Main Parameters, футера и общей структуры
│ ├── graphics.js # Логика для `graphics.html` (инициализация и обновление графиков с использованием Chart.js или Canvas)
│ ├── settings.js # Логика для `settings.html` (формы настроек, валидация, отправка на API)
│ ├── commands.js # Логика для `commands.html` (список команд, редактирование файла команд)
│ ├── header.js # Логика для `header.html` (имя пользователя, кнопка выхода, запрос на /api/auth/me)
│ ├── nav.js # Логика для `nav.html` (переключение разделов, подсветка активного)
│ └── utils.js # Общие утилиты (обработка ошибок, валидация форм, форматирование данных, DOM-манипуляции)
├── pages/ # Папка для динамически подгружаемых HTML-страниц (правая часть основного экрана)
│ ├── login.html # Разметка страницы авторизации (форма входа, настройки интерфейса)
│ ├── graphics.html # Разметка для графиков (canvas для speech_prob и energy)
│ ├── settings.html # Разметка для настроек (раскрывающиеся формы с <details>, поля ввода, кнопки сохранения)
│ └── commands.html # Разметка для команд (поле для commands_file, список команд, кнопки редактирования)
└── components/ # Папка для общих HTML-компонентов (шапка, навигация, левая часть, футер)
├── header.html # Разметка верхней панели (имя пользователя, кнопка выхода)
├── nav.html # Разметка навигационной панели (кнопки Dashboard, Settings, Commands)
├── main-params.html# Разметка левой части (Main Parameters: статус, индикаторы, статистика CPU/MEM/TEMP)
└── footer.html # Разметка футера (список последних фраз из recent-phrases)
Объяснение корректировок
- Добавления:
graphics.htmlиgraphics.js— для отдельного раздела с графиками, как в макетах PAGE_LAYOUTS.md.main-params.html— для постоянной левой части (40%), чтобы избежать дублирования разметки в каждом разделе.footer.html— для футера с логами, чтобы сделать его переиспользуемым и легко обновляемым.
- Изменения:
dashboard.jsтеперь отвечает за инициализацию всего главного экрана (загрузкаmain-params.html, футера и динамической правой части).pages/login.html— остается отдельной, но теперь явно отделена от динамических страниц главного экрана.- Убраны ненужные файлы (если были ранее); структура оптимизирована для модульности (каждый модуль экспортирует функции для ES6 import).
- Соответствие требованиям:
- Структура соответствует
FRONTEND_REQUIREMENTS.md: модульный JS-код, отдельные файлы для логики (app.js, api.js), стили в style.css. - Поддержка адаптивности: в style.css используются медиа-запросы для мобильных устройств (вертикальное расположение карточек).
- Масштабируемость: Легко добавить новые страницы (например,
analytics.htmlиanalytics.js) вpages/и зарегистрировать вrouter.js.
- Структура соответствует
- Рекомендации по реализации:
- В
index.htmlдобавить контейнеры:<header id="header"></header>,<nav id="nav"></nav>,<main><div id="main-params"></div><div id="content"></div></main>,<footer id="footer"></footer>. - В
router.jsзагружать контент в#contentна основе маршрута (например,#/graphics→graphics.html). - В
utils.jsдобавить функции для показа ошибок в ретро-стиле (красный текст на темном фоне). - Для графиков в
graphics.jsиспользовать Chart.js (подключить через CDN вindex.html) или Canvas API.
- В
Эта структура готова к реализации. Если нужны дополнительные корректировки (например, добавление папок для ассетов или тестов), уточните.