Compare commits
No commits in common. "dev" and "master" have entirely different histories.
13 changed files with 46 additions and 371 deletions
141
.desc.md
141
.desc.md
|
|
@ -1,141 +0,0 @@
|
||||||
# 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,72 +156,6 @@ 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"
|
||||||
|
|
@ -302,33 +236,15 @@ 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"
|
||||||
|
|
@ -436,12 +352,6 @@ 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"
|
||||||
|
|
@ -518,21 +428,6 @@ 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"
|
||||||
|
|
@ -577,49 +472,6 @@ 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"
|
||||||
|
|
@ -827,12 +679,6 @@ 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"
|
||||||
|
|
@ -859,26 +705,6 @@ 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"
|
||||||
|
|
@ -975,12 +801,6 @@ 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,11 +6,9 @@ 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"
|
||||||
|
|
|
||||||
|
|
@ -1,6 +0,0 @@
|
||||||
---
|
|
||||||
title: about
|
|
||||||
---
|
|
||||||
<h1>about</h1>
|
|
||||||
<a href="/">about</a>
|
|
||||||
|
|
||||||
14
assets/pages/about.html
Normal file
14
assets/pages/about.html
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
<!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>
|
||||||
|
|
@ -1,7 +0,0 @@
|
||||||
---
|
|
||||||
title: grechkaGK
|
|
||||||
---
|
|
||||||
<h1>Hello world!</h1>
|
|
||||||
<img src="media/uzi.gif"/>
|
|
||||||
<a href="about/">about</a>
|
|
||||||
|
|
||||||
14
assets/pages/index.html
Normal file
14
assets/pages/index.html
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
<!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>
|
||||||
|
|
@ -1,4 +0,0 @@
|
||||||
---
|
|
||||||
title: test
|
|
||||||
---
|
|
||||||
<p>just test</p>
|
|
||||||
|
|
@ -1,13 +0,0 @@
|
||||||
<!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>
|
|
||||||
11
assets/template.html
Normal file
11
assets/template.html
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
<!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>
|
||||||
18
build.rs
18
build.rs
|
|
@ -1,18 +0,0 @@
|
||||||
/*
|
|
||||||
мы должны реализовать билдер HBS файлов в готовый HTML для вывода пользователю
|
|
||||||
для этого мы должны для начала иметь шаблон HTML, в который будет вставлен HBS код
|
|
||||||
допустим 2 варианта - template файл или вставка внутри кода
|
|
||||||
1 вариант более гибкий но неудобнее
|
|
||||||
2 вариант удобнее но не гибкий
|
|
||||||
потом решу что лучше
|
|
||||||
ладно, пусть пока 1 вариант
|
|
||||||
|
|
||||||
механизмы:
|
|
||||||
подготовка - чистка release/ папки
|
|
||||||
обработка - берём .hbs файл, обрабатываем переменные ссковзь функции, и сохраняем в .html
|
|
||||||
сохраняем файлы в формате как было в assets/
|
|
||||||
*/
|
|
||||||
|
|
||||||
fn main() {
|
|
||||||
println!("cargo:warning=BUILD SCRIPT RUNNING");
|
|
||||||
}
|
|
||||||
6
src/builder.rs
Normal file
6
src/builder.rs
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
use crate::assets::Assets;
|
||||||
|
|
||||||
|
pub fn build_template(Assets: Assets) -> Assets {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
mod logger;
|
mod logger;
|
||||||
|
mod builder;
|
||||||
use crate::logger::logger as log;
|
use crate::logger::logger as log;
|
||||||
mod debug;
|
mod debug;
|
||||||
mod assets;
|
mod assets;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue