.NET 帮助

Razor 与 Blazor

发布 2022年十二月18日
分享:

Razor和Blazor是Visual Studio开发环境中创建Web应用程序的两种最流行的Web UI框架。 本博文将根据这两种 .NET 技术的语法、交互、优点和缺点,探讨它们之间的异同。 它还将通过一些代码示例演示一些用例。**


什么是 ASP.NET Core 中的 Razor 和 Blazor?

剃须刀

Razor是一种服务器端标记语言,允许开发人员使用HTML和嵌入的.NET服务器端代码动态创建网页。 Razor 从 Razor 页面(用 C# 或 VB 编写的网页模板文件)生成网页。 使用VB代码编写的Razor页面使用.vbhtml文件扩展名,使用C#代码编写的Razor页面使用.cshtml文件扩展名。

现代ASP.NET Web应用程序支持Razor,它可以替代传统ASP.NET标记生成应用程序视图组件。

Blazor

Blazor 是一个网络应用程序框架,允许开发人员使用 .NET 编程语言构建交互式客户端界面应用程序。 用Blazor构建的Web应用程序是单页应用程序(SPA)在网络浏览器客户端内执行(不在网络服务器上). 浏览器端应用程序的执行是通过 WebAssembly 实现的。 WebAssembly 是一个跨平台指令集库,可在所有能够执行 .NET 源代码的现代网络浏览器上找到。

通过 Blazor,开发人员可以使用 C#、HTML 和 CSS 创建可重复使用的交互式客户端网络组件(无需加入 JavaScript). 此外,由于这些组件是用 C# 编写的,因此开发人员可以根据需要灵活地将实现细节作为源代码和库在客户端和服务器之间来回移动。

Blazor 使用 Razor 组件吗?

Blazor 完全支持 Razor 语法。 您可以使用Razor的全标记功能集来构建Blazor应用程序:使用循环、条件语句等。请考虑以下示例。

@page "/HelloWorld"

<h1>
   Example Component
</h1>

@foreach(var person in People){
    <h2>person.FirstName</h2>
}
@page "/HelloWorld"

<h1>
   Example Component
</h1>

@foreach(var person in People){
    <h2>person.FirstName</h2>
}
'INSTANT VB TODO TASK: The following line could not be converted:
page "/HelloWorld" (Of h1) Example Component </h1> foreach(var person in People)
If True Then
	(Of h2) person.FirstName</h2>
End If
VB   C#

Razor和Blazor之间的关系

我们可以清楚地看到,Blazor和Razor之间存在关系。 毕竟,Blazor这个名称本身就是“浏览器”和“剃刀”两个词的结合。

Razor 和 Blazor 都用于使用 HTML 和 C# 创建 Web 应用程序。 由于它们是开源且免费的,开发者可以立即且毫无限制地使用它们。 在开发ASP.NET Web应用程序时,我们使用Razor语法,因为它更类似于ASP.NET Core和ASP.NET MVC。

Blazor 使用 Razor 语法编写的一个或多个组件构建灵活、交互式的用户界面。

在此我们必须明确区分Razor在Blazor中的用法:它用于构建组件。(按钮、页面元素等),并不打造整个页面。

另外,Razor 文件(扩展名为".chtml "的文件)Blazor内的正式名称为Razor组件,而非Blazor组件。(虽然这两个词在许多开发圈子里可以互换使用).

Razor Pages 和 Blazor Server 的工作原理

Razor在MVC应用程序中工作,以向浏览器提供整个页面。

Razor 与 Blazor,图 1:Razor 页面实景展示

运行中的剃刀页面

当用户点击按钮或链接时,浏览器会向服务器发送请求,服务器会访问数据库,检索 .cshtml Razor 视图。(或 Razor 页面)将数据和标记混合在一起,并将整个内容返回给浏览器(重新渲染整个页面).

另一方面,Blazor 允许您使用 Razor 语法编写的一系列较小组件来创建整个网页。

Razor与Blazor,图2:Blazor实际应用​​

Blazor 在行动

这说明了 Blazor WebAssembly 的运行情况(Blazor WASM).

对Blazor WASM应用程序的首次调用返回完整的程序,包括您定义的所有组件,就像使用JavaScript创建的单页应用程序一样。

现在,浏览器可以访问这些元素,它可以根据信息和事件显示、隐藏和更新它们。

通过这种方式,Blazor 应用程序与使用 "当代" JavaScript 库/框架(例如 Vue 或 Angular)开发的应用程序更为相似。 Blazor 应用程序在浏览器中运行时,会向后台执行网络调用以检索和发送数据。

现在,让我们讨论一下Blazor应用程序和Razor视图引擎的一些优点和缺点。

Blazor和Razor的优缺点

在创建基于 .NET Framework 的交互式网络应用程序时,Blazor 和 Razor 都备受青睐。 这些技术提供了一种新颖的过渡,将C#作为标准JavaScript项目的主要编程语言。

以下是使用 Razor 或 Blazor 创建网络应用时需要考虑的一些优点和缺点。

Blazor 的好处

  • 客户端 Blazor 使用 WebAssembly 直接在浏览器中执行 .NET 代码(更快、更节省网络带宽)并提供动态网页内容。
  • 它使用与服务器端语言相同的语法和逻辑,使其与所有 .NET 库和工具兼容。

Blazor 的缺点

  • 对于使用Blazor执行客户端 .NET 应用程序来说,可用的 .NET 工具和调试支持有限。
  • 客户端Blazor的性能优势在服务器端实现中不存在。

Razor 的好处

  • Razor 使逻辑操作变得简单(条件式)在网页中插入C#代码。
  • Razor 高度灵活,可用于创建各种应用程序。
  • Razor 的结构井然有序。

Razor的缺点

  • 需要 JavaScript 来实现动态的客户端交互。
  • 使用Razor管理和维护多个独立页面可能会很困难。

    IronPDF的亮点功能是转换使用 IronPDF 将 HTML 转换为 PDF保持布局和样式不变。 此功能非常适合从基于网页的内容(例如报告、发票和文档)生成PDF。 HTML文件、URLs和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#

结论

Razor 可以处理 API 逻辑和服务器端模板,但它不能处理非基于 JavaScript 的客户端逻辑。 Blazor允许程序员仅使用C#处理客户端和服务器端的功能。 Razor 是一种用于模板的标记语法。 它将服务器端代码集成到HTML中。 另一方面,Blazor 是一个单页应用程序(SPA)框架,可以根据情况运行在 Blazor WebAssembly 或 Blazor Server 上。

了解 IronPDF以最简便的方式创建、阅读、更新和处理 PDF 文件,同时支持两种语言Razor 应用程序Blazor 应用程序. IronPDF 是...的一部分Iron 软件公司的 Iron Suite其中包含五个有用的库,有助于使用 Excel、PDF、Barcode、QR 码和图像创建 Razor 或 Blazor 网络应用程序。

Iron Suite 可供个人免费使用。 有关获取商业许可证的更多信息,请访问Iron Suite 许可证信息.

< 前一页
什么是Blazor框架(开发者教程)
下一步 >
什么是NuGet?

准备开始了吗? 版本: 2024.12 刚刚发布

免费NuGet下载 总下载量: 11,781,565 查看许可证 >