sync dev
This commit is contained in:
parent
196c3498ef
commit
5df67bc86e
13 changed files with 369 additions and 46 deletions
141
.desc.md
Normal file
141
.desc.md
Normal file
|
|
@ -0,0 +1,141 @@
|
|||
# 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*
|
||||
Loading…
Add table
Add a link
Reference in a new issue