Содержание
В прошлой части мы настроили VS Code для комфортной работы с Blazor, а также создали наше первое приложения типа «Hello, world». Сегодня мы более подробно рассмотрим структуру проекта Blazor Server.
Если вы выполнили в точности все действия из прошлой части, то в VS Code была создана следующая структура папок и файлов:

Рассмотрим из чего состоит наш первый проект Blazor Server.
Структура проекта Blazor Server
Папка Data
Папка Data
: содержит класс WeatherForecast
и реализацию WeatherForecastService
, которые предоставляют пример метеоданных для компонента FetchData
приложения.
Сервис WeatherForecastService
— это, по сути, «симулятор» сервиса по получению метеоданных, в котором используется LINQ для генерации данных:
namespace BlazorApp.Data; public class WeatherForecastService { private static readonly string[] Summaries = new[] { "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching" }; public Task<WeatherForecast[]> GetForecastAsync(DateTime startDate) { return Task.FromResult(Enumerable.Range(1, 5).Select(index => new WeatherForecast { Date = startDate.AddDays(index), TemperatureC = Random.Shared.Next(-20, 55), Summary = Summaries[Random.Shared.Next(Summaries.Length)] }).ToArray()); } }
Папка Pages
Папка Pages
: содержит маршрутизируемые компоненты и страницы (.razor
), которые входят в приложение Blazor, а также корневую страницу Razor (_Host.cshtml
) приложения Blazor Server. Маршрут для каждой страницы указывается с помощью директивы @page
. Папка Pages включает в себя следующие файлы:
-
_Host.cshtml
: Корневая страница приложения, реализованная как страница Razor.- При первом запросе любой страницы приложения эта страница преобразовывается для просмотра и возвращается в ответе.
- На странице Host указывается место отрисовки корневого компонента
App
(App.razor
).
Исходный код корневой страницы выглядит следующим образом:
@page "/" @namespace BlazorApp.Pages @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers @{ Layout = "_Layout"; } <component type="typeof(App)" render-mode="ServerPrerendered" />
Здесь мы видим разметку Razor, с помощью которой указан в том числе шаблон нашего приложения (_Layout
). А также видим, что с помощью директивы component
указан корневой компонент приложения (App
), возвращаемый сервером при запросе страницы приложения.
-
- Компонент
Counter
(Counter.razor
) — реализует страницу счетчика. - Компонент
Error
(Error.razor
) — отображается, когда в приложении происходит необработанное исключение. - Компонент
FetchData
(FetchData.razor
) — реализует страницу получения данных о метеопараметрах. - Компонент
Index
(Index.razor
): реализует страницу Home.
- Компонент
Папка Properties
Эта папка содержит всего один файл — launchSettings.json
в котором мы можем задать конфигурацию среды разработки:
{ "iisSettings": { "windowsAuthentication": false, "anonymousAuthentication": true, "iisExpress": { "applicationUrl": "http://localhost:28038", "sslPort": 44396 } }, "profiles": { "BlazorApp": { "commandName": "Project", "dotnetRunMessages": true, "launchBrowser": true, "applicationUrl": "https://localhost:7152;http://localhost:5209", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } }, "IIS Express": { "commandName": "IISExpress", "launchBrowser": true, "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } } } }
Например, мы можем указать адрес и порт по которому будет запускаться наше приложение при отладке, или эе указать настройки сервера IIS Express и так далее. С этим файлом мы ещё познакомимся более подробно в следующих частях руководства.
Папка Shared
содержит следующие компоненты и таблицы стилей:
-
- Компонент
MainLayout
(MainLayout.razor
) — компонент макета приложения. MainLayout.razor.css
— таблица стилей для основного макета приложения.- Компонент
NavMenu
(NavMenu.razor
) — реализует боковую панель навигации и включает в себя компонентNavLink
, который служит для отрисовки навигационных ссылок на другие компоненты Razor. КомпонентNavLink
автоматически указывает выбранное состояние при загрузке компонента, что помогает пользователю понять, какой компонент отображается в настоящее время. NavMenu.razor.css -
таблица стилей для меню навигации приложения.- Компонент
SurveyPrompt
(SurveyPrompt.razor
) — компонент опроса Blazor.
- Компонент
Папка wwwroot
wwwroot
— это папка корневого каталога документов для приложения, которая содержит общедоступные статические ресурсы. По умолчанию шаблон Blazor Server содержит в этой папке css-фреймворк bootstrap и другие статические файлы приложения, например, наборы иконок, шрифты и т.д.
Файлы в корневой директории
Файл _Imports.razor
содержит стандартные директивы Razor, включаемые в компоненты приложения (.razor
), например директивы @using
для пространств имен. Так, по умолчанию в приложении уже подключены следующие пространства имен:
@using System.Net.Http @using Microsoft.AspNetCore.Authorization @using Microsoft.AspNetCore.Components.Authorization @using Microsoft.AspNetCore.Components.Forms @using Microsoft.AspNetCore.Components.Routing @using Microsoft.AspNetCore.Components.Web @using Microsoft.AspNetCore.Components.Web.Virtualization @using Microsoft.JSInterop @using BlazorApp @using BlazorApp.Shared
Последние два пространства имен относятся к нашему приложению.
Файл App.razor
— это корневой компонент приложения, который настраивает маршрутизацию на стороне клиента с помощью компонента Router
. Компонент Router
перехватывает навигацию в браузере и отображает страницу, соответствующую запрошенному адресу.
Файл appsettings.json
— файлы параметров среды приложения.
ФайлProgram.cs -
точка входа в приложение, в которой настраивается узел ASP.NET Core (host). В этом же файле мы можем подключать и настраивать различные сервисы, необходимые для нашего приложения. Например, подключать сервис, позволяющий отправлять http-запросы к сторонним API и так далее.
В .NET 5 и более ранних версиях также присутствовал файл Startup.cs
который содержал логику запуска приложения. Однако в .NET 6 вся логика запуска и настройки приложения теперь содержится в Program.cs
.
Итого
Сегодня мы рассмотрели из чего состоит шаблон приложения Blazor Server — какие папки и файлы располагаются в корневой директории приложения, за что они отвечают и что содержат. В следующей части мы попробуем создать свой собственный компонент Blazor и использовать его в нашем приложении.