全面的ASP.NET Core Blazor简介和快速入门

前言

因为咱们的MongoDB入门到实战教程Web端准备使用Blazor来作为前端展示UI,本篇文章主要是介绍Blazor是一个怎样的Web UI框架,其优势和特点在哪?并带你快速入门上手ASP.NET Core Blazor(当然这个前提是你要有一定的C#编程基础的情况,假如你完全没有接触过C#的话建议你先从基本语法学起)。

Blazor是什么?

总而言之:Blazor是一种新兴的Web应用程序框架,具有很大的潜力和发展前景。Blazor是在.NET和Razor上构建的用户界面框架,它采用了最新的Web技术和.NET框架优势,可以使用C# 编程语言编写Web 应用程序,它不仅可以提高开发效率,还可以提供更好的用户体验和更好的可维护性。

Blazor的优势和特点

Blazor是一个基于.NET框架和 C#编程语言构建 Web 应用程序的 UI 框架,它具有以下几个优势和特点:

Blazor的劣势

Blazor支持的平台

下表所示的浏览器在移动平台和桌面平台上均支持 Blazor WebAssembly 和 Blazor Server。

浏览者Version
Apple Safari当前版本+
Google Chrome当前版本+
Microsoft Edge当前版本+
Mozilla Firefox当前版本+

+当前版本指的是浏览器的最新版本。

对于 Blazor Hybrid 应用,我们测试并支持最新的平台 Web View 控件版本:

Blazor三种托管模型及其各自特点

1、Blazor Server

简介:

Blazor Server 应用程序在服务器上运行,可享受完整的 .NET Core 运行时支持。所有处理都在服务器上完成,UI/DOM 更改通过 SignalR 连接回传给客户端。这种双向 SignalR 连接是在用户第一次从浏览器中加载应用程序时建立的。由于 .NET 代码已经在服务器上运行,因此您无需为前端创建 API。您可以直接访问服务、数据库等,并在传统的服务端技术上做任何您想做的事情。在客户端上,Blazor 脚本 (blazor.server.js) 与服务器建立 SignalR 连接。脚本由 ASP.NET Core 共享框架中的嵌入资源提供给客户端应用。客户端应用负责根据需要保持和还原应用状态。

Blazor Server 托管模型具有以下优点:

Blazor Server 托管模型具有以下局限性:

2、Blazor WebAssembly

简介:

Blazor WebAssembly(WASM)应用程序在浏览器中基于WebAssembly的.NET运行时运行客户端。Blazor应用程序及其依赖项和.NET运行时被下载到浏览器中。该应用程序直接在浏览器的UI线程上执行。UI更新和事件处理在同一进程中进行。应用程序的资产被作为静态文件部署到能够为客户提供静态内容的网络服务器或服务上。当Blazor WebAssembly应用被创建用于部署,而没有后端ASP.NET Core应用为其提供文件时,该应用被称为独立的Blazor WebAssembly应用。当应用程序被创建用于部署,并有一个后端应用程序为其提供文件时,该应用程序被称为托管的Blazor WebAssembly应用程序。

Blazor WebAssembly 托管模型具有以下优点:

Blazor WebAssembly 托管模型具有以下局限性:

Blazor WebAssembly 支持预先 (AOT) 编译,你可以直接将 .NET 代码编译到 WebAssembly 中。AOT 编译会提高运行时性能,代价是应用大小增加。

3、Blazor Hybrid

简介:

Blazor Hybrid 托管模型具有以下优点:

Blazor Hybrid 托管模型具有以下局限性:

如何选择要使用的托管模型?

根据应用的功能要求选择 Blazor 托管模型。下表显示了选择托管模型的主要注意事项。

Blazor Hybrid 应用包括 .NET MAUI、WPF 和 Windows 窗体框架应用。

功能Blazor ServerBlazor WebAssembly (WASM)Blazor Hybrid
与 .NET API 完全兼容 支持 支持
直接访问服务器和网络资源 支持 不支持† 不支持†
较小的有效负载,较快的初始加载速度 支持
接近本机执行速度 支持 支持‡ 支持
服务器上安全且专用的应用代码 支持 不支持† 不支持†
下载后即可脱机运行应用 支持 支持
静态站点托管 支持
将处理过程转移至客户端 支持 支持
对本机客户端功能具有完全访问权限 支持
基于 Web 的部署 支持 支持

†Blazor WebAssembly 和 Blazor Hybrid 应用可以使用基于服务器的 API 来访问服务器/网络资源并访问专用和安全的应用代码。
‡Blazor WebAssembly 仅通过预先 (AOT) 编译达到接近本机性能。

总之,Blazor 的三种模式各有特点,可以根据应用场景选择适当的模式。如果需要访问服务器端资源或者需要实现实时通信功能,可以选择 Server 模式;如果需要实现离线访问或者减少网络流量,可以选择 WebAssembly 模式;如果需要兼顾两种模式的优势,可以选择 Hybrid 模式。

Razor语法简述

Blazor 是一种基于 .NET 平台的 Web 开发框架,它使用 C# 语言和 Razor 语法来编写前端代码。

什么是Razor?

Razor 是一种标记语法,用于将基于 .NET 的代码嵌入网页中。Razor 语法由 Razor 标记、C# 和 HTML 组成。包含 Razor 的文件通常具有 .cshtml 文件扩展名。Razor 也可在 Razor 组件 文件 (.razor) 中找到。Razor 语法类似于各种 JavaScript 单页应用程序 (SPA) 框架(如 Angular、React、VueJs 和 Svelte)的模板化引擎。更多请查看ASP.NET Core 的 Razor 语法 。

Razor 操作符

Razor 操作符是用于将 Razor 代码与 HTML 元素相互关联的语法。例如:

Razor代码块

@UserName


@code{ private string UserName = "追逐时光者";}

隐式 Razor 表达式

隐式 Razor 表达式以 @ 开头,后跟 C# 代码:

<p>@DateTime.Nowp><p>@DateTime.IsLeapYear(2023)p>

显式 Razor 表达式

显式 Razor 表达式由 @ 符号和平衡圆括号组成。若要呈现上一周的时间,可使用以下 Razor 标记:

<p>Last week this time: @(DateTime.Now - TimeSpan.FromDays(7))

表达式编码

计算结果为字符串的 C# 表达式采用 HTML 编码。计算结果为 IHtmlContent 的 C# 表达式直接通过 IHtmlContent.WriteTo 呈现。计算结果不为 IHtmlContent 的 C# 表达式通过 ToString 转换为字符串,并在呈现前进行编码。

@("<span>Hello Worldspan>")
输出:
HTML 在浏览器中显示为纯文本:<span>Hello Worldspan>

条件判断 @if, else if, else, and @switch

@if 控制何时运行代码:

@if (value % 2 == 0){ 

The value was even.

}

elseelse if 不需要 @ 符号:

@if (value % 2 == 0){ 

The value was even.

}else if (value >= 1337){

The value is large.

}else{

The value is odd and small.

}

以下标记展示如何使用 switch 语句:

@switch (value){ case 1: <p>The value is 1!p> break; case 1337: <p>Your number is 1337!p> break; default: <p>Your number wasn't 1 or 1337.p> break;}

语句循环 @for, @foreach, @while, and @do while

可以使用循环控制语句呈现模板化 HTML。若要呈现一组人员:

@{ var people = new Person[] { new Person("Weston", 33), new Person("Johnathon", 41), ... };}

支持以下循环语句:

@for

@for (var i = 0; i < people.Length; i++){ var person = people[i]; 

Name: @person.Name

Age: @person.Age

}

@foreach

@foreach (var person in people){ <p>Name: @person.Namep> 

Age: @person.Age

}

@while

@{ var i = 0; }@while (i < people.Length){ var person = people[i]; 

Name: @person.Name

Age: @person.Age


i++;}

@do while

@{ var i = 0; }@do{ var person = people[i]; 

Name: @person.Name

Age: @person.Age


i++;} while (i < people.Length);

复合语句 @using

在 C# 中,using 语句用于确保释放对象。在 Razor 中,可使用相同的机制来创建包含附加内容的 HTML 帮助程序。在下面的代码中,HTML 帮助程序使用 @using 语句呈现

标记:

@using (Html.BeginForm()){ <p> Email: <input type="email" id="Email" value=""> <button>Registerbutton> p>}

@try, catch, finally

异常处理与 C# 类似:

@try{ throw new InvalidOperationException("You did something invalid.");}catch (Exception ex){ 

The exception message: @ex.Message

}finally{

The finally statement.

}

更多Razor语法请查看ASP.NET Core 的 Razor 语法 。https://learn.microsoft.com/zh-cn/aspnet/core/mvc/views/razor?view=aspnetcore-6.0

新建ZeroBlazor空白解决方案

1、启动 Visual Studio 2022选择创建新项目

2、搜索“空白解决方案“并创建

使用VS 2022快速创建Blazor Server应用

1、在ZeroBlazor解决方案中添加新项目

2、添加新项目中搜索“Blazor Server 应用”进行创建

3、框架选择“.NET 7.0 (标准期限支持)”,然后单击“创建”按钮

4、应用程序文件夹和文件介绍

  • Program.cs 是启动服务器以及在其中配置应用服务和中间件的应用的入口点。

  • App.razor 为应用的根组件。

  • Pages 存放应用程序的 Razor 页面,每个 Razor 页面都对应着一个组件,用于呈现应用程序的 UI 元素。

  • Shared 存放多个 Razor 页面或组件之间共享的组件、布局和其他视图元素等。

  • wwwroot 该文件夹包含静态文件,例如图片、字体、图标、CSS 和 JavaScript 文件等。

  • BlazorAppSample.csproj 应用程序的项目文件,用于指定依赖项、编译选项和发布选项等。

  • Properties 目录中的 launchSettings.json 文件为本地开发环境定义不同的配置文件设置。创建项目时会自动分配端口号并将其保存在此文件上。

5、运行应用

单击 Visual Studio 调试工具栏中的“开始调试”按钮(绿色箭头)以运行应用,查看运行效果。

打开浏览器开发者工具(F12),您会注意到所有标准的 CSS 和 JavaScript 文件都下载到了客户端,并通过 Web Sockets 建立了一个 SignalR 连接。

使用VS 2022快速创建Blazor WebAssembly应用

1、在ZeroBlazor解决方案中添加新项目

2、添加新项目中搜索“Blazor WebAssembly 应用”进行创建

3、框架选择“.NET 7.0 (标准期限支持)”,然后单击“创建”按钮

4、应用程序文件夹和文件介绍

  • Program.cs 是启动服务器以及在其中配置应用服务和中间件的应用的入口点。它创建了WebAssemblyHostBuilder并启动它。

  • App.razor是应用程序的启动路由页面,里面规定了默认Layout。

  • Pages 存放应用程序的 Razor 页面,每个 Razor 页面都对应着一个组件,用于呈现应用程序的 UI 元素。

  • Shared 存放公共 Razor 页面或组件之间共享的组件、布局和其他视图元素等。

  • wwwroot 该文件夹包含静态文件,例如图片、字体、图标、CSS 和 JavaScript 文件等。

  • BlazorWasmSample.csproj 应用程序的项目文件,用于指定依赖项、编译选项和发布选项等。

  • Properties 目录中的 launchSettings.json 文件为本地开发环境定义不同的配置文件设置。创建项目时会自动分配端口号并将其保存在此文件上。

5、运行应用

单击 Visual Studio 调试工具栏中的“开始调试”按钮(绿色箭头)以运行应用,查看运行效果。

正如我们看到的一样Blazor WebAssembly应用程序首次启动会比较慢,因为它会在客户端下载应用程序及其所有依赖项,你可以F12打开浏览器开发者工具,会看到客户端下载了大量dll文件(只会在第一次浏览时下载)。

以上所有dll文件只会在第一次请求时下载,然后它们会被缓存在浏览器中。如果你再次刷新页面,将会看到这此加载下载的文件很少,而且运行时不再需要网络,这样在断网环境或没有网络的离线下,仍然可以运行,再次运行时的情况:

课外知识拓展

WebAssembly是什么?

WebAssembly(缩写为“Wasm”)是一种开放标准,旨在提供一种高效且可移植的二进制格式,以运行跨平台的应用程序。与 JavaScript 不同,WebAssembly 不是一种高级脚本语言,而是一种可移植的二进制格式(低级指令集),它的主要目的是提供一种更高效和可移植的编程语言,以便于在 Web 平台上进行运行。可以将其他编程语言(如C++、C#、Golang、Rust等)的代码编译成 WebAssembly格式,可以实现比 JavaScript 更高效的运行速度,并且减少了代码大小和网络带宽的消耗。与传统的浏览器插件相比,WebAssembly 还具有更好的性能和更高的安全性。

目前,WebAssembly 可以在主流的 Web 浏览器(如 Chrome、Firefox、Safari 和 Edge)上运行,并且被越来越多的 Web 应用程序所采用。WebAssembly 还提供了与 JavaScript 相互操作的功能,使得开发人员可以轻松地在现有的 Web 应用程序中使用 WebAssembly。

SPA 单页面应用程序是什么?

SPA(single-page application),翻译过来就是单页应用SPA是一种网络应用程序或网站的模型,它通过动态重写当前页面来与用户交互,这种方法避免了页面之间切换打断用户体验在单页应用中,所有必要的代码(HTMLJavaScriptCSS)都通过单个页面的加载而检索,或者根据需要(通常是为响应用户操作)动态装载适当的资源并添加到页面页面在任何时间点都不会重新加载,也不会将控制转移到其他页面举个例子来讲就是一个杯子,早上装的牛奶,中午装的是开水,晚上装的是茶,我们发现,变的始终是杯子里的内容,而杯子始终是那个杯子结构如下图(我们熟知的JS框架如react,vue,angular,ember都属于SPA)。

Blazor UI组件库推荐

值得推荐的Blazor UI组件库

ASP.NET Core Blazor入门到实战教程

公众号回复:Blazor实战,获取教程链接 。

Blazor相关学习教程

  • 微软官方教程ASP.NET Core Blazor :https://learn.microsoft.com/zh-cn/aspnet/core/blazor/?view=aspnetcore-7.0

  • 全面的ASP.NET Core Blazor简介和快速入门 :https://www.cnblogs.com/Can-daydayup/p/17157143.html

  • Blazor Server和WebAssembly应用程序入门指南 :https://www.cnblogs.com/ittranslator/p/a-beginners-guide-to-blazor-server-and-webassembly-applications.html

  • Blazor教程 - 生成第一个 Blazor 应用 :https://dotnet.microsoft.com/zh-cn/learn/aspnet/blazor-tutorial/run

  • 生成Blazor待办事项列表应用 :https://learn.microsoft.com/zh-cn/aspnet/core/blazor/tutorials/build-a-blazor-app?view=aspnetcore-6.0&pivots=server

  • 使用Blazor的ASP.NET Core SignalR :https://learn.microsoft.com/zh-cn/aspnet/core/blazor/tutorials/build-a-blazor-app?view=aspnetcore-6.0&pivots=server

  • 使用 Blazor 构建 Web 应用程序 :https://learn.microsoft.com/zh-cn/training/paths/build-web-apps-with-blazor/?view=aspnetcore-6.0

参考文章

微软官方教程ASP.NET Core Blazor:https://learn.microsoft.com/zh-cn/aspnet/core/blazor/?view=aspnetcore-7.0

Blazor VS 传统Web应用程序:https://zhuanlan.zhihu.com/p/343079368

Blazor Server 和 WebAssembly 应用程序入门指南:https://www.cnblogs.com/ittranslator/p/a-beginners-guide-to-blazor-server-and-webassembly-applications.html

什么是SPA单页面应用:https://www.cnblogs.com/xiaozhuangge/p/15396609.html


  • 免费开源的程序员简历模板

  • 了解作者&获取更多学习资料

  • 加入DotNetGuide技术交流群

  • 程序员常用的开发工具软件推荐

  • C#/.NET/.NET Core推荐学习书籍

  • C#/.NET/.NET Core学习视频汇总

  • .NET/.NET Core ORM框架资源汇总

  • ASP.NET Core开发者学习指南路线图

  • C#/.NET/.NET Core优秀项目框架推荐

  • C#/.NET/.NET Core面试宝典(基础版)

  • C#/.NET/.NET Core学习、工作、面试指南




学习是一个永无止境的过程,你知道的越多,你不知道的也会越多,在有限的时间内坚持每天多学一点,你一定能成为你想要成为的那个人。不积跬步无以至千里,不积小流无以成江河!!!


See you next good day


展开阅读全文

页面更新:2024-03-19

标签:表达式   语法   应用程序   组件   客户端   框架   入门   快速   代码   页面   服务器   文件   简介

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top