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*
|
||||||
180
Cargo.lock
generated
180
Cargo.lock
generated
|
|
@ -156,6 +156,72 @@ dependencies = [
|
||||||
"typenum",
|
"typenum",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "darling"
|
||||||
|
version = "0.20.11"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee"
|
||||||
|
dependencies = [
|
||||||
|
"darling_core",
|
||||||
|
"darling_macro",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "darling_core"
|
||||||
|
version = "0.20.11"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e"
|
||||||
|
dependencies = [
|
||||||
|
"fnv",
|
||||||
|
"ident_case",
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"strsim",
|
||||||
|
"syn",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "darling_macro"
|
||||||
|
version = "0.20.11"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead"
|
||||||
|
dependencies = [
|
||||||
|
"darling_core",
|
||||||
|
"quote",
|
||||||
|
"syn",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "derive_builder"
|
||||||
|
version = "0.20.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "507dfb09ea8b7fa618fcf76e953f4f5e192547945816d5358edffe39f6f94947"
|
||||||
|
dependencies = [
|
||||||
|
"derive_builder_macro",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "derive_builder_core"
|
||||||
|
version = "0.20.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "2d5bcf7b024d6835cfb3d473887cd966994907effbe9227e8c8219824d06c4e8"
|
||||||
|
dependencies = [
|
||||||
|
"darling",
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"syn",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "derive_builder_macro"
|
||||||
|
version = "0.20.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c"
|
||||||
|
dependencies = [
|
||||||
|
"derive_builder_core",
|
||||||
|
"syn",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "digest"
|
name = "digest"
|
||||||
version = "0.10.7"
|
version = "0.10.7"
|
||||||
|
|
@ -236,15 +302,33 @@ version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"axum",
|
"axum",
|
||||||
"chrono",
|
"chrono",
|
||||||
|
"handlebars",
|
||||||
"http",
|
"http",
|
||||||
"mime_guess",
|
"mime_guess",
|
||||||
"rust-embed",
|
"rust-embed",
|
||||||
|
"serde_json",
|
||||||
"term_size",
|
"term_size",
|
||||||
"tokio",
|
"tokio",
|
||||||
"tower-http",
|
"tower-http",
|
||||||
"tower-service",
|
"tower-service",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "handlebars"
|
||||||
|
version = "6.3.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "759e2d5aea3287cb1190c8ec394f42866cb5bf74fcbf213f354e3c856ea26098"
|
||||||
|
dependencies = [
|
||||||
|
"derive_builder",
|
||||||
|
"log",
|
||||||
|
"num-order",
|
||||||
|
"pest",
|
||||||
|
"pest_derive",
|
||||||
|
"serde",
|
||||||
|
"serde_json",
|
||||||
|
"thiserror",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "http"
|
name = "http"
|
||||||
version = "1.3.1"
|
version = "1.3.1"
|
||||||
|
|
@ -352,6 +436,12 @@ dependencies = [
|
||||||
"cc",
|
"cc",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "ident_case"
|
||||||
|
version = "1.0.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "itoa"
|
name = "itoa"
|
||||||
version = "1.0.15"
|
version = "1.0.15"
|
||||||
|
|
@ -428,6 +518,21 @@ dependencies = [
|
||||||
"windows-sys 0.61.2",
|
"windows-sys 0.61.2",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "num-modular"
|
||||||
|
version = "0.6.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "17bb261bf36fa7d83f4c294f834e91256769097b3cb505d44831e0a179ac647f"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "num-order"
|
||||||
|
version = "1.2.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "537b596b97c40fcf8056d153049eb22f481c17ebce72a513ec9286e4986d1bb6"
|
||||||
|
dependencies = [
|
||||||
|
"num-modular",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "num-traits"
|
name = "num-traits"
|
||||||
version = "0.2.19"
|
version = "0.2.19"
|
||||||
|
|
@ -472,6 +577,49 @@ version = "2.3.2"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220"
|
checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "pest"
|
||||||
|
version = "2.8.4"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "cbcfd20a6d4eeba40179f05735784ad32bdaef05ce8e8af05f180d45bb3e7e22"
|
||||||
|
dependencies = [
|
||||||
|
"memchr",
|
||||||
|
"ucd-trie",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "pest_derive"
|
||||||
|
version = "2.8.4"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "51f72981ade67b1ca6adc26ec221be9f463f2b5839c7508998daa17c23d94d7f"
|
||||||
|
dependencies = [
|
||||||
|
"pest",
|
||||||
|
"pest_generator",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "pest_generator"
|
||||||
|
version = "2.8.4"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "dee9efd8cdb50d719a80088b76f81aec7c41ed6d522ee750178f83883d271625"
|
||||||
|
dependencies = [
|
||||||
|
"pest",
|
||||||
|
"pest_meta",
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"syn",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "pest_meta"
|
||||||
|
version = "2.8.4"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "bf1d70880e76bdc13ba52eafa6239ce793d85c8e43896507e43dd8984ff05b82"
|
||||||
|
dependencies = [
|
||||||
|
"pest",
|
||||||
|
"sha2",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "pin-project-lite"
|
name = "pin-project-lite"
|
||||||
version = "0.2.16"
|
version = "0.2.16"
|
||||||
|
|
@ -679,6 +827,12 @@ dependencies = [
|
||||||
"windows-sys 0.60.2",
|
"windows-sys 0.60.2",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "strsim"
|
||||||
|
version = "0.11.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "syn"
|
name = "syn"
|
||||||
version = "2.0.110"
|
version = "2.0.110"
|
||||||
|
|
@ -705,6 +859,26 @@ dependencies = [
|
||||||
"libc",
|
"libc",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "thiserror"
|
||||||
|
version = "2.0.17"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8"
|
||||||
|
dependencies = [
|
||||||
|
"thiserror-impl",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "thiserror-impl"
|
||||||
|
version = "2.0.17"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"syn",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tokio"
|
name = "tokio"
|
||||||
version = "1.48.0"
|
version = "1.48.0"
|
||||||
|
|
@ -801,6 +975,12 @@ version = "1.19.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb"
|
checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "ucd-trie"
|
||||||
|
version = "0.1.7"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "unicase"
|
name = "unicase"
|
||||||
version = "2.8.1"
|
version = "2.8.1"
|
||||||
|
|
|
||||||
|
|
@ -6,9 +6,11 @@ edition = "2024"
|
||||||
[dependencies]
|
[dependencies]
|
||||||
axum = "0.8.7"
|
axum = "0.8.7"
|
||||||
chrono = "0.4"
|
chrono = "0.4"
|
||||||
|
handlebars = "6.3.2"
|
||||||
http = "1.3.1"
|
http = "1.3.1"
|
||||||
mime_guess = "2.0"
|
mime_guess = "2.0"
|
||||||
rust-embed = "8.9.0"
|
rust-embed = "8.9.0"
|
||||||
|
serde_json = "1.0.145"
|
||||||
term_size = "0.1"
|
term_size = "0.1"
|
||||||
tokio = { version = "*", features = ["full"] }
|
tokio = { version = "*", features = ["full"] }
|
||||||
tower-http = "0.6.6"
|
tower-http = "0.6.6"
|
||||||
|
|
|
||||||
6
assets/pages/about.hbs
Normal file
6
assets/pages/about.hbs
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
---
|
||||||
|
title: about
|
||||||
|
---
|
||||||
|
<h1>about</h1>
|
||||||
|
<a href="/">about</a>
|
||||||
|
|
||||||
|
|
@ -1,14 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
||||||
<title>About</title>
|
|
||||||
<base href="{{BASE_URL}}">
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<h1>About Page</h1>
|
|
||||||
<p>This is the about page.</p>
|
|
||||||
<a href="/">index</a>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
7
assets/pages/index.hbs
Normal file
7
assets/pages/index.hbs
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
---
|
||||||
|
title: grechkaGK
|
||||||
|
---
|
||||||
|
<h1>Hello world!</h1>
|
||||||
|
<img src="media/uzi.gif"/>
|
||||||
|
<a href="about/">about</a>
|
||||||
|
|
||||||
|
|
@ -1,14 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
||||||
<title>Document</title>
|
|
||||||
<base href="{{BASE_URL}}">
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<h1>Hello world!</h1>
|
|
||||||
<img src="media/uzi.gif"/>
|
|
||||||
<a href="about/">about</a>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
4
assets/pages/test.hbs
Normal file
4
assets/pages/test.hbs
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
---
|
||||||
|
title: test
|
||||||
|
---
|
||||||
|
<p>just test</p>
|
||||||
13
assets/template.hbs
Normal file
13
assets/template.hbs
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>{{title}}</title>
|
||||||
|
<base href="{{BASE_URL}}"> {{!-- в зависимости от хостинга свой домен --}}
|
||||||
|
<link rel="stylesheet" href="{{style}}"> {{!-- если не используется style то по дефолту styles/main.css --}}
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
{{{body}}} {{! контент страницы }}
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
||||||
<title>Document</title>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
@ -1,6 +0,0 @@
|
||||||
use crate::assets::Assets;
|
|
||||||
|
|
||||||
pub fn build_template(Assets: Assets) -> Assets {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
mod logger;
|
mod logger;
|
||||||
mod builder;
|
mod static_builder;
|
||||||
use crate::logger::logger as log;
|
use crate::logger::logger as log;
|
||||||
mod debug;
|
mod debug;
|
||||||
mod assets;
|
mod assets;
|
||||||
|
|
|
||||||
15
src/static_builder.rs
Normal file
15
src/static_builder.rs
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
use crate::assets::Assets;
|
||||||
|
use handlebars::Handlebars;
|
||||||
|
use serde_json::Value;
|
||||||
|
use std::collections::HashMap;
|
||||||
|
|
||||||
|
pub struct static_builder;
|
||||||
|
|
||||||
|
impl static_builder {
|
||||||
|
pub fn build_pages(assets: Assets) -> Assets {
|
||||||
|
let mut reg = Handlebars::new();
|
||||||
|
reg.register_escape_fn(handlebars::no_escape);
|
||||||
|
let mut res_assets = Assets::default();
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue