Описание принципов работы и создание библиотеки классов Razor
Компоненты веб-приложений позволяют разработчикам повторно использовать части пользовательского интерфейса в пределах своего приложения. С помощью библиотек классов Razor разработчики могут совместно использовать эти компоненты и применять их повторно во многих приложениях.
Здесь показано, как создать библиотеку классов Razor и как использовать ее для совместного использования отображаемого и статического содержимого для настройки и представления приложений Blazor.
Сведения о библиотеках классов Razor
Библиотека классов Razor — это тип проекта .NET, содержащий компоненты Razor, страницы, HTML, файлы Cascading Style Sheet (CSS), JavaScript, изображения и другое статическое веб-содержимое, на которое может ссылаться приложение Blazor. Как и в случае с другими проектами библиотеки классов .NET, библиотеки классов Razor можно объединять в пакеты NuGet и совместно использовать в репозиториях пакетов NuGet, таких как NuGet.org.
Рассмотрим шаблон по умолчанию для создания библиотеки классов Razor.
Создание проекта с использованием шаблона по умолчанию
При необходимости можно начать создание библиотеки классов Razor в Visual Studio, выбрав Файл>Создать Project.
Кроме того, можно создавать проекты в интерфейсе командной строки, выполнив следующую команду:
dotnet new razorclasslib -o MyProjectName
Этот шаблон предоставляет исходный компонент с именем Component1, демонстрирующий несколько важных функций, которые могут использоваться компонентами:
- Изолированная таблица каскадных стилей с именем Component1.razor.css, которая хранится в той же папке, что и Component1.razor. Файл Component1.razor.css условно включается в приложение Blazor, которое ссылается на Component1.
- Статическое содержимое, например изображения и файлы JavaScript, доступные для приложения Blazor в среде выполнения и упоминаемые в Component1. Это содержимое доставляется в папку wwwroot, которая ведет себя так же, как папка wwwroot в приложении ASP.NET Core или Blazor.
- Код .NET, который выполняет функции, находящиеся во включенном файле JavaScript.
Различия между библиотекой классов и библиотекой классов Razor
Библиотека классов — это общая структура доставки пакетов в приложениях .NET, тогда как библиотека классов Razor похожа на структуру с несколькими другими функциями, настроенными в файле проекта.
<Project Sdk="Microsoft.NET.Sdk.Razor">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
<ItemGroup>
<SupportedPlatform Include="browser" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Components.Web" Version="8.0.0" />
</ItemGroup>
</Project>
- Файл проекта содержит ссылку пакета SDK на Microsoft.NET.Sdk.Razor, чтобы объявить, что он содержит и создает содержимое Razor в виде библиотеки классов Razor.
- Запись
SupportedPlatform
объявляет, что эта библиотека может использоваться наbrowser
платформе, а именно WebAssembly. - Ссылка
PackageReference
на библиотекуMicrosoft.AspNetCore.Components.Web
предоставляет доступ к базовым компонентам Blazor, которые поставляются с платформой. Это позволяет использовать эти простые компоненты для создания более сложных компонентов.
Содержимое компонента Razor
Исходный доставляемый компонент Razor довольно простой. Он содержит только HTML-элемент div
с коротким блоком текста:
<div class="my-component">
This component is defined in the <strong>FirstRazorLibrary</strong> library.
</div>
Этот компонент взаимодействует с другими компонентами Blazor и страницами, которые ссылаются на него, так же, как должен работать компонент одного проекта. Это значит, что изолированный скрипт CSS в файле Component1.razor.css отображается в строке с остальной частью CSS приложения в файле application.css.
Доставка статических ресурсов
Вы можете ссылаться на содержимое папки wwwroot относительно другого содержимого этой папки и отдельных файлов CSS компонентов, таких как Component1.razor.css, в качестве файлов в той же базовой папке. Например, css по умолчанию добавляет 2 пиксель тире красной границы и стиль фонового изображения, использующего изображение background.png в папке wwwroot . Для создания этой ссылки из CSS на содержимое, находящееся в папке wwwroot, пути не требуются.
.my-component {
border: 2px dashed red;
padding: 1em;
margin: 1em 0;
background-image: url('background.png');
}
Содержимое папки wwwroot доступно для создания ссылок размещенными приложениями Blazor с использованием абсолютной ссылки на папку в следующем формате:
/_content/{PACKAGE_ID}/{PATH_AND_FILENAME_INSIDE_WWWROOT}
Создание ссылок на библиотеку классов Razor
В решении .NET, где наша библиотека классов Razor находится на диске рядом с приложением Blazor, которое будет ссылаться на библиотеку, мы можем обновить приложение Blazor, чтобы оно ссылалось на библиотеку классов Razor, используя стандартное диалоговое окно Добавление ссылки в Visual Studio и команду add reference
в .NET CLI, как показано здесь:
dotnet add reference ../MyClassLibrary
Для библиотек, которые доставляются нам в форме пакета NuGet, мы можем добавить ссылку с помощью установщика пакета NuGet Visual Studio или команды add package
в .NET CLI, как показано здесь:
dotnet add package MyClassLibrary