4.3 KiB
4.3 KiB
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
Установка
dotnet add package RazorConsole.Core
Минимальный проект
Файл проекта (.csproj)
<Project Sdk="Microsoft.NET.Sdk.Razor">
<!-- другие настройки -->
</Project>
Компонент Counter.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
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/ |
Форма с валидацией, маскирование пароля, состояния ошибок |
Компонентная галерея
dotnet tool install --global RazorConsole.Gallery --version 0.0.3-alpha
razorconsole-gallery
Структура репозитория
src/ — исходный код библиотеки
examples/ — примеры приложений
design-doc/ — архитектурные документы
nuget/ — конфигурация NuGet
release-notes/ — история релизов
docfx/ — генерация документации
website/ — сайт проекта