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