.NET 帮助

Blazor .NET 8 (开发者教程)

随着 .NET 8.0 的发布,全栈 Web UI 框架 Blazor 有了显著的发展。这次更新带来了各种功能和增强功能,使开发人员能够使用 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网页应用模板介绍

.NET 8.0 引入了 Blazor Web App 模板,这是一个结合了 Blazor Server 和 Blazor WebAssembly 托管模型优势的统一起点。

此模板包含了新的功能,如静态服务器渲染、流式渲染、增强的导航和表单处理。 项目模板的整合简化了开发过程。

适用于Blazor Web应用的简化JS初始化程序

传统的JS初始化程序已被替换为新的Blazor Web应用程序集,提供了更好的控制权,例如自定义加载过程、日志记录级别和其他选项。 这一变化提升了开发体验,并与.NET 8.0中统一托管模型的目标保持一致。

拆分预渲染和集成指南

为了提供更具针对性的覆盖,关于预渲染和集成的指南已被拆分成单独的文章。 此更改旨在简化理解和实施,使开发人员更易于遵循最佳实践。

在Blazor网页应用中无缝状态持久化

Blazor Web 应用现在会自动保留在预渲染期间创建的任何已注册的应用级状态。 这消除了对持久组件状态标记助手的需求,简化持久化和读取组件状态的过程。

增强的表单处理和模型绑定

.NET 8.0 为 Blazor 组件带来了改进的表单处理功能,包括模型绑定和数据验证。 该框架尊重数据契约属性,为开发者提供更多控制,以便将表单数据绑定到模型。 防伪支持的引入为表单提交增加了额外的安全层。

增强的导航和表单处理

Static server rendering in Blazor .NET 8.0 引入了页面导航和表单处理方面的显著改进。 传统上,在导航或提交表单时会发生整个页面的刷新。

通过增强的导航功能,Blazor拦截请求并执行获取请求,流畅地将渲染的响应内容补丁插入浏览器的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 Web 应用程序在 .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 通过引入根级级联值来增强级联值,这些值可以为整个组件层次结构注册。 现在支持命名级联值和更新通知的订阅,从而提供了更大的灵活性和控制力。

虚拟化空内容

在 Virtualize 组件上新增的EmptyContent参数使开发者能够在组件加载后提供内容,当项为空或ItemsProviderResult<T>.TotalItemCount为零时。

这使开发人员能够创建更直观和用户友好的界面。

电路管理和SignalR监控

Blazor .NET 8.0 引入了在没有剩余的交互式服务器组件时关闭电路的功能。 此优化释放了服务器资源并提高了整体性能。

此外,开发者现在可以使用 CircuitHandler 上的 CreateInboundActivityHandler 方法监控服务器端应用中的入站电路活动。

通过Jiterpreter实现更快的运行时性能

Jiterpreter 是 .NET 8 的一个新运行时功能,在 WebAssembly 上运行时引入了部分即时 (JIT) 编译支持。 这将改善运行时性能,为与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 消除了在指定内容安全策略 (CSP) 时启用 unsafe-eval 脚本源的需要。 此增强功能简化了安全配置,使得在Blazor WebAssembly应用程序中更容易执行强大的CSP(Content Security Policy,内容安全策略)。

在组件生命周期之外处理异常

ComponentBase.DispatchExceptionAsync 的引入使开发人员能够处理在 Razor 组件生命周期调用堆栈之外抛出的异常。

此功能允许组件代码将异常视为生命周期方法异常,从而确保更一致和受控的错误处理机制。

介绍 Iron Suite

Iron Software 的 Iron Suite 由 Iron Software 开发,包含多个实用的库,帮助开发人员构建强大的 Blazor 应用程序。它提供添加 PDF 功能、Excel 或 CSV 文件功能、图像转文本识别、条形码 & QR 码生成和读取,以及压缩或解压文件的解决方案。

Iron Suite 是使用 Blazor WebAssembly 托管模式或任何微软技术(包括 Blazor WebAssembly 应用程序、Blazor 服务器应用程序、ASP.NET Core MVC APP、ASP.NET core WEB API 或任何版本的.NET 运行时构建的任何应用程序)进行网络开发时可以考虑的最佳选择。

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
$vbLabelText   $csharpLabel
  1. IronOCR(光学字符识别)用于从扫描图像或PDF中提取文本,提高数据可访问性。

  2. IronXL 用于高效读取、编写和操作 Excel 电子表格。

  3. IronBarcode 用于生成和读取各种格式的条形码,便于数据编码和检索。

  4. IronQR 用于使用机器学习创建和读取QR码

  5. IronWebScraper 用于从网站提取有价值的数据,增强基于网络的应用程序的功能。

  6. IronZIP 用于压缩和解压文件,简化数据存储和传输过程。

    Blazor .NET 8(开发者教程):图2

Iron Suite 的独特之处是什么

  1. 以仅仅两个单独产品的价格获取整个套件,最大化您的投资价值。

  2. 无论您使用的是Windows、macOS还是Linux,Iron Suite都能确保(几乎)所有平台的兼容性。

  3. 体验从下载到生产的快速旅程,只需短短5分钟即可启动运行。

  4. 查阅所有功能的详细文档和示例,为整个开发过程提供清晰的指导。

  5. 有一支专门的工程师团队在每周五天24小时内随时为您解答任何疑问,确保开发体验顺畅。

  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成为现代网页开发的一个引人注目的选择。

Chipego
软件工程师
Chipego 拥有出色的倾听技巧,这帮助他理解客户问题并提供智能解决方案。他在 2023 年加入 Iron Software 团队,此前他获得了信息技术学士学位。IronPDF 和 IronOCR 是 Chipego 主要专注的两个产品,但他对所有产品的了解每天都在增长,因为他不断找到支持客户的新方法。他喜欢 Iron Software 的合作氛围,公司各地的团队成员贡献他们丰富的经验,以提供有效的创新解决方案。当 Chipego 离开办公桌时,你经常可以发现他在看书或踢足球。
< 前一页
C# KeyValuePair(开发人员工作原理)
下一步 >
BinaryKits.Zpl.Viewer(开发者如何使用)