RazorBiblioteki klas składników ASP.NET CoreASP.NET Core Razor components class libraries
Składniki mogą być współużytkowane w Razor bibliotece klas (RCL) w różnych projektach.Components can be shared in a Razor class library (RCL) across projects. Razor Biblioteka klas składników może być dołączana z:A Razor components class library can be included from:
- Inny projekt w rozwiązaniu.Another project in the solution.
- Pakiet NuGet.A NuGet package.
- Przywoływana Biblioteka platformy .NET.A referenced .NET library.
Podobnie jak składniki są zwykłymi typami .NET, składniki udostępniane przez RCL są normalnymi zestawami platformy .NET.Just as components are regular .NET types, components provided by an RCL are normal .NET assemblies.
Utwórz RCLCreate an RCL
- Tworzenie nowego projektu.Create a new project.
- Wybierz Razor bibliotekę klas.Select Razor Class Library. Wybierz opcję Dalej.Select Next.
- W oknie dialogowym Utwórz nową Razor bibliotekę klas wybierz pozycję Utwórz.In the Create a new Razor class library dialog, select Create.
- Podaj nazwę projektu w polu Nazwa projektu lub zaakceptuj nazwę domyślną projektu.Provide a project name in the Project name field or accept the default project name. W przykładach w tym temacie użyto nazwy projektu
ComponentLibrary
.The examples in this topic use the project nameComponentLibrary
. Wybierz przycisk Utwórz.Select Create. - Dodaj RCL do rozwiązania:Add the RCL to a solution:
- Kliknij prawym przyciskiem myszy rozwiązanie.Right-click the solution. Wybierz pozycję Dodaj > istniejący projekt.Select Add > Existing Project.
- Przejdź do pliku projektu RCL.Navigate to the RCL's project file.
- Wybierz plik projektu RCL (
.csproj
).Select the RCL's project file (.csproj
).
- Dodaj odwołanie do RCL z aplikacji:Add a reference to the RCL from the app:
- Kliknij prawym przyciskiem myszy projekt aplikacji.Right-click the app project. Wybierz pozycję Dodaj > odwołanie.Select Add > Reference.
- Wybierz projekt RCL.Select the RCL project. Wybierz przycisk OK.Select OK.
Uwaga
Jeśli pole wyboru strony i widoki pomocy technicznej jest zaznaczone podczas generowania RCL z szablonu, Dodaj również _Imports.razor
plik do katalogu głównego wygenerowanego projektu z następującą zawartością, aby włączyć Razor Tworzenie składników:If the Support pages and views check box is selected when generating the RCL from the template, then also add an _Imports.razor
file to root of the generated project with the following contents to enable Razor component authoring:
@using Microsoft.AspNetCore.Components.Web
Ręcznie Dodaj plik do katalogu głównego wygenerowanego projektu.Manually add the file the root of the generated project.
Korzystanie ze składnika bibliotekiConsume a library component
Aby można było korzystać ze składników zdefiniowanych w bibliotece w innym projekcie, należy użyć jednej z następujących metod:In order to consume components defined in a library in another project, use either of the following approaches:
- Użyj pełnej nazwy typu z przestrzeni nazw.Use the full type name with the namespace.
- Zastosuj Razor
@using
dyrektywę.Use Razor's@using
directive. Poszczególne składniki można dodawać według nazwy.Individual components can be added by name.
W poniższych przykładach ComponentLibrary
jest biblioteka składników zawierająca Component1
składnik ( Component1.razor
).In the following examples, ComponentLibrary
is a component library containing the Component1
component (Component1.razor
). Component1
Składnik jest przykładowym składnikiem automatycznie dodawanym przez szablon projektu RCL podczas tworzenia biblioteki.The Component1
component is an example component automatically added by the RCL project template when the library is created.
Odwołuje się do Component1
składnika przy użyciu jego przestrzeni nazw:Reference the Component1
component using its namespace:
<h1>Hello, world!</h1>
Welcome to your new app.
<ComponentLibrary.Component1 />
Alternatywnie można przenieść bibliotekę do zakresu za pomocą @using
dyrektywy i użyć składnika bez jego przestrzeni nazw:Alternatively, bring the library into scope with an @using
directive and use the component without its namespace:
@using ComponentLibrary
<h1>Hello, world!</h1>
Welcome to your new app.
<Component1 />
Opcjonalnie należy uwzględnić @using ComponentLibrary
dyrektywę w pliku najwyższego poziomu, _Import.razor
Aby udostępnić składniki biblioteki dla całego projektu.Optionally, include the @using ComponentLibrary
directive in the top-level _Import.razor
file to make the library's components available to an entire project. Dodaj dyrektywę do pliku na _Import.razor
dowolnym poziomie, aby zastosować przestrzeń nazw do pojedynczego składnika lub zestawu składników w folderze.Add the directive to an _Import.razor
file at any level to apply the namespace to a single component or set of components within a folder.
W przypadku składników biblioteki, które korzystają z izolacji CSS, nie istnieje potrzeba jawnego łączenia stylów poszczególnych składników biblioteki w aplikacji, która korzysta z biblioteki.For library components that use CSS isolation, there's no need to explicitly link the library's individual component stylesheets in the app that consumes the library. Style składników są automatycznie udostępniane aplikacji zużywanej.The component styles are automatically made available to the consuming app.
Aby zapewnić dodatkowe style składników biblioteki z arkuszy stylów w wwwroot
folderze biblioteki, Połącz arkusze stylów w wwwroot/index.html
pliku aplikacji ( Blazor WebAssembly ) lub Pages/_Host.cshtml
pliku ( Blazor Server ).To provide additional library component styles from stylesheets in the library's wwwroot
folder, link the stylesheets in the consuming app's wwwroot/index.html
file (Blazor WebAssembly) or Pages/_Host.cshtml
file (Blazor Server):
<head>
...
<link href="_content/ComponentLibrary/additionalStyles.css" rel="stylesheet" />
</head>
Aby podać Component1
my-component
klasę CSS, Połącz się z arkuszem stylów biblioteki w wwwroot/index.html
pliku ( Blazor WebAssembly ) lub Pages/_Host.cshtml
pliku () aplikacji ( Blazor Server ):To provide Component1
's my-component
CSS class, link to the library's stylesheet in the app's wwwroot/index.html
file (Blazor WebAssembly) or Pages/_Host.cshtml
file (Blazor Server):
<head>
...
<link href="_content/ComponentLibrary/styles.css" rel="stylesheet" />
</head>
Tworzenie Razor biblioteki klas składników ze statycznymi zasobamiCreate a Razor components class library with static assets
RCL może zawierać statyczne zasoby.An RCL can include static assets. Zasoby statyczne są dostępne dla każdej aplikacji, która korzysta z biblioteki.The static assets are available to any app that consumes the library. Aby uzyskać więcej informacji, zobacz Interfejs użytkownika wielokrotnego użytku Razor w bibliotekach klas z ASP.NET Core.For more information, see Interfejs użytkownika wielokrotnego użytku Razor w bibliotekach klas z ASP.NET Core.
Dostarczaj składniki i zasoby statyczne do wielu Blazor aplikacji hostowanychSupply components and static assets to multiple hosted Blazor apps
Aby uzyskać więcej informacji, zobacz Hostowanie i wdrażanie ASP.NET Core Blazor WebAssembly.For more information, see Hostowanie i wdrażanie ASP.NET Core Blazor WebAssembly.
Analizator zgodności przeglądarki dla programu Blazor WebAssemblyBrowser compatibility analyzer for Blazor WebAssembly
Blazor WebAssembly aplikacje są przeznaczone dla całego obszaru powierzchni interfejsu API platformy .NET, ale nie wszystkie interfejsy API platformy .NET są obsługiwane w zestawie webassembly z powodu ograniczeń piaskownicy przeglądarki.Blazor WebAssembly apps target the full .NET API surface area, but not all .NET APIs are supported on WebAssembly due to browser sandbox constraints. Nieobsługiwane interfejsy API są zgłaszane PlatformNotSupportedException podczas uruchamiania w zestawie webassembly.Unsupported APIs throw PlatformNotSupportedException when running on WebAssembly. Analizator zgodności platformy ostrzega dewelopera, gdy aplikacja korzysta z interfejsów API, które nie są obsługiwane przez Platformy docelowe aplikacji.A platform compatibility analyzer warns the developer when the app uses APIs that aren't supported by the app's target platforms. W przypadku Blazor WebAssembly aplikacji oznacza to sprawdzenie, czy interfejsy API są obsługiwane w przeglądarkach.For Blazor WebAssembly apps, this means checking that APIs are supported in browsers. Dodawanie adnotacji do interfejsów API programu .NET Framework dla analizatora zgodności jest procesem trwającym, więc nie wszystkie interfejsy API programu .NET Framework są obecnie opatrzone adnotacją.Annotating .NET framework APIs for the compatibility analyzer is an on-going process, so not all .NET framework API is currently annotated.
Blazor WebAssembly i Razor projekty biblioteki klas automatycznie włączają testy compatibilty przeglądarki przez dodanie browser
jako obsługiwanej platformy z SupportedPlatform
elementem MSBuild.Blazor WebAssembly and Razor class library projects automatically enable browser compatibilty checks by adding browser
as a supported platform with the SupportedPlatform
MSBuild item. Deweloperzy biblioteki mogą ręcznie dodać SupportedPlatform
element do pliku projektu biblioteki, aby włączyć tę funkcję:Library developers can manually add the SupportedPlatform
item to a library's project file to enable the feature:
<ItemGroup>
<SupportedPlatform Include="browser" />
</ItemGroup>
Podczas tworzenia biblioteki należy wskazać, że konkretny interfejs API nie jest obsługiwany w przeglądarkach, określając browser
UnsupportedOSPlatformAttribute :When authoring a library, indicate that a particular API isn't supported in browsers by specifying browser
to UnsupportedOSPlatformAttribute:
[UnsupportedOSPlatform("browser")]
private static string GetLoggingDirectory()
{
...
}
Aby uzyskać więcej informacji, zobacz Dodawanie adnotacji do interfejsów API jako nieobsługiwanych na określonych platformach (repozytorium dotnet/Designing w witrynie GitHub.For more information, see Annotating APIs as unsupported on specific platforms (dotnet/designs GitHub repository.
Blazor Izolacja kodu JavaScript i odwołania do obiektówBlazor JavaScript isolation and object references
Blazor Włącza izolację JavaScript w standardowych modułach języka JavaScript.Blazor enables JavaScript isolation in standard JavaScript modules. Izolacja JavaScript zapewnia następujące korzyści:JavaScript isolation provides the following benefits:
- Zaimportowana wartość JavaScript nie jest już zanieczyszczana globalną przestrzenią nazw.Imported JavaScript no longer pollutes the global namespace.
- Odbiorcy biblioteki i składników nie są zobowiązani do ręcznego zaimportowania powiązanego języka JavaScript.Consumers of the library and components aren't required to manually import the related JavaScript.
Aby uzyskać więcej informacji, zobacz Wywoływanie funkcji języka JavaScript z metod .NET w ASP.NET Core Blazor.For more information, see Wywoływanie funkcji języka JavaScript z metod .NET w ASP.NET Core Blazor.
Kompilowanie, pakowanie i dostarczanie do narzędzia NuGetBuild, pack, and ship to NuGet
Ponieważ biblioteki składników są standardowymi bibliotekami .NET, pakowanie i dostarczanie ich do narzędzia NuGet nie różni się od pakowania i wysyłania żadnej biblioteki do narzędzia NuGet.Because component libraries are standard .NET libraries, packaging and shipping them to NuGet is no different from packaging and shipping any library to NuGet. Pakowanie jest wykonywane przy użyciu dotnet pack
polecenia w powłoce poleceń:Packaging is performed using the dotnet pack
command in a command shell:
dotnet pack
Przekaż pakiet do narzędzia NuGet przy użyciu dotnet nuget push
polecenia w powłoce poleceń.Upload the package to NuGet using the dotnet nuget push
command in a command shell.
Dodatkowe zasobyAdditional resources
- Interfejs użytkownika wielokrotnego użytku Razor w bibliotekach klas z ASP.NET Core
- Dodawanie pliku konfiguracji programu do biblioteki języka pośredniego (IL) w formacie XMLAdd an XML Intermediate Language (IL) Trimmer configuration file to a library
- Obsługa izolacji CSS z Razor bibliotekami klasCSS isolation support with Razor class libraries