Hallo Welt ibrida: come funziona?
Importante
Questo progetto è una versione sperimentale. Speriamo di provare le associazioni Sperimentale blazor per dispositivi mobili e fornire feedback all'indirizzo https://github.com/xamarin/MobileBlazorBindings.
Nota
Questa pagina è una continuazione della procedura dettagliata Creare la prima app ibrida . È consigliabile completare la procedura dettagliata prima di continuare.
Suggerimento
Per un esempio più semplice, iniziare con la procedura dettagliata Creare la prima app e la procedura dettagliata Hallo Welt successiva che illustra alcune funzionalità di base di Blazor.
Esaminiamo ora il progetto iniziale creato nella procedura dettagliata precedente per altre informazioni su come usare le associazioni blazor per dispositivi mobili sperimentali per le app ibride.
Il progetto principale da esaminare è il progetto condiviso che contiene i .razor
file. I progetti specifici della piattaforma contengono solo codice minimo specifico per le associazioni Blazor per dispositivi mobili sperimentali.
Questi sono i file e le cartelle rilevanti nel progetto condiviso:
Cartella radice
-
_Imports.razor
- Contiene direttive comuni applicate a tutti gli altri.razor
file in questa cartella e alle relative sottocartelle. Le sottocartelle possono avere i propri_Imports.razor
file con direttive aggiuntive. Il tipo di direttiva più comune in questo file è la@using
direttiva , che viene usata per importare uno spazio dei nomi in.razor
file, esattamente come un'istruzione C#using
. -
App.cs
: contiene il punto di ingresso principale dell'interfaccia utente dell'applicazione, rappresentato da una classe che deriva dallaXamarin.Forms.Application
classe di base. Il costruttore di questa classe crea un'istanza di un host, aggiunge servizi all'host e quindi usa l'host per aggiungere un componente Blazor denominatoMain
alla pagina principale dell'applicazione. -
CounterState.cs
- Contiene un servizio che tiene traccia di un valore del contatore e offre API correlate. Questo servizio viene usato nelle parti native e HTML dell'app. -
Main.razor
- Contiene il componente principale dell'interfaccia utente Blazor dell'app. Contiene un'interfaccia utente nativa e anche unBlazorWebView
componente che ospita la parte HTML dell'app.
Cartelle WebUI e wwwroot
Queste cartelle contengono la web part dell'app, ovvero ciò che rende questa app ibrida. I file e le cartelle qui corrispondono a quanto trovato in un'app Web Blazor.
-
WebUI/_Imports.razor
- Contiene direttive comuni per la web part dell'app. -
WebUI/App.razor
- Contiene il punto di ingresso principale per la web part dell'app. -
WebUI/Pages
folder: contiene pagine navigabili create usando la sintassi Web Blazor. Tutti.razor
i file eseguono il rendering html e condividono lo stato dell'app con il resto dell'app. -
WebUI/Shared
folder: contiene componenti dell'interfaccia utente riutilizzabili condivisi creati con la sintassi Web Blazor. I.razor
file qui eseguono il rendering del codice HTML e vengono usati in altre pagine dell'app. Questa cartella contiene anche ilMainLayout
componente che definisce la forma complessiva della web part dell'app. -
wwwroot
folder: contiene asset Web statici usati nella web part dell'app. Si tratta in genere di file e immagini CSS.
Esaminiamo i file interessanti.
App.cs
punto di ingresso
Il punto di ingresso per l'interfaccia utente dell'app si trova in questa pagina. Configura i servizi per l'app e quindi inizializza l'interfaccia utente collegando un componente Mobile Blazor Bindings all'elemento MainPage
.
Vengono registrati due set di servizi:
-
services.AddBlazorHybrid()
aggiunge i servizi richiesti da Mobile Blazor Bindings per ospitare componenti Web Blazor nell'interfaccia utente nativa. -
services.AddSingleton<CounterState>()
aggiunge un servizio specifico dell'app che può essere usato da qualsiasi posizione dell'applicazione, inclusi file di codice, componenti Blazor e altri servizi. Si tratta di un servizio singleton, il che significa che al massimo verrà creata un'istanza di , consentendo così la condivisione dello stato.
Mer informasjon sui servizi e sull'inserimento delle dipendenze nell'argomento inserimento delle dipendenze.
Main.razor
pagina dell'interfaccia utente nativa
Questa è la pagina principale dell'interfaccia utente nativa dell'app. Contiene diversi componenti nativi dell'interfaccia utente, ad esempio <Label>
e <Button>
. Contiene anche un <BlazorWebView>
componente che ospita il contenuto Web Blazor:
<BlazorWebView VerticalOptions="LayoutOptions.FillAndExpand">
<FirstBlazorHybridApp.WebUI.App />
</BlazorWebView>
Altre cose interessanti:
- Il
<FirstBlazorHybridApp.WebUI.App />
tag è il modo in cui la parte nativa dell'app fa riferimento alla web part dell'app. - La
@inject
direttiva viene usata per fare riferimento alCounterState
servizio. - I
OnInitialized
metodi eDispose
vengono implementati per collegare/scollegare unStateChanged
gestore eventi in modo che questa pagina dell'interfaccia utente venga aggiornata ogni volta che il servizio indica che ilCounterState
contatore è stato modificato.
Servizio CounterState.cs
Questa classe definisce un servizio registrato in App.cs
. Contiene lo stato, le API e gli eventi usati per tenere traccia e segnalare lo stato del contatore. Vari componenti dell'interfaccia utente nell'app usano questo servizio per visualizzare l'interfaccia utente e sapere quando aggiornarlo,
Mer informasjon sui servizi e sull'inserimento delle dipendenze nell'argomento inserimento delle dipendenze.
WebUI/App.razor
punto di ingresso Web
Questo file è il punto di ingresso principale blazor per la web part dell'applicazione. Usa funzionalità Blazor standard, ad esempio router. Questo componente determina la pagina Web Blazor da visualizzare in base alla route corrente o mostra un errore se non viene trovata alcuna pagina Web.
WebUI/Shared/MainLayout.razor
layout Web
Comune alla maggior parte delle app Web Blazor, questo componente definisce il layout complessivo della web part dell'app. Qui è possibile includere elementi comuni, ad esempio navigazione, intestazioni e piè di pagina usati nella web part dell'app.
WebUI/Pages/Index.razor
pagina Web
Contiene una pagina esplorabile di contenuto Web. La Index
pagina è in genere la pagina predefinita caricata prima di qualsiasi navigazione
wwwroot
Cartella degli asset Web statici
Questa cartella contiene asset Web statici usati nella web part dell'app. Ovvero, questi file vengono gestiti così come sono dal componente del Web browser. Viene fatto riferimento usando il modello di percorso del file statico Blazor, ovvero _content/<PROJECT_NAME>/path/to/the/file.css
. In questo progetto, ad esempio, viene fatto riferimento a un file CSS che si trova in wwwroot/css/bootstrap/bootstrap.min.css
come _content/FirstBlazorHybridApp/css/bootstrap/bootstrap.min.css
.
Questi file vengono incorporati nell'applicazione e vengono gestiti automaticamente dalle associazioni Blazor per dispositivi mobili. I file in questa cartella possono essere letti dal codice usando il IFileProvider
servizio e chiamando FileProvider.GetFileInfo("_content/<PROJECT_NAME>/path/to/the/file.txt")
, come illustrato nel file dell'app WebUI/Pages/FetchData.razor
.
Questo progetto contiene la libreria CSS Bootstrap per fornire stili per scenari comuni dell'interfaccia utente.
index.html
file nei progetti Android/iOS/macOS/Windows
Ogni progetto specifico della piattaforma contiene un index.html
file che rappresenta la pagina contenitore per l'interfaccia utente Web Blazor e include riferimenti ai file CSS.
Il percorso del file in ogni piattaforma è il seguente:
- Android:
wwwroot/index.html
- iOS:
Resources/wwwroot/index.html
- macOS:
Resources/wwwroot/index.html
- Windows:
wwwroot/index.html
Altri file
È consigliabile esplorare tutti i file nell'applicazione per apprendere il contenuto e il modo in cui interagiscono.