.NET 幫助

Blazor .NET 8(開發人員教程)

發佈 2023年12月24日
分享:

Blazor,這個全端網頁 UI 框架,隨著 .NET 8.0 的發布有了顯著的發展。這次更新帶來了各種功能和增強,讓開發人員能夠使用 C# 和 .NET 構建互動且現代的網頁應用程序。

在本文中,我們將深入探討 Blazor .NET 8.0 的關鍵方面,探索新的渲染模式、項目模板、工具改進等。

Blazor .NET 8(開發者教程):圖1

理解 Blazor 渲染模式

Blazor 在 .NET 8.0 中引入了三种渲染模式:

  1. 靜態伺服器渲染: 生成靜態 HTML 以達到最佳效能。

  2. 互動伺服器渲染: 利用伺服器端的 ASP.NET Core 執行環境進行初始渲染和互動。

  3. 互動 WebAssembly 渲染: 利用客戶端的 .NET WebAssembly 執行環境進行後續渲染和互動。

多功能互動自動渲染模式

互動自動渲染模式是其中的一大亮點,它結合了伺服器端的內容渲染和通過 .NET WebAssembly 運行時在客戶端進行的後續渲染和互動。這最終提供了更快的應用啟動體驗,成為開發人員的一個有吸引力的選擇。

Blazor Web應用程式範本介紹

.NET 8.0引入了Blazor Web應用程式範本,這是一個結合了Blazor Server和Blazor WebAssembly托管模型優點的統一起點。

此範本包含了新的功能,如靜態伺服器渲染、串流渲染、增強的導航和表單處理。專案範本的合併簡化了開發流程。

為 Blazor Web 應用程式簡化的 JS 初始化器

傳統的 JS 初始化器已被一組新的初始化器所取代,這些初始化器為 Blazor Web 應用程式提供了更好的控制,例如自訂載入過程、設定日誌級別和其他選項。這一變化提升了開發體驗,並與統一 .NET 8.0 主機模型的目標一致。

拆分預渲染和集成指南

為了提供更專注的覆蓋範圍,關於預渲染和集成的指南已被拆分為單獨的文章。此更改旨在簡化理解和實施,使開發人員更容易遵循最佳實踐。

在 Blazor Web Apps 中輕鬆保持狀態

Blazor Web Apps 現在會自動保留預渲染期間創建的任何已註冊應用級狀態。這消除了對 Persist Component State Tag Helper 的需求,使得狀態保留和讀取過程更為簡化。

增強的表單處理和模型綁定

.NET 8.0 為 Blazor 元件帶來了改進的表單處理功能,包括模型綁定和數據驗證。該框架遵循數據契約屬性,為開發人員提供更多的控制,以確保表單數據與模型正確綁定。引入的防偽支持為表單提交增加了一層額外的安全性。

強化的導航與表單處理

在 Blazor .NET 8.0 中的靜態伺服器渲染引入了頁面導航和表單處理的顯著改進。傳統上,導航或提交表單時會發生整頁刷新。

通過強化的導航功能,Blazor 攔截請求並執行 fetch 請求,無縫地將渲染的響應內容更新到瀏覽器 DOM 中。這樣可以避免整頁刷新,從而實現更快和更流暢的頁面加載,同時保留更多的頁面狀態。

當 Blazor 腳本 默认啟用強化導航功能。 (blazor.web.js) 已加載,並且可以選擇性地為特定表單啟用。新的增強型導航API允許開發人員以程式方式刷新當前頁面,提供更多的用戶體驗控制。

流式渲染

Blazor .NET 8.0 引入了流式渲染,這是一個強大的功能,可以提升執行長時間異步任務的頁面用戶體驗。使用流式渲染,頁面在異步操作進行時可以渲染佔位符內容。

一旦完成,更新的內容會被流式傳輸到客戶端,並在相同的響應連接中無縫地更新到 DOM 中。這種方法確保應用主佈局能夠快速渲染,並且頁面在內容可用時立即更新。

鍵控服務注入

Blazor 現在支持使用 Inject 屬性來注入鍵控服務。鍵可以在依賴注入場景中實現服務註冊和消費的範圍。

新的 InjectAttribute.Key 屬性允許開發人員指定要注入服務的鍵,為服務範圍提供新的可能性。

訪問 HttpContext 作為級聯參數

Blazor .NET 8.0 引入了從靜態伺服器組件以級聯參數訪問當前 HttpContext 的能力。這項增強功能特別有助於檢查和修改與 HTTP 上下文相關的標頭或其他屬性。

在 ASP.NET Core 環境外渲染 Razor 元件

Blazor .NET 8.0 開啟了在 HTTP 請求上下文之外渲染 Razor 元件的可能性。這種靈活性允許開發人員在獨立於 ASP.NET Core 託管環境下,將 Razor 元件直接渲染為字符串或流。

此功能在需要生成 HTML 片段(如電子郵件或靜態網站內容)的場景中特別有用。

