Added docs RazorConsole

This commit is contained in:
2026-04-13 16:53:31 +03:00
parent e37ab09fc5
commit c117d928b0
5 changed files with 913 additions and 0 deletions

View File

@@ -0,0 +1,116 @@
# RazorConsole — Обзор
**Репозиторий:** https://github.com/RazorConsole/RazorConsole
**Лицензия:** MIT
**Последняя версия:** v0.5.0 (март 2026)
**NuGet:** `RazorConsole.Core`
## Что такое RazorConsole?
RazorConsole — это .NET-библиотека для построения интерактивных TUI-приложений (Terminal User Interface) с использованием синтаксиса Razor-компонентов и движка рендеринга Spectre.Console.
Библиотека заполняет разрыв между веб-разработкой на Blazor/Razor и консольными приложениями: разработчик пишет компоненты `.razor`, а на выходе получает полноценный интерактивный терминальный интерфейс.
## Ключевые возможности
| Возможность | Описание |
|---|---|
| Компонентная архитектура | Razor-компоненты с data binding, event handling и lifecycle |
| 25+ встроенных компонентов | Макет, ввод, отображение, утилиты |
| Интерактивность | Кнопки, текстовые поля, селекторы, навигация клавиатурой |
| Hot Reload | Обновление UI без перезапуска через metadata update handler |
| VDOM + Translators | Виртуальный DOM с расширяемой системой трансляторов |
| DI интеграция | Построен на `Microsoft.Extensions.Hosting` |
| Галерея компонентов | Глобальный инструмент `razorconsole-gallery` |
## Технологический стек
- **Runtime:** .NET 8 / .NET 9
- **SDK:** `Microsoft.NET.Sdk.Razor` (обязателен в `.csproj`)
- **Рендеринг:** Spectre.Console
- **DI/Host:** `Microsoft.Extensions.Hosting`
- **Синтаксис подсветки:** ColorCode
## Установка
```bash
dotnet add package RazorConsole.Core
```
## Минимальный проект
### Файл проекта (`.csproj`)
```xml
<Project Sdk="Microsoft.NET.Sdk.Razor">
<!-- другие настройки -->
</Project>
```
### Компонент `Counter.razor`
```razor
@using Microsoft.AspNetCore.Components
@using Microsoft.AspNetCore.Components.Web
@using RazorConsole.Components
<Columns>
<p>Current count</p>
<Markup Content="@currentCount.ToString()" Foreground="@Spectre.Console.Color.Green" />
</Columns>
<TextButton Content="Click me"
OnClick="IncrementCount"
BackgroundColor="@Spectre.Console.Color.Grey"
FocusedColor="@Spectre.Console.Color.Blue" />
@code {
private int currentCount = 0;
private void IncrementCount() { currentCount++; }
}
```
### `Program.cs`
```csharp
using Microsoft.Extensions.Hosting;
using RazorConsole.Core;
IHostBuilder hostBuilder = Host.CreateDefaultBuilder(args)
.UseRazorConsole<Counter>();
IHost host = hostBuilder.Build();
await host.RunAsync();
```
## Примеры приложений
| Пример | Демонстрирует |
|---|---|
| `examples/Counter/` | Основы: кнопки, состояние, layout, styled text |
| `examples/LLMAgentTUI/` | Интеграция с AI SDK (OpenAI/Ollama), чат-интерфейс |
| `examples/LoginForm/` | Форма с валидацией, маскирование пароля, состояния ошибок |
## Компонентная галерея
```bash
dotnet tool install --global RazorConsole.Gallery --version 0.0.3-alpha
razorconsole-gallery
```
## Структура репозитория
```
src/ — исходный код библиотеки
examples/ — примеры приложений
design-doc/ — архитектурные документы
nuget/ — конфигурация NuGet
release-notes/ — история релизов
docfx/ — генерация документации
website/ — сайт проекта
```
## Сообщество
- Discord: https://discord.gg/DphHAnJxCM
- Issues: https://github.com/RazorConsole/RazorConsole/issues
- Codecov: https://codecov.io/gh/RazorConsole/RazorConsole