Hybridní Hello World – jak to funguje?
Důležité
Tento projekt je experimentální verze. Doufáme, že si vyzkoušíte experimentální mobilní vazby Blazor a poskytnete nám zpětnou vazbu na adrese https://github.com/xamarin/MobileBlazorBindings.
Poznámka
Tato stránka je pokračováním návodu k sestavení první hybridní aplikace . Než budete pokračovat, doporučujeme tento názorný postup dokončit.
Tip
Pro jednodušší příklad začněte názorným průvodcem sestavením první aplikace a následným návodem Hello World Návod, který ukazuje některé další základní funkce Blazoru.
Pojďme se podívat na počáteční projekt vytvořený v předchozím názorném postupu, abychom lépe pochopili, jak používat experimentální mobilní vazby Blazor Pro hybridní aplikace.
Hlavní projekt, na který se chcete podívat, je sdílený projekt, který obsahuje soubory .razor
. Projekty specifické pro platformu obsahují pouze minimální kód specifický pro experimentální mobilní vazby Blazor.
Jedná se o soubory a složky ve sdíleném projektu:
Kořenová složka
-
_Imports.razor
– Obsahuje společné direktivy, které se použijí pro všechny ostatní.razor
soubory v této složce a jejích podsložkách. Podsložky můžou mít vlastní_Imports.razor
soubory s dalšími direktivami. Nejběžnějším typem direktivy v tomto souboru je direktiva@using
, která se používá k importu oboru názvů do.razor
souborů, stejně jako příkaz jazyka C#using
. -
App.cs
– Obsahuje hlavní vstupní bod uživatelského rozhraní aplikace reprezentovaný třídou odvozenou zeXamarin.Forms.Application
základní třídy. Konstruktor této třídy vytvoří instanci hostitele, přidá do hostitele služby a pak pomocí tohoto hostitele přidá komponentu Blazor s názvemMain
na hlavní stránku aplikace. -
CounterState.cs
– Obsahuje službu, která sleduje hodnotu čítače a nabízí související rozhraní API. Tato služba se používá v nativní části aplikace i v části HTML. -
Main.razor
– Obsahuje hlavní komponentu blazor UI aplikace. Obsahuje některé nativní uživatelské rozhraní a také komponentu, která je hostitelemBlazorWebView
html části aplikace.
Složky WebUI a wwwroot
Tyto složky obsahují webovou část aplikace, což z této aplikace dělá hybridní aplikaci. Zde uvedené soubory a složky se velmi shodují s tím, co se našlo ve webové aplikaci Blazor.
-
WebUI/_Imports.razor
– Obsahuje běžné direktivy pro webovou část aplikace. -
WebUI/App.razor
– Obsahuje hlavní vstupní bod webové části aplikace. -
WebUI/Pages
folder – obsahuje navigovatelné stránky vytvořené pomocí webové syntaxe Blazoru. Všechny.razor
zde uvedené soubory vykreslují HTML a sdílejí stav aplikace se zbytkem aplikace. -
WebUI/Shared
folder – obsahuje sdílené opakovaně použitelné komponenty uživatelského rozhraní vytvořené pomocí webové syntaxe Blazoru. Všechny.razor
zde uvedené soubory vykreslují HTML a používají se na jiných stránkách aplikace. Tato složka obsahuje také komponentuMainLayout
, která definuje celkový tvar webové části aplikace. -
wwwroot
folder – obsahuje statické webové prostředky používané ve webové části aplikace. Obvykle se jedná o soubory a obrázky css.
Pojďme se ponořit do zajímavých souborů.
App.cs
vstupní bod
Vstupní bod uživatelského rozhraní aplikace je na této stránce. Nastaví služby pro aplikaci a pak inicializuje uživatelské rozhraní připojením komponenty Mobile Blazor Bindings k elementu MainPage
.
Jsou zaregistrované dvě sady služeb:
-
services.AddBlazorHybrid()
přidá služby vyžadované mobilními vazbami Blazoru pro hostování webových komponent Blazoru v nativním uživatelském rozhraní. -
services.AddSingleton<CounterState>()
přidá službu specifickou pro aplikaci, kterou je možné využívat odkudkoli v aplikaci, včetně souborů kódu, komponent Blazoru a dalších služeb. Jedná se o jednoúčelovou službu, což znamená, že se vytvoří maximálně jedna instance, což umožní sdílení stavu.
Další informace o službách a injektáži závislostí najdete v tématu injektáž závislostí.
Main.razor
nativní stránka uživatelského rozhraní
Toto je hlavní nativní stránka uživatelského rozhraní aplikace. Obsahuje několik nativních komponent uživatelského rozhraní, například <Label>
a <Button>
. Obsahuje také komponentu <BlazorWebView>
, která hostuje webový obsah Blazoru:
<BlazorWebView VerticalOptions="LayoutOptions.FillAndExpand">
<FirstBlazorHybridApp.WebUI.App />
</BlazorWebView>
Pár dalších zajímavých věcí:
- Značka
<FirstBlazorHybridApp.WebUI.App />
označuje způsob, jakým nativní část aplikace odkazuje na webovou část aplikace. - Direktiva
@inject
slouží k odkazu naCounterState
službu. - Metody
OnInitialized
aDispose
jsou implementovány pro připojení/odpojení obslužnéStateChanged
rutiny události tak, aby se tato stránka uživatelského rozhraní aktualizovala vždy, kdyžCounterState
služba indikuje, že došlo ke změně čítače.
Služba CounterState.cs
Tato třída definuje službu, která je zaregistrovaná v App.cs
. Obsahuje stav, rozhraní API a události sloužící ke sledování a hlášení stavu čítače. Různé komponenty uživatelského rozhraní v aplikaci používají tuto službu k zobrazení uživatelského rozhraní a vědí, kdy ho aktualizovat.
Další informace o službách a injektáži závislostí najdete v tématu injektáž závislostí.
WebUI/App.razor
vstupní bod webu
Tento soubor je hlavním vstupním bodem Blazoru pro webovou část aplikace. Používá standardní funkce Blazoru, jako je router. Tato komponenta určuje, která webová stránka Blazoru se má zobrazit na základě aktuální trasy (nebo zobrazí chybu, pokud se žádná nenajde).
WebUI/Shared/MainLayout.razor
rozložení webu
Tato komponenta, která je společná pro většinu webových aplikací Blazor, definuje celkové rozložení webové části aplikace. Tady můžete zahrnout běžné prvky, jako je navigace, záhlaví a zápatí, které se používají ve webové části aplikace.
WebUI/Pages/Index.razor
webová stránka
Obsahuje navigovatelnou stránku webového obsahu. Stránka Index
je obvykle výchozí stránkou, která se načte před jakoukoli navigací.
wwwroot
složka statických webových prostředků
Tato složka obsahuje statické webové prostředky používané ve webové části aplikace. To znamená, že tyto soubory jsou obsluhovány tak, jak jsou součástí webového prohlížeče. Odkazuje se na tyto soubory pomocí vzoru statické cesty k souboru Blazoru, který je _content/<PROJECT_NAME>/path/to/the/file.css
. Například v tomto projektu bude soubor CSS umístěný v wwwroot/css/bootstrap/bootstrap.min.css
odkazovat jako _content/FirstBlazorHybridApp/css/bootstrap/bootstrap.min.css
.
Tyto soubory se vloží do aplikace a automaticky je zpracovávají vazby Blazor Mobile. Soubory v této složce lze číst z kódu pomocí IFileProvider
služby a voláním FileProvider.GetFileInfo("_content/<PROJECT_NAME>/path/to/the/file.txt")
příkazu , jak je vidět v souboru aplikace WebUI/Pages/FetchData.razor
.
Tento projekt obsahuje bootstrap knihovnu CSS, která poskytuje styly pro běžné scénáře uživatelského rozhraní.
index.html
soubor v projektech Android/iOS/macOS/Windows
Každý projekt specifický pro platformu index.html
obsahuje soubor, který je stránkou kontejneru webového uživatelského rozhraní Blazor a obsahuje odkazy na soubory CSS.
Umístění souboru na každé platformě je následující:
- Android:
wwwroot/index.html
- Ios:
Resources/wwwroot/index.html
- Macos:
Resources/wwwroot/index.html
- Windows:
wwwroot/index.html
Další soubory
Doporučujeme, abyste prozkoumali všechny soubory v aplikaci, abyste zjistili jejich obsah a způsob interakce.