支援區段

在Blazor .NET 8.0 中,SectionOutletSectionContent 組件的引入徹底改變了內容管理。這些組件允許開發者在佈局中定義佔位符,之後由特定頁面填充。

區段可以使用唯一名稱或物件 ID 來引用,在構建動態網頁佈局時提供靈活性和可重複使用性。

錯誤頁面支援

Blazor 網頁應用程式在 .NET 8.0 中現在具備強大的錯誤頁面支援,允許開發人員為 ASP.NET Core 異常處理中介軟體定義自定義錯誤頁面。

預設錯誤頁面 (Components/Pages/Error.razor) 提供一致的用戶體驗。即使啟用了互動性,錯誤頁面也會作為靜態的服務器組件呈現,確保在異常情況下的穩定性。

QuickGrid 從實驗性功能到必要組件

QuickGrid,這個高效能的網格組件,已從實驗狀態畢業,成為 .NET 8 中 Blazor 框架的核心部分。

這個組件簡化了表格數據的顯示,並提供排序、過濾、分頁和虛擬化等強大功能。請在 ASP.NET Core Blazor QuickGrid 文檔中了解更多關於 QuickGrid 的資訊。

路由到命名元素

Blazor .NET 8.0 引入了對客戶端路由的支持,使其能夠使用標準 URL 片段直接導航到頁面上的特定 HTML 元素。通過使用標準的 id 屬性指定 HTML 元素的標識符,當 URL 片段與元素標識符匹配時,Blazor 會無縫地滾動到該元素。

根級別的層疊值

Blazor .NET 8.0 通過引入根級別的層疊值來增強層疊值,這些層疊值可以註冊到整個組件層次結構中。現在支援具名的層疊值和更新通知的訂閱,提供了更大的靈活性和控制力。

虛擬化空內容

新的 EmptyContent 參數在 Virtualize 組件上允許開發者提供內容,當組件已加載並且項目為空,或者 ItemsProviderResult 为空時顯示这些内容。TotalItemCount 為零。

這讓開發人員能夠創建更直觀且用戶友好的介面。

電路管理與SignalR監控

Blazor .NET 8.0引入了在沒有殘留的互動伺服器元件時關閉電路的功能。此優化釋放了伺服器資源並增強了整體效能。

此外,開發人員現在可以使用 CircuitHandler 上的 CreateInboundActivityHandler 方法在伺服器端應用程式中監控入站電路活動。

使用 Jiterpreter 提升運行時效能

Jiterpreter 是 .NET 8 的一個新運行時功能,介紹了部分即時编译 (Just-in-Time) (即時編譯 (JIT)) 在 WebAssembly 上運行時的編譯支援。這可提高運行時效能,為使用者提供更順暢的 Blazor WebAssembly 應用程式體驗。

预编译 (AOT) SIMD 和異常處理

Blazor WebAssembly 的 AOT 編譯現在默認使用 WebAssembly 固定寬度的 SIMD 和 WebAssembly 異常處理。這一策略選擇顯著增強了運行時性能,提供更高效和更具響應性的使用者體驗。

Webcil 打包以適合網路部署

Blazor WebAssembly 現在使用 Webcil,這是一種適合網路的 .NET 程式集打包方式。這確保了在禁止下載或使用 .dll 檔案的環境中的相容性,解決了部署上的挑戰。Webcil 在 Blazor WebAssembly 應用程式中是預設啟用的。

Blazor WebAssembly 調試改進

在 .NET 8 中,調試 Blazor WebAssembly 應用程式變得更加簡化了。調試器現在從 Visual Studio 偏好設定中的配置位置下載符號數據,提升了使用 NuGet 套件的應用程式的調試體驗。

此外,現在在 Firefox 中也支持調試,需要配置遠程調試並通過 .NET WebAssembly 調試代理進行連接。

內容安全政策 (CSP) 相容性

在 .NET 8.0 中的 Blazor WebAssembly 消除了在指定內容安全策略時需要啟用 unsafe-eval 腳本來源的需求。 (CSP)此增強功能簡化了安全配置,使得為 Blazor WebAssembly 應用程序強制執行強健的CSP變得更加容易。

處理元件生命週期之外的例外

引入了 ComponentBase.DispatchExceptionAsync,允許開發人員處理在 Razor 元件的生命週期調用堆棧之外拋出的例外。

這個功能允許元件的代碼將例外視為生命週期方法例外,確保有一個更一致且可控的錯誤處理機制。

介紹 Iron Suite

Iron Suite由 Iron Software 開發,由七個有用的庫組成,使開發人員能夠構建功能強大的 Blazor 應用程序。

如果您想添加 PDF 功能、Excel 或 CSV 文件功能、圖片轉文字識別、條碼和 QR 碼的生成和讀取以及壓縮或解壓文件的功能。

