Создание веб-приложений
Проект редко состоит только из бэкенда. С помощью Lino также можно создавать веб-приложения для потребления сгенерированных API, предоставляя интерфейсы для конечных пользователей или внутренних команд.
В настоящее время фреймворк поддерживает Blazor Web App (режим рендеринга interactive auto) на уровне ядра.
Однако архитектура спроектирована таким образом, чтобы позволять добавление нескольких фронтендов в одно решение, удовлетворяя различные сценарии и аудитории.
Фронтенды с Blazor Web App
При генерации фронтенда Lino автоматически создаёт проект Blazor Web App, настроенный для:
- Упрощённая маршрутизация → стандартная структура навигации уже настроена.
- Натуральная интеграция с Minimal APIs → прямое использование созданных эндпоинтов.
- Переиспользуемые компоненты для CRUD → стандартные страницы списка, создания и редактирования.
- Поддержка аутентификации и авторизации → если сервис настроен на безопасность.
Этот фронтенд уже готов к использованию API, созданных в модулях приложения, с сильной типизацией и автоматической интеграцией через типизированный HttpClient.
Несколько фронтендов
Проект может содержать любое количество фронтендов. Каждый фронтенд добавляется как новый проект Blazor в решение, разделяя одни и те же API, предоставляемые бэкендом.
Примеры сценариев:
- Публичный сайт → страницы, доступные клиентам или посетителям.
- Backoffice/Админ → внутренняя панель управления для операторов или административных команд.
- Портал партнёров → ограниченный доступ для партнёров, реселлеров или поставщиков.
Такое разделение облегчает специализацию интерфейса, сохраняя архитектурную согласованность при использовании API.
Генерация веб-страниц
Чтобы ускорить разработку интерфейсов, CLI Lino предлагает команду:
lino page new
Эта команда создаёт Blazor-страницы, уже подключённые к бэкенду, с соблюдением установленных соглашений:
- Генерация компонентов форм → страницы создания и редактирования.
- Автоматические списки → страницы индекса (постраничный список).
- Прямое взаимодействие с API → автоматическое подключение к соответствующим эндпоинтам.
Это позволяет создавать полный CRUD (фронтенд → API → CQRS → база данных) без повторного ручного написания кода.
Например, создавая страницы для сущности Order, будет создана следующая структура:
MyApp/
└── src/
└── WebApps/
└── MySite/
└── Services/
└── Pages/
└── Orders/
└── Registration/
├── Order.razor
├── Order.razor.cs
└── Components/
├── Form/
│ ├── OrderForm.razor
│ ├── OrderForm.razor.cs
│ ├── OrderFormExtensions.cs
│ └── OrderFormViewModel.cs
└── Grid/
├── OrderGrid.razor
├── OrderGrid.razor.cs
├── OrderGridExtensions.cs
└── OrderPagedQueryParams.cs
Кроме того, создаются интегрированные сервисы для использования эндпоинтов OrdersEndpoints, обеспечивая сквозное взаимодействие:
Фронтенд → API → Commands/Queries → База данных
Таким образом, Lino предоставляет полный поток разработки full-stack, значительно сокращая время, необходимое для создания новых функций.
