.NET 帮助

Razor 与 Blazor

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

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


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

剃刀

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

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

Blazor

Blazor 是一个网络应用程序框架,允许开发人员使用 .NET 编程语言构建交互式客户端界面应用程序。使用 Blazor 构建的网络应用程序是单页面应用程序 (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# 创建网络应用程序。由于它们都是开源和免费的,开发人员可以立即使用,不受任何限制。在开发 ASP.NET 网络应用程序时,我们使用 Razor 语法,因为它更接近 ASP.NET Core 和 ASP.NET MVC。

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

在这一点上,我们必须对Razor在Blazor中的使用方式做出重大区分:Razor用于构建组件 (按钮、页面元素等)而不是建立整个页面。

此外,Razor 文件 (扩展名为".chtml "的文件) Blazor内的正式名称为Razor组件,而非Blazor组件。 (尽管这两个词在许多发展界被交替使用).

Razor页面和Blazor服务器的工作原理

Razor可在MVC应用程序中向浏览器提供*完整的页面。

Razor vs Blazor, Figure 1: 运行中的剃刀页面

运行中的剃刀页面

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

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

Razor vs Blazor, Figure 2: Blazor 在行动

Blazor 在行动

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

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

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

因此,Blazor应用程序与使用Vue或Angular等 "现代 "JavaScript库/框架开发的应用程序更为相似。Blazor应用程序在浏览器中运行时,会对后端执行网络调用,以检索和发送数据。

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

Blazor 和 Razor 的优缺点

说到在.NET框架上创建交互式网络应用程序,Blazor和Razor都非常受欢迎。这些技术为标准 JavaScript 项目提供了从使用 C# 作为主要编程语言的新颖过渡。

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

Blazor的优势

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

Blazor 的缺点

  • 使用Blazor执行客户端.NET应用程序时,只能获得有限的.NET工具和调试支持。
  • 客户端 Blazor 的性能优势在服务器端实现中并不存在。

剃须刀的好处

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

Razor的缺点

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

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#

结论

Razor 可以处理 API 逻辑和服务器端模板,但无法处理非 JavaScript 的客户端逻辑。Blazor允许程序员只用C#语言处理客户端和服务器端功能。Razor 是一种模板标记语法。它将服务器端代码整合到 HTML 中。另一方面,Blazor 是一个 SPA 框架,可根据情况在 Blazor WebAssembly 或 Blazor Server 上运行。

IronPDF 提供了创建、阅读、更新和处理 PDF 文件的最简便方法,既可在以下格式中使用 剃须刀Blazor 应用程序。IronPDF 是 Iron 软件公司的 Iron Suite 它由五个有用的库组成,有助于创建包含 Excel、PDF、条形码、二维码和图像的 Razor 或 Blazor 网络应用程序。

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

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

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

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