Iron Suite 是使用 Blazor WebAssembly 託管模型或任何使用 Microsoft 技術(包括 Blazor WebAssembly 應用程序、Blazor 服務器應用程序、ASP.NET Core MVC 應用程序、ASP.NET Core WEB APIs 或任何在 .NET 運行時中構建的應用程序)的 Web 開發的完美選擇。

Iron Suite的函式庫

  1. IronPDF 用於無縫創建、操作和提取 PDF 文件中的數據。

IronPDF 的突出功能是轉換 HTML轉PDF,完全保留佈局和樣式。 這是從網頁內容生成 PDF 的理想之選,包括報告、發票和文檔。 您可以將 HTML 文件、URL 或 HTML 字串轉換為 PDF 文件。

    using IronPdf;

    class Program
    {
        static void Main(string[] args)
        {
            var renderer = new ChromePdfRenderer();

            // 1. Convert HTML String to PDF
            var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
            var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
            pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

            // 2. Convert HTML File to PDF
            var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
            var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
            pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

            // 3. Convert URL to PDF
            var url = "http://ironpdf.com"; // Specify the URL
            var pdfFromUrl = renderer.RenderUrlAsPdf(url);
            pdfFromUrl.SaveAs("URLToPDF.pdf");
        }
    }
    using IronPdf;

    class Program
    {
        static void Main(string[] args)
        {
            var renderer = new ChromePdfRenderer();

            // 1. Convert HTML String to PDF
            var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
            var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
            pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

            // 2. Convert HTML File to PDF
            var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
            var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
            pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

            // 3. Convert URL to PDF
            var url = "http://ironpdf.com"; // Specify the URL
            var pdfFromUrl = renderer.RenderUrlAsPdf(url);
            pdfFromUrl.SaveAs("URLToPDF.pdf");
        }
    }
Imports IronPdf

	Friend Class Program
		Shared Sub Main(ByVal args() As String)
			Dim renderer = New ChromePdfRenderer()

			' 1. Convert HTML String to PDF
			Dim htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"
			Dim pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent)
			pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf")

			' 2. Convert HTML File to PDF
			Dim htmlFilePath = "path_to_your_html_file.html" ' Specify the path to your HTML file
			Dim pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath)
			pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf")

			' 3. Convert URL to PDF
			Dim url = "http://ironpdf.com" ' Specify the URL
			Dim pdfFromUrl = renderer.RenderUrlAsPdf(url)
			pdfFromUrl.SaveAs("URLToPDF.pdf")
		End Sub
	End Class
VB   C#
  1. IronOCR (光學字符識別) 從掃描的圖片或PDF中提取文字,增強數據的可及性。

  2. IronXL 用於高效讀取、寫入和操作Excel電子表格。 IronBarcode 用於生成和讀取各種格式的條碼,以促進數據編碼和檢索。 IronQR 使用機器學習創建和讀取 QR 碼 IronWebscraper 用於從網站提取有價值的數據,增強基於網路的應用程序能力。

  3. IronZIP 用於壓縮和解壓文件,簡化數據存儲和傳輸過程。

Blazor .NET 8(開發者教程):圖 2

是什麼讓 Iron Suite 與眾不同

  1. 以價格獲得整個套件的訪問權限 僅兩個單一產品, 最大化您的投資價值。

  2. 無論您是在 Windows、macOS 還是 Linux 上工作,Iron Suite 確保跨平台相容性 (幾乎) 所有平台。

  3. 下載後迅速進入生產階段,最快5分鐘即可開始使用。

  4. 取得所有功能的詳細文件和範例,在開發過程中提供清晰的指引。

  5. 一支專業的工程師團隊24/5提供支援,解答您的任何疑問,確保開發過程順暢。

  6. Iron Suite 提供30天無條件退款保證,讓您放心使用。

結論

總而言之,Blazor .NET 8.0 的發布標誌著使用 C# 和 .NET 進行全棧 Web UI 開發的一個重要里程碑。

新渲染模式的引入、Blazor Web App 模板的推出、增強的導航功能以及其他眾多新功能,使其成為開發人員創建現代化和互動式 Web 應用程式的理想選擇。

Blazor .NET 8.0 還引入了增強的表單處理、流媒體渲染和注入鍵控服務的功能,增加了開發的深度和靈活性。

Iron Software 推出的 Iron Suite 補充了 Blazor 的功能,為 .NET 生態系統中的文檔相關任務提供了一個全面的工具包。

Blazor .NET 8.0 通過利用 Iron Suite 賦予開發人員創建強大且功能豐富的 Web 應用程式的能力。

強大功能的結合、改進的性能以及充滿活力的開發者社群的支持,使 Blazor 成為現代 Web 開發的一個理想選擇。

< 上一頁
C# KeyValuePair(如何對開發人員運作)
下一個 >
BinaryKits.Zpl.Viewer(開發者工作原理)

準備開始了嗎? 版本: 2024.10 剛剛發布

免費 NuGet 下載 總下載次數: 10,993,239 查看許可證 >