注意
這不是這篇文章的最新版本。 關於目前版本,請參閱 本文的 .NET 10 版本。
警告
不再支援此版本的 ASP.NET Core。 如需詳細資訊,請參閱 .NET 和 .NET Core 支持原則。 如需目前的版本,請參閱 本文的 .NET 9 版本。
本文說明組成從 Blazor 專案範本所產生 Blazor 應用程式的檔案和資料夾。
Blazor Web App
Blazor Web App 專案範本:blazor
Blazor Web App 專案範本提供單一起點,可使用 Razor 元件 (.razor) 來建置任何樣式的 Web UI,無論是伺服器端轉譯還是用戶端轉譯。 它結合了伺服器端和用戶端轉譯、串流轉譯、增強的導覽和表單處理,Blazor ServerBlazor WebAssembly以及使用或Blazor ServerBlazor WebAssembly每個元件新增互動性的能力。
如果在應用程式建立時同時選取用戶端轉譯 (CSR) 和互動式伺服器端轉譯 (互動式 SSR),專案範本會使用互動式自動轉譯模式。 當 .NET 應用程式套件組合和執行階段下載至瀏覽器時,自動轉譯模式一開始會使用互動式 SSR。 啟動 .NET WebAssembly 執行階段之後,轉譯會切換至 CSR。
Blazor Web App 範本會使用單一專案來啟用靜態和互動式伺服器端轉譯。 如果您也啟用互動式 WebAssembly 轉譯,則專案會包含 WebAssembly 元件的額外用戶端專案 (.Client)。 用戶端專案的建置輸出會下載至瀏覽器,並在用戶端上執行。 使用互動式 WebAssembly 或互動式自動轉譯模式的元件必須位於 .Client 專案中。
.Client 專案的元件資料夾結構與 Blazor Web App 的主要專案資料夾結構不同,因為主要專案是標準 ASP.NET Core 專案。 主要專案必須考慮與 Blazor 無關的 ASP.NET Core 專案的其他資產。 您可以在 .Client 專案中使用想要的任何元件資料夾結構。 您可以視需要鏡像 .Client 專案中主要專案的元件資料夾配置。 請注意,如果您將元件移至與專案範本所使用資料夾不同的資料夾,命名空間可能需要調整配置檔案等資產。
如需元件和轉譯模式的詳細資訊,請參閱 ASP.NET Core Razor 元件和 ASP.NET Core Blazor 轉譯模式文章。
根據應用程式建立時選取的互動式轉譯模式,Layout 資料夾位於 Components 資料夾的伺服器專案或 .Client 專案的根目錄中。 資料夾包含下列配置元件和樣式表:
-
MainLayout元件 (MainLayout.razor) 是應用程式的配置元件。 -
MainLayout.razor.css是用於應用程式主要版面配置,並置於元件旁的樣式表。 -
NavMenu元件 (NavMenu.razor) 會實作提要欄位導覽。 此元件包含NavLink元件 (NavLink),會轉譯其他 Razor 元件的導覽連結。 NavLink 元件會向使用者指出目前顯示哪個元件。 - 是
NavMenu.razor.css應用程式導覽功能表的併置樣式表。 - 元件
ReconnectModal會在UI中反映伺服器端連線狀態,並在應用程式的互動式轉譯模式為「互動式伺服器」或「互動式自動」時包含。如需詳細資訊,請參閱 ASP.NET 核心 BlazorSignalR 指引。 - 這個
ReconnectModal.razor.css是ReconnectModal元件的併置樣式表。 - 這個檔案是
ReconnectModal.razor.js元件的ReconnectModal同一位置 JavaScript 檔案。
-
MainLayout元件 (MainLayout.razor) 是應用程式的配置元件。 -
MainLayout.razor.css是用於應用程式主要版面配置,並置於元件旁的樣式表。 -
NavMenu元件 (NavMenu.razor) 會實作提要欄位導覽。 此元件包含NavLink元件 (NavLink),會轉譯其他 Razor 元件的導覽連結。 NavLink 元件會向使用者指出目前顯示哪個元件。 - 是
NavMenu.razor.css應用程式導覽功能表的併置樣式表。
Routes元件 (Routes.razor) 位於伺服器專案或 .Client 專案中,並使用 Router 元件來設定路由。 針對用戶端互動式元件,Router 元件會攔截瀏覽器瀏覽,並轉譯符合所要求位址的頁面。
伺服器專案的 Components 資料夾會儲存應用程式的伺服器端 Razor 元件。 共用元件通常會放在 Components 資料夾的根目錄,而版面配置和頁面元件通常會放在 Components 資料夾內的資料夾中。
伺服器專案的 Components/Pages 資料夾包含應用程式的可路由伺服器端 Razor 元件。 每個頁面的路由都是使用 @page 指示詞來指定。
App 元件 (App.razor) 是具有 HTML <head> 標記、Routes 元件和 Blazor<script> 標記的應用程式根元件。 根元件是應用程式載入的第一個元件。
每個伺服器和 _Imports.razor 專案中的 .Client 檔案都包含任一專案的 Razor 元件通用的 Razor 指示詞,例如命名空間的 @using 指示詞。
伺服器專案的 Properties 資料夾在 檔案中儲存launchSettings.json。
注意
http 設定檔在 https 檔案中的 launchSettings.json 設定檔之前。 使用 .NET CLI 執行應用程式時,應用程式會在 HTTP 端點執行,因為找到的第一個設定檔是 http。 設定檔順序可簡化採用適用於 Linux 和 macOS 使用者的 HTTPS 轉換。 如果您想要使用 .NET CLI 啟動應用程式,而不需要將 -lp https 或 --launch-profile https 選項傳遞至 dotnet watch (或 dotnet run) 命令,只要將 https 設定檔放置在檔案中的 http 設定檔上方即可。
伺服器專案的 wwwroot 資料夾是保存應用程式公用靜態資產之伺服器專案的 Web 根資料夾。
伺服器專案的 Program.cs 檔案是專案的進入點,可設定 ASP.NET Core Web 應用程式主機,並包含應用程式的啟動邏輯,包括服務註冊、設定、記錄和要求處理管線。
- 藉由呼叫 Razor 來新增 AddRazorComponents 元件的服務。 AddInteractiveServerComponents 會添加服務以支持轉譯互動式伺服器元件。 AddInteractiveWebAssemblyComponents 會新增服務以支援轉譯互動式 WebAssembly 元件。
-
MapRazorComponents 會探索可用的元件,並指定應用程式的根元件 (載入的第一個元件),其預設為
App元件 (App.razor)。 AddInteractiveServerRenderMode 會設定應用程式的互動式伺服器端轉譯 (互動式 SSR)。 AddInteractiveWebAssemblyRenderMode 會設定應用程式的互動式 WebAssembly 轉譯模式。
位於伺服器或 appsettings.Development.json 專案中的應用程式設定檔案 (appsettings.json、.Client) 提供組態設定。 在伺服器專案中,設定檔案位於專案的根目錄中。 在 .Client 專案中,會從 Web 根資料夾 wwwroot 取用設定檔案。
在 .Client 專案中:
Pages資料夾包含可路由用戶端 Razor 元件。 每個頁面的路由都是使用@page指示詞來指定。Program.cs檔案是專案的進入點,可設定 WebAssembly 主機,並包含專案的啟動邏輯,包括服務註冊、設定、記錄和要求處理管線。
當設定其他選項時,其他檔案和資料夾可能會出現在從 Blazor Web App 專案範本產生的應用程式中。 例如,使用 ASP.NET Core Identity 產生應用程式,包括驗證和授權功能的其他資產。
Blazor Server
Blazor Server 專案範本:blazorserver、blazorserver-empty
Blazor Server 範本會建立 Blazor Server 應用程式的初始檔案和目錄結構:
- 如果使用
blazorserver範本,應用程式會填入下列內容:- 從氣象預報服務 (
FetchData) 載入資料的WeatherForecastService元件示範程式碼,以及使用者與Counter元件互動。 - Bootstrap 前端工具組。
- 從氣象預報服務 (
- 如果使用
blazorserver-empty範本,則會在沒有示範程式碼和 Bootstrap 的情況下建立應用程式。
專案結構:
Data資料夾:包含WeatherForecast類別和實作WeatherForecastService,提供應用程式FetchData元件的範例天氣資料。Pages資料夾:包含 Blazor 應用程式的可路由 Razor 元件 (.razor) 和 Razor 應用程式的根 Blazor Server 頁面。 每個頁面的路由都是使用@page指示詞來指定。 範本包含下列項目:-
_Host.cshtml:實作為 Razor Page 的應用程式根頁面:- 一開始要求應用程式的任何頁面時,此頁面會在回應中轉譯並傳回。
- [主機] 頁面會指定轉譯根
App元件 (App.razor) 的位置。
-
Counter元件 (Counter.razor):實作 [計數器] 頁面。 -
Error元件 (Error.razor):在應用程式中發生未處理的例外狀況時轉譯。 -
FetchData元件 (FetchData.razor):實作 [擷取資料] 頁面。 -
Index元件 (Index.razor):實作 Home 頁面。
-
Shared資料夾:包含下列共用元件和樣式表:-
MainLayout元件 (MainLayout.razor):應用程式的配置元件。 -
MainLayout.razor.css:應用程式主要配置的樣式表。 -
NavMenu元件 (NavMenu.razor):實作資訊看板導覽。 包含NavLink元件 (NavLink),此元件會轉譯其他 Razor 元件的導覽連結。 NavLink 元件會在載入其元件時自動指出選取的狀態,這可協助使用者了解目前顯示的元件。 -
NavMenu.razor.css:應用程式的導覽功能表樣式表。 -
SurveyPrompt元件 (SurveyPrompt.razor):Blazor 問卷元件。
-
wwwroot資料夾:應用程式的 Web 根資料夾,當中包含應用程式的公用靜態資產。_Imports.razor:包含要包含在應用程式元件中的通用 Razor 指示詞 (.razor),例如命名空間的@using指示詞。App.razor:使用 Router 元件設定用戶端路由的應用程式根元件。 Router 元件會攔截瀏覽器瀏覽,並轉譯符合所要求位址的頁面。appsettings.json和環境應用程式設定檔案:提供應用程式的組態設定。Program.cs:設定 ASP.NET Core 主機 的應用程式進入點,並包含應用程式的啟動邏輯,包括服務註冊和要求處理管線設定:- 指定應用程式的相依性插入 (DI) 服務。 您可呼叫 AddServerSideBlazor 來新增服務,且
WeatherForecastService會新增至服務容器,以供範例FetchData元件使用。 - 設定應用程式的要求處理管線:
- 會呼叫 MapBlazorHub 來設定與瀏覽器即時連線的端點。 連線是使用 SignalR 所建立,這是將即時 Web 功能新增至應用程式的架構。
- 呼叫
MapFallbackToPage("/_Host")以設定應用程式 (Pages/_Host.cshtml) 的根頁面,並啟用瀏覽。
- 指定應用程式的相依性插入 (DI) 服務。 您可呼叫 AddServerSideBlazor 來新增服務,且
當設定其他選項時,其他檔案和資料夾可能會出現在從 Blazor Server 專案範本產生的應用程式中。 例如,使用 ASP.NET Core Identity 產生應用程式,包括驗證和授權功能的其他資產。
Blazor Server 專案範本:blazorserver
範本 Blazor Server 會建立 Blazor Server 應用程式的初始檔案和目錄結構。 應用程式會填入 FetchData 元件的示範程式碼,該元件會從已註冊的服務、WeatherForecastService 以及使用者與 Counter 元件互動來載入資料。
Data資料夾:包含WeatherForecast類別和實作WeatherForecastService,提供應用程式FetchData元件的範例天氣資料。Pages資料夾:包含 Blazor 應用程式的可路由 Razor 元件 (.razor) 和 Razor 應用程式的根 Blazor Server 頁面。 每個頁面的路由都是使用@page指示詞來指定。 範本包含下列項目:-
_Host.cshtml:實作為 Razor Page 的應用程式根頁面:- 一開始要求應用程式的任何頁面時,此頁面會在回應中轉譯並傳回。
- [主機] 頁面會指定轉譯根
App元件 (App.razor) 的位置。
-
_Layout.cshtml:應用程式的_Host.cshtml根頁面的配置頁面。 -
Counter元件 (Counter.razor):實作 [計數器] 頁面。 -
Error元件 (Error.razor):在應用程式中發生未處理的例外狀況時轉譯。 -
FetchData元件 (FetchData.razor):實作 [擷取資料] 頁面。 -
Index元件 (Index.razor):實作 Home 頁面。
-
Shared資料夾:包含下列共用元件和樣式表:-
MainLayout元件 (MainLayout.razor):應用程式的配置元件。 -
MainLayout.razor.css:應用程式主要配置的樣式表。 -
NavMenu元件 (NavMenu.razor):實作資訊看板導覽。 包含NavLink元件 (NavLink),此元件會轉譯其他 Razor 元件的導覽連結。 NavLink 元件會在載入其元件時自動指出選取的狀態,這可協助使用者了解目前顯示的元件。 -
NavMenu.razor.css:應用程式的導覽功能表樣式表。 -
SurveyPrompt元件 (SurveyPrompt.razor):Blazor 問卷元件。
-
wwwroot資料夾:應用程式的 Web 根資料夾,當中包含應用程式的公用靜態資產。_Imports.razor:包含要包含在應用程式元件中的通用 Razor 指示詞 (.razor),例如命名空間的@using指示詞。App.razor:使用 Router 元件設定用戶端路由的應用程式根元件。 Router 元件會攔截瀏覽器瀏覽,並轉譯符合所要求位址的頁面。appsettings.json和環境應用程式設定檔案:提供應用程式的組態設定。Program.cs:設定 ASP.NET Core 主機 的應用程式進入點,並包含應用程式的啟動邏輯,包括服務註冊和要求處理管線設定:- 指定應用程式的相依性插入 (DI) 服務。 您可呼叫 AddServerSideBlazor 來新增服務,且
WeatherForecastService會新增至服務容器,以供範例FetchData元件使用。 - 設定應用程式的要求處理管線:
- 會呼叫 MapBlazorHub 來設定與瀏覽器即時連線的端點。 連線是使用 SignalR 所建立,這是將即時 Web 功能新增至應用程式的架構。
- 呼叫
MapFallbackToPage("/_Host")以設定應用程式 (Pages/_Host.cshtml) 的根頁面,並啟用瀏覽。
- 指定應用程式的相依性插入 (DI) 服務。 您可呼叫 AddServerSideBlazor 來新增服務,且
當設定其他選項時,其他檔案和資料夾可能會出現在從 Blazor Server 專案範本產生的應用程式中。 例如,使用 ASP.NET Core Identity 產生應用程式,包括驗證和授權功能的其他資產。
Blazor Server 專案範本:blazorserver
範本 Blazor Server 會建立 Blazor Server 應用程式的初始檔案和目錄結構。 應用程式會填入 FetchData 元件的示範程式碼,該元件會從已註冊的服務、WeatherForecastService 以及使用者與 Counter 元件互動來載入資料。
Data資料夾:包含WeatherForecast類別和實作WeatherForecastService,提供應用程式FetchData元件的範例天氣資料。Pages資料夾:包含 Blazor 應用程式的可路由 Razor 元件 (.razor) 和 Razor 應用程式的根 Blazor Server 頁面。 每個頁面的路由都是使用@page指示詞來指定。 範本包含下列項目:-
_Host.cshtml:實作為 Razor Page 的應用程式根頁面:- 一開始要求應用程式的任何頁面時,此頁面會在回應中轉譯並傳回。
- [主機] 頁面會指定轉譯根
App元件 (App.razor) 的位置。
-
Counter元件 (Counter.razor):實作 [計數器] 頁面。 -
Error元件 (Error.razor):在應用程式中發生未處理的例外狀況時轉譯。 -
FetchData元件 (FetchData.razor):實作 [擷取資料] 頁面。 -
Index元件 (Index.razor):實作 Home 頁面。
-
Shared資料夾:包含下列共用元件和樣式表:-
MainLayout元件 (MainLayout.razor):應用程式的配置元件。 -
MainLayout.razor.css:應用程式主要配置的樣式表。 -
NavMenu元件 (NavMenu.razor):實作資訊看板導覽。 包含NavLink元件 (NavLink),此元件會轉譯其他 Razor 元件的導覽連結。 NavLink 元件會在載入其元件時自動指出選取的狀態,這可協助使用者了解目前顯示的元件。 -
NavMenu.razor.css:應用程式的導覽功能表樣式表。 -
SurveyPrompt元件 (SurveyPrompt.razor):Blazor 問卷元件。
-
wwwroot資料夾:應用程式的 Web 根資料夾,當中包含應用程式的公用靜態資產。_Imports.razor:包含要包含在應用程式元件中的通用 Razor 指示詞 (.razor),例如命名空間的@using指示詞。App.razor:使用 Router 元件設定用戶端路由的應用程式根元件。 Router 元件會攔截瀏覽器瀏覽,並轉譯符合所要求位址的頁面。appsettings.json和環境應用程式設定檔案:提供應用程式的組態設定。Program.cs:設定 ASP.NET Core 主機的應用程式進入點。Startup.cs:包含應用程式的啟動邏輯。Startup類別會定義兩種方法:-
ConfigureServices:指定應用程式的相依性插入 (DI) 服務。 您可呼叫 AddServerSideBlazor 來新增服務,且WeatherForecastService會新增至服務容器,以供範例FetchData元件使用。 -
Configure:設定應用程式的要求處理管線:- 會呼叫 MapBlazorHub 來設定與瀏覽器即時連線的端點。 連線是使用 SignalR 所建立,這是將即時 Web 功能新增至應用程式的架構。
- 呼叫
MapFallbackToPage("/_Host")以設定應用程式 (Pages/_Host.cshtml) 的根頁面,並啟用瀏覽。
-
當設定其他選項時,其他檔案和資料夾可能會出現在從 Blazor Server 專案範本產生的應用程式中。 例如,使用 ASP.NET Core Identity 產生應用程式,包括驗證和授權功能的其他資產。
Blazor Server 專案範本:blazorserver
範本 Blazor Server 會建立 Blazor Server 應用程式的初始檔案和目錄結構。 應用程式會填入 FetchData 元件的示範程式碼,該元件會從已註冊的服務、WeatherForecastService 以及使用者與 Counter 元件互動來載入資料。
Data資料夾:包含WeatherForecast類別和實作WeatherForecastService,提供應用程式FetchData元件的範例天氣資料。Pages資料夾:包含 Blazor 應用程式的可路由 Razor 元件 (.razor) 和 Razor 應用程式的根 Blazor Server 頁面。 每個頁面的路由都是使用@page指示詞來指定。 範本包含下列項目:-
_Host.cshtml:實作為 Razor Page 的應用程式根頁面:- 一開始要求應用程式的任何頁面時,此頁面會在回應中轉譯並傳回。
- [主機] 頁面會指定轉譯根
App元件 (App.razor) 的位置。
-
Counter元件 (Counter.razor):實作 [計數器] 頁面。 -
Error元件 (Error.razor):在應用程式中發生未處理的例外狀況時轉譯。 -
FetchData元件 (FetchData.razor):實作 [擷取資料] 頁面。 -
Index元件 (Index.razor):實作 Home 頁面。
-
Shared資料夾:包含下列共用元件:-
MainLayout元件 (MainLayout.razor):應用程式的配置元件。 -
NavMenu元件 (NavMenu.razor):實作資訊看板導覽。 包含NavLink元件 (NavLink),此元件會轉譯其他 Razor 元件的導覽連結。 NavLink 元件會在載入其元件時自動指出選取的狀態,這可協助使用者了解目前顯示的元件。 -
SurveyPrompt元件 (SurveyPrompt.razor):Blazor 問卷元件。
-
wwwroot資料夾:應用程式的 Web 根資料夾,當中包含應用程式的公用靜態資產。_Imports.razor:包含要包含在應用程式元件中的通用 Razor 指示詞 (.razor),例如命名空間的@using指示詞。App.razor:使用 Router 元件設定用戶端路由的應用程式根元件。 Router 元件會攔截瀏覽器瀏覽,並轉譯符合所要求位址的頁面。appsettings.json和環境應用程式設定檔案:提供應用程式的組態設定。Program.cs:設定 ASP.NET Core 主機的應用程式進入點。Startup.cs:包含應用程式的啟動邏輯。Startup類別會定義兩種方法:-
ConfigureServices:指定應用程式的相依性插入 (DI) 服務。 您可呼叫 AddServerSideBlazor 來新增服務,且WeatherForecastService會新增至服務容器,以供範例FetchData元件使用。 -
Configure:設定應用程式的要求處理管線:- 會呼叫 MapBlazorHub 來設定與瀏覽器即時連線的端點。 連線是使用 SignalR 所建立,這是將即時 Web 功能新增至應用程式的架構。
- 呼叫
MapFallbackToPage("/_Host")以設定應用程式 (Pages/_Host.cshtml) 的根頁面,並啟用瀏覽。
-
當設定其他選項時,其他檔案和資料夾可能會出現在從 Blazor Server 專案範本產生的應用程式中。 例如,使用 ASP.NET Core Identity 產生應用程式,包括驗證和授權功能的其他資產。
獨立 Blazor WebAssembly
獨立 Blazor WebAssembly 專案範本:blazorwasm
Blazor WebAssembly 範本會建立獨立 Blazor WebAssembly 應用程式的初始檔案和目錄結構:
- 如果使用
blazorwasm範本,應用程式會填入下列內容:- 從靜態資產 (
Weather) 載入資料的weather.json元件示範程式碼,以及使用者與Counter元件互動。 - Bootstrap 前端工具組。
- 從靜態資產 (
- 也可以產生
blazorwasm範本,而不需要範例頁面和樣式。
專案結構:
-
Layout資料夾:包含以下版面元件與樣式表:-
MainLayout元件 (MainLayout.razor):應用程式的配置元件。 -
MainLayout.razor.css:應用程式主要配置的樣式表。 -
NavMenu元件 (NavMenu.razor):實作資訊看板導覽。 包含NavLink元件 (NavLink),此元件會轉譯其他 Razor 元件的導覽連結。 NavLink 元件會在載入其元件時自動指出選取的狀態,這可協助使用者了解目前顯示的元件。 -
NavMenu.razor.css:應用程式的導覽功能表樣式表。
-
-
Pages資料夾:包含 Blazor 應用程式的可路由 Razor 元件 (.razor)。 每個頁面的路由都是使用@page指示詞來指定。 該範本包含以下組件:-
Counter元件 (Counter.razor):實作 [計數器] 頁面。 -
Index元件 (Index.razor):實作 Home 頁面。 -
Weather元件 (Weather.razor):實作 [天氣] 頁面。
-
_Imports.razor:包含要包含在應用程式元件中的通用 Razor 指示詞 (.razor),例如命名空間的@using指示詞。App.razor:使用 Router 元件設定用戶端路由的應用程式根元件。 Router 元件會攔截瀏覽器瀏覽,並轉譯符合所要求位址的頁面。Properties資料夾:保存 檔案中的launchSettings.json。注意
http設定檔在https檔案中的launchSettings.json設定檔之前。 使用 .NET CLI 執行應用程式時,應用程式會在 HTTP 端點執行,因為找到的第一個設定檔是http。 設定檔順序可簡化採用適用於 Linux 和 macOS 使用者的 HTTPS 轉換。 如果您想要使用 .NET CLI 啟動應用程式,而不需要將-lp https或--launch-profile https選項傳遞至dotnet watch(或dotnet run) 命令,只要將https設定檔放置在檔案中的http設定檔上方即可。wwwroot資料夾:包含應用程式公用靜態資產的應用程式 Web 根資料夾,包括appsettings.json和範例天氣資料 () 的sample-data/weather.json和環境應用程式設定檔案。index.html網頁是實作為 HTML 頁面的應用程式根頁面:- 一開始要求應用程式的任何頁面時,此頁面會在回應中轉譯並傳回。
- 頁面會指定轉譯根
App元件的位置。 元件會轉譯在divDOM 元素的位置,且具有id的app(<div id="app">Loading...</div>)。
Program.cs:設定 WebAssembly 主機的應用程式進入點:-
App元件是應用程式的根元件。App元件會指定為divDOM 元素,且其具有id的app(<div id="app">Loading...</div>中的wwwroot/index.html),且位於根元件集合 (builder.RootComponents.Add<App>("#app"))。 - 會新增並設定服務 (例如,
builder.Services.AddSingleton<IMyDependency, MyDependency>())。
-
當設定其他選項時,其他檔案和資料夾可能會出現在從 Blazor WebAssembly 專案範本產生的應用程式中。 例如,使用 ASP.NET Core Identity 產生應用程式,包括驗證和授權功能的其他資產。
Blazor WebAssembly
Blazor WebAssembly 專案範本:blazorwasm、blazorwasm-empty
Blazor WebAssembly 範本會建立 Blazor WebAssembly 應用程式的初始檔案和目錄結構:
- 如果使用
blazorwasm範本,應用程式會填入下列內容:- 從靜態資產 (
FetchData) 載入資料的weather.json元件示範程式碼,以及使用者與Counter元件互動。 - Bootstrap 前端工具組。
- 從靜態資產 (
- 如果使用
blazorwasm-empty範本,則會在沒有示範程式碼和 Bootstrap 的情況下建立應用程式。
專案結構:
Pages資料夾:包含 Blazor 應用程式的可路由 Razor 元件 (.razor)。 每個頁面的路由都是使用@page指示詞來指定。 範本包括下列元件:-
Counter元件 (Counter.razor):實作 [計數器] 頁面。 -
FetchData元件 (FetchData.razor):實作 [擷取資料] 頁面。 -
Index元件 (Index.razor):實作 Home 頁面。
-
Shared資料夾:包含下列共用元件和樣式表:-
MainLayout元件 (MainLayout.razor):應用程式的配置元件。 -
MainLayout.razor.css:應用程式主要配置的樣式表。 -
NavMenu元件 (NavMenu.razor):實作資訊看板導覽。 包含NavLink元件 (NavLink),此元件會轉譯其他 Razor 元件的導覽連結。 NavLink 元件會在載入其元件時自動指出選取的狀態,這可協助使用者了解目前顯示的元件。 -
NavMenu.razor.css:應用程式的導覽功能表樣式表。 -
SurveyPrompt元件 (SurveyPrompt.razor) (.NET 7 或更早版本的 ASP.NET Core):Blazor 問卷元件。
-
wwwroot資料夾:包含應用程式公用靜態資產的應用程式 Web 根資料夾,包括appsettings.json的 和環境應用程式設定檔案。index.html網頁是實作為 HTML 頁面的應用程式根頁面:- 一開始要求應用程式的任何頁面時,此頁面會在回應中轉譯並傳回。
- 頁面會指定轉譯根
App元件的位置。 元件會轉譯在divDOM 元素的位置,且具有id的app(<div id="app">Loading...</div>)。
_Imports.razor:包含要包含在應用程式元件中的通用 Razor 指示詞 (.razor),例如命名空間的@using指示詞。App.razor:使用 Router 元件設定用戶端路由的應用程式根元件。 Router 元件會攔截瀏覽器瀏覽,並轉譯符合所要求位址的頁面。Program.cs:設定 WebAssembly 主機的應用程式進入點:-
App元件是應用程式的根元件。App元件會指定為divDOM 元素,且其具有id的app(<div id="app">Loading...</div>中的wwwroot/index.html),且位於根元件集合 (builder.RootComponents.Add<App>("#app"))。 - 會新增並設定服務 (例如,
builder.Services.AddSingleton<IMyDependency, MyDependency>())。
-
當設定其他選項時,其他檔案和資料夾可能會出現在從 Blazor WebAssembly 專案範本產生的應用程式中。 例如,使用 ASP.NET Core Identity 產生應用程式,包括驗證和授權功能的其他資產。
裝載的 Blazor WebAssembly 解決方案包含下列 ASP.NET Core 專案:
- 「Client」:Blazor WebAssembly 應用程式。
- 「Server」:提供 Blazor WebAssembly 應用程式和天氣資料給用戶端的應用程式。
- 「Shared」:維護一般類別、方法和資源的專案。
解決方案是從 Visual Studio 中的 Blazor WebAssembly 專案範本產生,並已選取 [ASP.NET Core 託管] 核取方塊,或使用 .NET CLI 的 -ho|--hosted 命令搭配 dotnet new blazorwasm 選項。 如需詳細資訊,請參閱 ASP.NET Core Blazor 工具。
託管 Blazor Webassembly 解決方案 (「Client」專案) 中用戶端應用程式的專案結構與獨立 Blazor WebAssembly 應用程式的專案結構相同。 託管 Blazor WebAssembly 解決方案中的其他檔案:
- 「Server」專案包含的氣象預報控制站
Controllers/WeatherForecastController.cs,會將天氣資料傳回「Client」專案的FetchData元件。 - 「Shared」專案包含的天氣預報類別
WeatherForecast.cs,代表「Client」和「Server」專案的天氣資料。
Blazor WebAssembly
Blazor WebAssembly 專案範本:blazorwasm
範本 Blazor WebAssembly 會建立 Blazor WebAssembly 應用程式的初始檔案和目錄結構。 應用程式會填入 FetchData 元件的示範程式碼,該元件會從靜態資產、weather.json 以及使用者與 Counter 元件互動來載入資料。
Pages資料夾:包含 Blazor 應用程式的可路由 Razor 元件 (.razor)。 每個頁面的路由都是使用@page指示詞來指定。 範本包括下列元件:-
Counter元件 (Counter.razor):實作 [計數器] 頁面。 -
FetchData元件 (FetchData.razor):實作 [擷取資料] 頁面。 -
Index元件 (Index.razor):實作 Home 頁面。
-
Shared資料夾:包含下列共用元件和樣式表:-
MainLayout元件 (MainLayout.razor):應用程式的配置元件。 -
MainLayout.razor.css:應用程式主要配置的樣式表。 -
NavMenu元件 (NavMenu.razor):實作資訊看板導覽。 包含NavLink元件 (NavLink),此元件會轉譯其他 Razor 元件的導覽連結。 NavLink 元件會在載入其元件時自動指出選取的狀態,這可協助使用者了解目前顯示的元件。 -
NavMenu.razor.css:應用程式的導覽功能表樣式表。 -
SurveyPrompt元件 (SurveyPrompt.razor):Blazor 問卷元件。
-
wwwroot資料夾:包含應用程式公用靜態資產的應用程式 Web 根資料夾,包括appsettings.json的 和環境應用程式設定檔案。index.html網頁是實作為 HTML 頁面的應用程式根頁面:- 一開始要求應用程式的任何頁面時,此頁面會在回應中轉譯並傳回。
- 頁面會指定轉譯根
App元件的位置。 元件會轉譯在divDOM 元素的位置,且具有id的app(<div id="app">Loading...</div>)。
_Imports.razor:包含要包含在應用程式元件中的通用 Razor 指示詞 (.razor),例如命名空間的@using指示詞。App.razor:使用 Router 元件設定用戶端路由的應用程式根元件。 Router 元件會攔截瀏覽器瀏覽,並轉譯符合所要求位址的頁面。Program.cs:設定 WebAssembly 主機的應用程式進入點:-
App元件是應用程式的根元件。App元件會指定為divDOM 元素,且其具有id的app(<div id="app">Loading...</div>中的wwwroot/index.html),且位於根元件集合 (builder.RootComponents.Add<App>("#app"))。 - 會新增並設定服務 (例如,
builder.Services.AddSingleton<IMyDependency, MyDependency>())。
-
當設定其他選項時,其他檔案和資料夾可能會出現在從 Blazor WebAssembly 專案範本產生的應用程式中。 例如,使用 ASP.NET Core Identity 產生應用程式,包括驗證和授權功能的其他資產。
裝載的 Blazor WebAssembly 解決方案包含下列 ASP.NET Core 專案:
- 「Client」:Blazor WebAssembly 應用程式。
- 「Server」:提供 Blazor WebAssembly 應用程式和天氣資料給用戶端的應用程式。
- 「Shared」:維護一般類別、方法和資源的專案。
解決方案是從 Visual Studio 中的 Blazor WebAssembly 專案範本產生,並已選取 [ASP.NET Core 託管] 核取方塊,或使用 .NET CLI 的 -ho|--hosted 命令搭配 dotnet new blazorwasm 選項。 如需詳細資訊,請參閱 ASP.NET Core Blazor 工具。
託管 Blazor Webassembly 解決方案 (「Client」專案) 中用戶端應用程式的專案結構與獨立 Blazor WebAssembly 應用程式的專案結構相同。 託管 Blazor WebAssembly 解決方案中的其他檔案:
- 「Server」專案包含的氣象預報控制站
Controllers/WeatherForecastController.cs,會將天氣資料傳回「Client」專案的FetchData元件。 - 「Shared」專案包含的天氣預報類別
WeatherForecast.cs,代表「Client」和「Server」專案的天氣資料。
Blazor WebAssembly
Blazor WebAssembly 專案範本:blazorwasm
範本 Blazor WebAssembly 會建立 Blazor WebAssembly 應用程式的初始檔案和目錄結構。 應用程式會填入 FetchData 元件的示範程式碼,該元件會從靜態資產、weather.json 以及使用者與 Counter 元件互動來載入資料。
Pages資料夾:包含 Blazor 應用程式的可路由 Razor 元件 (.razor)。 每個頁面的路由都是使用@page指示詞來指定。 範本包括下列元件:-
Counter元件 (Counter.razor):實作 [計數器] 頁面。 -
FetchData元件 (FetchData.razor):實作 [擷取資料] 頁面。 -
Index元件 (Index.razor):實作 Home 頁面。
-
Shared資料夾:包含下列共用元件和樣式表:-
MainLayout元件 (MainLayout.razor):應用程式的配置元件。 -
MainLayout.razor.css:應用程式主要配置的樣式表。 -
NavMenu元件 (NavMenu.razor):實作資訊看板導覽。 包含NavLink元件 (NavLink),此元件會轉譯其他 Razor 元件的導覽連結。 NavLink 元件會在載入其元件時自動指出選取的狀態,這可協助使用者了解目前顯示的元件。 -
NavMenu.razor.css:應用程式的導覽功能表樣式表。 -
SurveyPrompt元件 (SurveyPrompt.razor):Blazor 問卷元件。
-
wwwroot資料夾:包含應用程式公用靜態資產的應用程式 Web 根資料夾,包括appsettings.json的 和環境應用程式設定檔案。index.html網頁是實作為 HTML 頁面的應用程式根頁面:- 一開始要求應用程式的任何頁面時,此頁面會在回應中轉譯並傳回。
- 頁面會指定轉譯根
App元件的位置。 元件會轉譯在divDOM 元素的位置,且具有id的app(<div id="app">Loading...</div>)。
_Imports.razor:包含要包含在應用程式元件中的通用 Razor 指示詞 (.razor),例如命名空間的@using指示詞。App.razor:使用 Router 元件設定用戶端路由的應用程式根元件。 Router 元件會攔截瀏覽器瀏覽,並轉譯符合所要求位址的頁面。Program.cs:設定 WebAssembly 主機的應用程式進入點:-
App元件是應用程式的根元件。App元件會指定為divDOM 元素,且其具有id的app(<div id="app">Loading...</div>中的wwwroot/index.html),且位於根元件集合 (builder.RootComponents.Add<App>("#app"))。 - 會新增並設定服務 (例如,
builder.Services.AddSingleton<IMyDependency, MyDependency>())。
-
當設定其他選項時,其他檔案和資料夾可能會出現在從 Blazor WebAssembly 專案範本產生的應用程式中。 例如,使用 ASP.NET Core Identity 產生應用程式,包括驗證和授權功能的其他資產。
裝載的 Blazor WebAssembly 解決方案包含下列 ASP.NET Core 專案:
- 「Client」:Blazor WebAssembly 應用程式。
- 「Server」:提供 Blazor WebAssembly 應用程式和天氣資料給用戶端的應用程式。
- 「Shared」:維護一般類別、方法和資源的專案。
解決方案是從 Visual Studio 中的 Blazor WebAssembly 專案範本產生,並已選取 [ASP.NET Core 託管] 核取方塊,或使用 .NET CLI 的 -ho|--hosted 命令搭配 dotnet new blazorwasm 選項。 如需詳細資訊,請參閱 ASP.NET Core Blazor 工具。
託管 Blazor Webassembly 解決方案 (「Client」專案) 中用戶端應用程式的專案結構與獨立 Blazor WebAssembly 應用程式的專案結構相同。 託管 Blazor WebAssembly 解決方案中的其他檔案:
- 「Server」專案包含的氣象預報控制站
Controllers/WeatherForecastController.cs,會將天氣資料傳回「Client」專案的FetchData元件。 - 「Shared」專案包含的天氣預報類別
WeatherForecast.cs,代表「Client」和「Server」專案的天氣資料。
Blazor WebAssembly
Blazor WebAssembly 專案範本:blazorwasm
範本 Blazor WebAssembly 會建立 Blazor WebAssembly 應用程式的初始檔案和目錄結構。 應用程式會填入 FetchData 元件的示範程式碼,該元件會從靜態資產、weather.json 以及使用者與 Counter 元件互動來載入資料。
Pages資料夾:包含 Blazor 應用程式的可路由 Razor 元件 (.razor)。 每個頁面的路由都是使用@page指示詞來指定。 範本包括下列元件:-
Counter元件 (Counter.razor):實作 [計數器] 頁面。 -
FetchData元件 (FetchData.razor):實作 [擷取資料] 頁面。 -
Index元件 (Index.razor):實作 Home 頁面。
-
Shared資料夾:包含下列共用元件:-
MainLayout元件 (MainLayout.razor):應用程式的配置元件。 -
NavMenu元件 (NavMenu.razor):實作資訊看板導覽。 包含NavLink元件 (NavLink),此元件會轉譯其他 Razor 元件的導覽連結。 NavLink 元件會在載入其元件時自動指出選取的狀態,這可協助使用者了解目前顯示的元件。 -
SurveyPrompt元件 (SurveyPrompt.razor):Blazor 問卷元件。
-
wwwroot資料夾:包含應用程式公用靜態資產的應用程式 Web 根資料夾,包括appsettings.json的 和環境應用程式設定檔案。index.html網頁是實作為 HTML 頁面的應用程式根頁面:- 一開始要求應用程式的任何頁面時,此頁面會在回應中轉譯並傳回。
- 頁面會指定轉譯根
App元件的位置。 元件會在appDOM 元素 (<app>Loading...</app>) 的位置轉譯。
_Imports.razor:包含要包含在應用程式元件中的通用 Razor 指示詞 (.razor),例如命名空間的@using指示詞。App.razor:使用 Router 元件設定用戶端路由的應用程式根元件。 Router 元件會攔截瀏覽器瀏覽,並轉譯符合所要求位址的頁面。Program.cs:設定 WebAssembly 主機的應用程式進入點:-
App元件是應用程式的根元件。App元件會指定為appDOM 元素,(<app>Loading...</app>中的wwwroot/index.html),且位於根元件集合 (builder.RootComponents.Add<App>("app"))。 - 會新增並設定服務 (例如,
builder.Services.AddSingleton<IMyDependency, MyDependency>())。
-
當設定其他選項時,其他檔案和資料夾可能會出現在從 Blazor WebAssembly 專案範本產生的應用程式中。 例如,使用 ASP.NET Core Identity 產生應用程式,包括驗證和授權功能的其他資產。
裝載的 Blazor WebAssembly 解決方案包含下列 ASP.NET Core 專案:
- 「Client」:Blazor WebAssembly 應用程式。
- 「Server」:提供 Blazor WebAssembly 應用程式和天氣資料給用戶端的應用程式。
- 「Shared」:維護一般類別、方法和資源的專案。
解決方案是從 Visual Studio 中的 Blazor WebAssembly 專案範本產生,並已選取 [ASP.NET Core 託管] 核取方塊,或使用 .NET CLI 的 -ho|--hosted 命令搭配 dotnet new blazorwasm 選項。 如需詳細資訊,請參閱 ASP.NET Core Blazor 工具。
託管 Blazor Webassembly 解決方案 (「Client」專案) 中用戶端應用程式的專案結構與獨立 Blazor WebAssembly 應用程式的專案結構相同。 託管 Blazor WebAssembly 解決方案中的其他檔案:
- 「Server」專案包含的氣象預報控制站
Controllers/WeatherForecastController.cs,會將天氣資料傳回「Client」專案的FetchData元件。 - 「Shared」專案包含的天氣預報類別
WeatherForecast.cs,代表「Client」和「Server」專案的天氣資料。
Blazor 指令碼的位置
Blazor 腳本可作為具有自動壓縮和指紋功能的靜態 Web 資產。 如需詳細資訊,請參閱 ASP.NET Core Blazor 靜態檔案。
在 Blazor Web App 中,Blazor 指令碼位於 Components/App.razor 檔案中:
<script src="@Assets["_framework/blazor.web.js"]"></script>
在 Blazor Server 應用程式中,Blazor 指令碼位於 Pages/_Host.cshtml 檔案中:
<script src="_framework/blazor.server.js"></script>
Blazor 指令碼會從 ASP.NET Core 共用架構中的內嵌資源提供。
在 Blazor Web App 中,Blazor 指令碼位於 Components/App.razor 檔案中:
<script src="_framework/blazor.web.js"></script>
在 Blazor Server 應用程式中,Blazor 指令碼位於 Pages/_Host.cshtml 檔案中:
<script src="_framework/blazor.server.js"></script>
Blazor 指令碼會從 ASP.NET Core 共用架構中的內嵌資源提供。
在 Blazor Server 應用程式中,Blazor 指令碼位於 Pages/_Host.cshtml 檔案中:
<script src="_framework/blazor.server.js"></script>
Blazor 指令碼會從 ASP.NET Core 共用架構中的內嵌資源提供。
在 Blazor Server 應用程式中,Blazor 指令碼位於 Pages/_Layout.cshtml 檔案中:
<script src="_framework/blazor.server.js"></script>
Blazor 指令碼會從 ASP.NET Core 共用架構中的內嵌資源提供。
在 Blazor Server 應用程式中,Blazor 指令碼位於 Pages/_Host.cshtml 檔案中:
<script src="_framework/blazor.server.js"></script>
對於應用程式 Blazor Web App 或 Blazor Server 應用程式,專案必須至少包含一個 Razor 元件檔案 (.razor),才能在發佈應用程式時自動包含 Blazor 指令碼。 如果專案不包含至少一個 Razor 元件,請在應用程式的專案檔案中將 MSBuild 屬性設定 RequiresAspNetWebAssets 為 , true 以包含 Blazor 腳本:
<RequiresAspNetWebAssets>true</RequiresAspNetWebAssets>
在 Blazor WebAssembly 應用程式中,Blazor 指令碼内容位於 wwwroot/index.html 檔案中:
<script src="_framework/blazor.webassembly#[.{fingerprint}].js"></script>
發佈應用程式時, {fingerprint} 預留位置會自動取代為唯一的雜湊值,以解除快取。
<script src="_framework/blazor.webassembly.js"></script>
<head> 和 <body> 內容的位置
在 Blazor Web App 中,<head> 和 <body> 內容位於 Components/App.razor 檔案中。
在 Blazor Server 應用程式中,<head> 和 <body> 內容位於 Pages/_Host.cshtml 檔案中。
在 Blazor Server 應用程式中,<head> 和 <body> 內容位於 Pages/_Layout.cshtml 檔案中。
在 Blazor Server 應用程式中,<head> 和 <body> 內容位於 Pages/_Host.cshtml 檔案中。
在 Blazor WebAssembly 應用程式中,<head> 和 <body> 內容位於 wwwroot/index.html 檔案中。
雙重 Blazor Server/Blazor WebAssembly 應用程式
若要建立可執行為 Blazor Server 應用程式或 Blazor WebAssembly 應用程式的應用程式,其中一種方法是將所有應用程式邏輯和元件放入 Razor 類別庫 (RCL) 並從個別 Blazor Server 和 Blazor WebAssembly 專案參考 RCL。 對於實作會根據裝載模型而有所不同的常見服務,請在 RCL 中定義服務介面,並在 Blazor Server 和 Blazor WebAssembly 專案中實作服務。