Files
LazyBearWorks/docs/razorconsole/overview.md

117 lines
4.3 KiB
Markdown
Raw Permalink 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.
# 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