gkweb/.desc.md
2025-11-23 13:06:14 +08:00

141 lines
8.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# GKWeb - Rust веб-сервер
## Обзор проекта
**GKWeb** — это современный веб-сервер, написанный на языке программирования Rust с использованием фреймворка Axum. Проект представляет собой простой, но функциональный веб-сервер, способный обслуживать статические файлы и HTML-страницы с поддержкой автоматической маршрутизации.
## Архитектура и особенности
### Основные компоненты
1. **Главный модуль** (`src/main.rs`)
- Точка входа в приложение
- Создание и запуск сервера на порту 3000
- Инициализация маршрутизации
2. **Система маршрутизации** (`src/routing.rs`)
- Автоматическая маршрутизация с помощью Axum
- Поддержка статических файлов и HTML страниц
- Обработка 404 ошибок
- Поддержка переменной BASE_URL для настройки базового пути
3. **Управление ресурсами** (`src/assets.rs`)
- Встраивание статических файлов в исполняемый файл с помощью `rust-embed`
- Компиляция всех файлов из директории `assets/` в бинарник
- Поддержка любых типов файлов
4. **Система логирования** (`src/logger.rs`)
- Цветной терминальный логгер с временными метками
- 4 уровня логирования: INFO, WARN, ERROR, DEBUG
- Адаптивный вывод с учетом ширины терминала
5. **Отладочные функции** (`src/debug/`)
- Вывод списка всех встроенных ресурсов
- Помощь в разработке и отладке
6. **Система сборки** (`src/builder.rs`)
- Модуль для будущих функций сборки шаблонов (пока не реализован)
## Технологический стек
- **Язык**: Rust (edition 2024)
- **Веб-фреймворк**: Axum 0.8.7
- **Асинхронность**: Tokio (полная поддержка)
- **HTTP**: http 1.3.1
- **Типы файлов**: mime_guess для определения MIME-типов
- **Ресурсы**: rust-embed для встраивания файлов
- **Время**: chrono для временных меток
- **Терминал**: term_size для определения размеров окна
## Функциональность
### Маршрутизация
- `/` — главная страница (index.html)
- `/{path}` — общий маршрут для статических файлов и HTML страниц
- Автоматический поиск файлов с добавлением `.html` для путей
- Поддержка статических файлов (CSS, JS, изображения, медиа)
### Особенности HTML страниц
- Автоматическая замена плейсхолдера `{{BASE_URL}}` на значение из переменной окружения
- Поддержка базового href для корректной работы ссылок
- Fallback на 404 для несуществующих страниц
### Логирование
```rust
log(0, "Server started successfully on port 3000", true); // INFO уровень, жирный шрифт
log(3, "Debug information", false); // DEBUG уровень, обычный шрифт
```
## Структура проекта
```
├── src/
│ ├── main.rs # Главный файл
│ ├── routing.rs # Система маршрутизации
│ ├── assets.rs # Управление ресурсами
│ ├── builder.rs # Сборщик (заготовка)
│ ├── logger.rs # Система логирования
│ └── debug/
│ ├── mod.rs
│ └── static_content.rs # Отладочные функции
├── assets/ # Статические ресурсы
│ ├── pages/
│ │ ├── index.html # Главная страница
│ │ ├── about.html # Страница "О нас"
│ │ └── test.hbs # Handlebars шаблон (не используется)
│ ├── template.html # Шаблон страницы
│ ├── styles/
│ │ └── main.css # Основные стили
│ ├── scripts/
│ │ └── hello.js # JavaScript файлы
│ ├── media/
│ │ └── uzi.gif # Медиа файлы
│ └── content/
│ └── about.md # Markdown контент
├── Cargo.toml # Конфигурация проекта
├── TECHDOC.md # Техническая документация
└── .desc.md # Данное описание проекта
```
## Использование
### Запуск сервера
```bash
cargo run
```
### Переменные окружения
- `BASE_URL` — базовый URL для замены в HTML страницах (по умолчанию "/")
### Пример работы
1. Сервер запускается на `http://0.0.0.0:3000`
2. При старте выводится список всех встроенных ресурсов
3. Главная страница доступна по адресу `/`
4. Статические файлы обслуживаются напрямую
5. HTML страницы обрабатываются с заменой BASE_URL
## Преимущества
1. **Производительность**: Rust обеспечивает высокую скорость и низкое потребление памяти
2. **Безопасность**: Встроенная безопасность памяти Rust
3. **Простота развертывания**: Все ресурсы встроены в один исполняемый файл
4. **Гибкость**: Поддержка переменных окружения для конфигурации
5. **Отладка**: Встроенные инструменты логирования и отладки
6. **Современность**: Использует последние версии Rust и фреймворков
## Возможности для развития
1. **Поддержка шаблонов**: Завершение реализации системы сборки шаблонов
2. **Динамические страницы**: Добавление обработки шаблонов Handlebars
3. **API эндпоинты**: Расширение функциональности для REST API
4. **Конфигурация**: Поддержка файлов конфигурации
5. **Мониторинг**: Добавление метрик и мониторинга
6. **Кэширование**: Реализация системы кэширования
7. **HTTPS**: Поддержка SSL/TLS соединений
## Заключение
GKWeb представляет собой современный, производительный и расширяемый веб-сервер, построенный с использованием лучших практик Rust. Проект демонстрирует эффективное использование экосистемы Rust для создания веб-приложений с минимальными зависимостями и максимальной производительностью.
---
*Проект разработан с использованием Rust 2024 edition и Axum framework*