Blazor 框架是什麼(開發者的工作原理教程)
Blazor 是 Microsoft 早在 2018 年推出的 ASP.NET Framework。Blazor 框架的推出具有一定的優勢,因為它允許開發人員使用 C# 而不是 JavaScript 創建單頁 Web 應用程式。
Blazor 可讓您使用 C# 建立互動式 Web UI,並透過 WebAssembly(簡稱 Wasm)在瀏覽器中執行。 Blazor 應用程式是由使用 C#、HTML 與 CSS 實作的可重複使用網頁 UI 元件所組成。 用戶端和伺服器程式碼均以 C# 寫成,讓您可以共用程式碼和庫。
Blazor 可使用 WebAssembly 直接在瀏覽器中執行您的客戶端 C# 程式碼。 因為是在 WebAssembly 上執行的 .NET,所以您可以重複使用應用程式伺服器端部分的程式碼和庫。
另外,Blazor 也可以在伺服器上執行您的用戶端邏輯。 用戶端 UI 事件會使用 SignalR(即時訊息傳輸框架)傳送回伺服器。 執行完成後,所需的 UI 變更會傳送到客戶端,並合併到文件物件模型 (DOM)。
什麼是 WebAssembly?
Blazor WebAssembly 是一個單頁應用程式 (SPA) 框架,用於使用 .NET 建立互動式客戶端網頁應用程式。 Blazor WebAssembly 採用開放式網頁標準,開發時不需外掛或重新編譯程式碼成其他語言。 Blazor WebAssembly 可在所有現代網路瀏覽器上運作。
WebAssembly 使在 Web 瀏覽器中執行 .NET 程式碼成為可能。 WebAssembly 是一種精簡的 bytecode 格式,已針對快速下載和最高執行速度進行最佳化。 WebAssembly 是一種開放的網路標準,無需外掛程式即可在網路瀏覽器中支援。
WebAssembly 程式碼可以透過 JavaScript 存取瀏覽器的全部功能。 稱為 JavaScript Interoperability,通常簡稱為 JavaScript interop 或 JS interop。 透過 WebAssembly 執行的 .NET 程式碼會在瀏覽器的 JavaScript 沙箱中執行,並享有沙箱提供的保護,以防止客戶端機器上的惡意動作。
建立原生應用程式
我們可以使用現有的 Blazor Web UI 元件與 Blazor Hybrid 建立原生客戶端應用程式。 Blazor 元件可在行動裝置、桌上型電腦和網頁上共用,同時充分利用原生用戶端功能。 我們可以使用 Blazor Hybrid 以 .NET Multi-platform App UI (MAUI) 建立跨平台應用程式,或是將現有的 Windows Presentation Foundation (WPF) 和 Windows Forms 應用程式現代化。
在Blazor Hybrid應用程式中,Razor元件可在裝置上原生執行。元件透過本機互操作通道渲染至嵌入式 Web View 控件。 元件不在瀏覽器中執行,也不涉及 WebAssembly。 Razor 元件可快速載入並執行程式碼,元件可透過 .NET 平台完全存取裝置的原生功能。
讓我們來建立一個示範應用程式,以便更好地瞭解 Blazor 應用程式的運作方式。
建立 Blazor 伺服器應用程式
要建立第一個 Blazor 應用程式,我們需要建立一個新的 Visual Studio 專案。
- 開啟 Visual Studio。
- 按一下"建立新專案"按鈕。
- 選擇 Blazor 伺服器應用程式範本。
- 按一下下一步按鈕。
- 為您的應用程式命名。
- 按一下下一步按鈕。
- 選擇目標 Framework。
- 按一下建立專案按鈕。
將會建立一個新專案,如下所示。
製作了幾個檔案,讓您有一個簡單的 Blazor 應用程式可以執行。
Program.cs是應用程式的入口點,用於啟動伺服器,並配置應用程式服務和中間件。App.razor是應用程式的根元件。Pages目錄包含該應用程式的一些範例網頁。Properties目錄下的launchSettings.json檔案定義了本機開發環境的不同設定檔設定。 專案建立時會自動指定一個連接埠號,並儲存到此檔案中。
執行此範本應用程式。
執行 Blazor 應用程式
模板中自動建立了三個 Blazor 元件。
首頁元件
按一下側邊功能表上的計數器。 您會發現按一下按鈕就會增加計數器,而不會改變或重新載入頁面。 在 Web 應用程式中動態增加計數器通常需要 JavaScript,但有了 Blazor,我們可以使用 C# 來實現。 這就是 ASP.NET 開發人員如此喜歡 Blazor 的原因。 它可以幫助 .NET 開發人員快速、輕鬆地建立 Web 應用程式。
計數器元件
我們可以在解決方案的 Pages 資料夾中的 Counter.razor 檔案中看到 Counter 元件的程式碼。
@page "/counter"
<h1>Counter</h1>
<p>Current count: @currentCount</p>
<button class="btn btn-primary" @onclick="IncrementCount">Click me</button>
@code {
private int currentCount = 0;
// This method increments the counter value when the button is clicked
private void IncrementCount()
{
currentCount++;
}
}
瀏覽器中對 /counter 的請求(如頂部的 @page 指令所指定)會導致 Counter 元件渲染其內容。
每次選擇 按一下我 按鈕:
- 執行
onclick事件。 - 呼叫了
IncrementCount方法。 currentCount遞增。- 元件渲染後會顯示更新的計數。
每個 .razor 檔案都定義了一個可以重複使用的 UI 元件。
在 Visual Studio 中開啟 Index.razor 檔案。 Index.razor 檔案已存在,因為它是在建立專案時建立的。 它位於先前建立的 BlazorApp 目錄下的 Pages 資料夾中。
擷取元件
還有一個元件名為"Fetch Component"。 此元件也會注入用於後端伺服器端開發的服務。 讓我們取代這段代碼,從 URL 生成 PDF,以便更好地瞭解 Blazor 網頁開發的強大功能。
從 URL 生成 PDF
首先,我們需要安裝一個用於產生 PDF 檔案的第三方函式庫。 我們要使用的函式庫是 IronPDF - PDF Generation 適用於 .NET 。 它使用方便,包含許多功能,而且是免費開發用的。 您可以閱讀 IronPDF Blazor 文件,瞭解在 Blazor 應用程式中使用 IronPDF 的更多資訊。
安裝 IronPDF NuGet 套件。
我們也可以在 Blazor WebAssembly 應用程式中安裝 IronPDF NuGet 套件,類似於一般的 ASP.NET Core 應用程式。
開啟 NuGet Package Manager Console,並寫下以下指令:
Install-Package IronPdf
函式庫的安裝方式如下所示。
從 FetchData.razor 檔案中刪除所有現有程式碼,並新增以下程式碼範例:
@page "/fetchdata"
@using myBlazorAPP.Data
@inject WeatherForecastService ForecastService
<h1>Generate PDF FROM URL</h1>
<p>This component demonstrates generating PDF from URL using IronPDF in Blazor Application</p>
<input type="text" @bind="URL" placeholder="URL HERE..."/>
<button @onclick="GeneratePDF">Generate PDF</button>
@code {
private string URL { get; set; }
// This method calls the service to generate a PDF document from a given URL
protected async Task GeneratePDF()
{
await ForecastService.GeneratePDFfromURL(URL);
}
}
以上是用於產生 PDF 檔案的客戶端 Blazor 程式碼。 它定義了一個按鈕和一個輸入方塊。 輸入欄位綁定到 URL 變數。
現在,讓我們為應用程式撰寫伺服器端程式碼。
開啟 WeatherForecastService.cs 文件,並將所有現有程式碼替換為以下程式碼片段:
using System;
using System.Threading.Tasks;
using IronPdf;
namespace myBlazorAPP.Data
{
public class WeatherForecastService
{
// This method generates a PDF file asynchronously from a provided URL
public async Task GeneratePDFfromURL(string URL)
{
ChromePdfRenderer renderer = new ChromePdfRenderer();
var pdfDoc = await renderer.RenderUrlAsPdfAsync(URL);
pdfDoc.SaveAs(@"myFile.pdf");
}
}
}
using System;
using System.Threading.Tasks;
using IronPdf;
namespace myBlazorAPP.Data
{
public class WeatherForecastService
{
// This method generates a PDF file asynchronously from a provided URL
public async Task GeneratePDFfromURL(string URL)
{
ChromePdfRenderer renderer = new ChromePdfRenderer();
var pdfDoc = await renderer.RenderUrlAsPdfAsync(URL);
pdfDoc.SaveAs(@"myFile.pdf");
}
}
}
Imports System
Imports System.Threading.Tasks
Imports IronPdf
Namespace myBlazorAPP.Data
Public Class WeatherForecastService
' This method generates a PDF file asynchronously from a provided URL
Public Async Function GeneratePDFfromURL(ByVal URL As String) As Task
Dim renderer As New ChromePdfRenderer()
Dim pdfDoc = Await renderer.RenderUrlAsPdfAsync(URL)
pdfDoc.SaveAs("myFile.pdf")
End Function
End Class
End Namespace
讓我們執行應用程式看看輸出結果。
在輸入框中貼上 URL,然後按一下"產生 PDF"。 PDF 檔案將會產生,檔案可在應用程式資料夾中看到。
開啟 PDF 檔案,如下所示。
我們只用三行程式碼就從 URL 產生了 PDF。 這就是 IronPDF 的威力。
IronPDF 由 Iron Software 提供,它是 Iron Software 的 Iron Suite 產品的一部分。 您可以透過 購買完整的 Iron Suite 節省金錢,以購買其中兩個產品的費用購買五個產品。
摘要
Blazor 是用 Microsoft 的 .NET Framework 建立互動式客戶端網頁使用者介面的框架。
- 使用 C# 而非 JavaScript 建立豐富的互動 UI。
- 分享以 .NET 寫成的伺服器端和用戶端應用程式邏輯。
- 將使用者介面渲染為 HTML 和 CSS,以獲得廣泛的瀏覽器支援,包括行動瀏覽器。
- 與現代主機平台整合,例如 Docker。
- 使用 .NET 和 Blazor 建立混合桌面和行動應用程式。
使用 .NET 進行用戶端網頁開發具有以下優點:
- 使用 C# 而非 JavaScript 撰寫程式碼。
- 充分利用現有的 .NET 生態系統中的 .NET 函式庫。
- 跨伺服器和用戶端分享應用程式邏輯。
- 受益於 .NET 的效能、可靠性和安全性。
- 使用 Visual Studio 或 Visual Studio Code 等開發環境在 Windows、Linux 或 macOS 上保持生產力。
- 建立在一套穩定、功能豐富且易於使用的共通語言、架構和工具之上。
常見問題解答
如何使用 C# 從 URL 生成 PDF?
可以使用 IronPDF 庫從 URL 生成 PDF,這涉及到使用 ChromePdfRenderer 類將 URL 渲染為 PDF 文檔。
使用 Blazor 進行網頁開發的主要好處是什麼?
Blazor 允許開發人員使用 C# 構建 Web 應用程式,並允許客戶端和服務器之間的代碼共享。它還通過利用現有的 .NET 生態系統和通過 WebAssembly 支援現代瀏覽器來提高性能和生產力。
如何使用 Blazor 集成原生設備功能?
可以使用 Blazor Hybrid 創建原生應用程式,這可以使組件原生運行並通過 .NET 訪問設備功能,利用如 .NET MAUI 等框架為跨平台應用程式服務。
WebAssembly 如何增強 Blazor 應用程式?
WebAssembly 通過使得 .NET 代碼無需插件即可在現代瀏覽器中運行來增強 Blazor 應用程式,這使得可以利用 JavaScript 互操作性來實現交互式客戶端 Web 應用程式的完整瀏覽器功能。
如何在 Visual Studio 中建立 Blazor 服務器應用程式?
要在 Visual Studio 中建立 Blazor 服務器應用程式,您需要啟動一個新項目,選擇 Blazor 服務器應用模板,提供一個項目名稱,選擇一個目標框架,然後繼續建立該項目。這一過程設立了 Blazor 服務器應用的必要結構。
什麼是 Blazor 中的 JavaScript 互操作性?
JavaScript 互操作性,或稱 JS interop,是 Blazor 中的一項功能,允許在瀏覽器中運行的 .NET 代碼與 JavaScript 交互,從而在 Blazor 應用程式中使用完整的瀏覽器功能。
能否使用 Docker 部署 Blazor 應用程式?
是的,可以使用 Docker 部署 Blazor 應用程式,這可以更容易地管理和部署應用程式於各種服務器環境之間,增強可擴展性及現代託管平台的整合。



