Blazor已死,别挣扎了


官方解释Blazor现状,表示已不再维护Blazor,求开发者别用了

Blazor允许您使用c#而不是JavaScript构建交互式web UI。 Blazor应用由可重用的web UI组件组成,这些组件使用c#、HTML和CSS实现。客户端和服务器代码都是用c#编写的,允许您共享代码和库。

Blazor 是一个使用 .NET 生成交互式客户端 Web UI 的框架:

  • 使用 C# 代替 JavaScript 来创建信息丰富的交互式 UI。
  • 共享使用 .NET 编写的服务器端和客户端应用逻辑。
  • 将 UI 呈现为 HTML 和 CSS,以支持众多浏览器,其中包括移动浏览器。
  • 与新式托管平台(如 Docker)集成。

使用 .NET 进行客户端 Web 开发可提供以下优势:

  • 使用 C# 代替 JavaScript 来编写代码。
  • 利用现有的 .NET 库生态系统。
  • 在服务器和客户端之间共享应用逻辑。
  • 受益于 .NET 的性能、可靠性和安全性。
  • 在 Windows、Linux 和 macOS 上使用 Visual Studio 保持高效工作。
  • 以一组稳定、功能丰富且易用的通用语言、框架和工具为基础来进行生成。

看到这里有些小伙伴手中的瓜已经要丢出来了,的确有部分是夸大了的,起码VS在三个平台高效工作这事儿,嗯。。。其他的继续吃瓜吧

<!-- more -->

Blazor Vs MVC

什么是MVC

官方解释:ASP.NET Core MVC 是使用“模型-视图-控制器”设计模式构建 Web 应用和 API 的丰富框架。

圈重点,Blazor是交互式Web UI,而MVC是Web应用和API

什么是交互式Web UI

谷歌、百度转了一圈,没有这个解释,连Wiki也是一脸懵逼。

尝试理解一下吧,交互式Web UI重点在于交互,而Blazor的官方解释是用C#代替JavaScript,那我们看看JavaScript有什么功能,我百度找一段过来:

  1. 嵌入动态文本于HTML页面
  2. 对浏览器事件做出响应
  3. 读写HTML元素
  4. 在数据被提交到服务器之前验证数据
  5. 检测访客的浏览器信息。控制cookies,包括创建和修改等

有这些基础功能,用户不需要在静态页面里跳来跳去了,的确体验会好很多

Blazor有什么优势

提供了一些交互能力,不再是纯粹的静态页,虽然mvc可以使用JavaScript达到同样的效果,但你需要掌握JavaScript,甚至还要再学习jQuery、Angular、Vue等。而Blazor提供的交互能力则是使用C#。

吹是吹完了,但你真的可以100% C#吗?这很难,你会遇到各种问题,比如兼容性、性能等。好了,那我可以不用了吗?等等,下面还有瓜

Blazor Vs 现代前端(Angular、Vue等)

我们从几个方面来对比一下吧

调试

  • Blazor:Vistual Stuidio + F5,VS Code/命令行工具 + dotnet watch比WebPack要快很多,跟Vite差不多在非复杂场景下Hot Reload是可以的,但奇奇怪怪的问题太多了,前景很好,目前来看还是用Ctrl + F5启动或者用命令行吧VS 2022的Ctrl + F5已经支持Hot Reload了
  • 现代前端:Webpack/Vite

全家桶

以Vue为例,Vue全家桶包括Vue Cli、Vue Router、Vuex

Blazor:

  • Cli:dotnet cli
  • Router:Microsoft.AspNetCore.Components.Routing.Router
  • Vuex:Blazor状态管理,区别在于WASM状态保存在浏览器内存中,而Server保存在服务器内存中。而且Blazor状态管理更强大的是借助.Net的能力,原生支持持久化存储、跨线路保存(Server下共享服务器内存)、ASP.NET Core 受保护的浏览器存储(Server独享功能)

组件库

主流的Bootstrap, Ant Design, Material Design等双方都有。但由于现代前端多年的积累,质量上的确有一定差距。

除了丰富程度上,Blazor允许被JavaScript调用加载,并生成Angualr、React等组件。

虽然这看起来跟用C#解决代替JavaScript有点冲突,但融入大环境也是不错的

下图演示的是Blazor提供的inventory-grid Component被React引用的例子(当然也可以给Angular):

更神奇的是,在React复用的Blazor Component居然也支持Hot Reload。先不说Hot Reload到底如何,单是这个方向其实还是值得期待一下Hot Reload的未来吧。

16372888703025.png

不止可以给React提供复用的组件,还可以给WPF

16372890939413.png

第三方库

举几个前端常用库来比较。

网络:现代前端有axios,Blazor有HttpClient

数据操作:现代前端有Lodash,Blazor有Linq

时间:现代前端有moment.js、Day.js,Blazor有DateTime全家桶

响应式编程:现代前端有rx.js,Blazor有Rx.Net(没有用过,理论上.Net基本都能用,欢迎纠错)

Mock:现代前端有Mock.Js,Blazor有Moq,当然除了mock以外还有端到端的,双方也都有。


对比下来其实.Net反而还有点优势,那就完美吗?当然不是,再说点劣势的部分吧。

Charts:现代前端有ECharts等,Blazor不想说话

虽然目前Blazor的确没有成熟、免费的Charts组件库,但因为Blazor可以与JS交互的能力,调用ECharts也很简单,稍微考验一点点小伙伴的动手能力

富文本编辑器、拖拽。。。

Blazor骂骂咧咧的退出了群聊。。。


相關推薦

2022-12-02

“在权威人士质疑 OpenStack(世界第四大开源项目)是否已死之际,OpenInfra 基金会测得生产中的 OpenStack 内核数量达到前所未有的 4000 万个。核心服务(Nova、Neutron、Keystone、Glance 和 Ironic)的采用率仍然很高,但随着运营商发展

2022-02-23

GNOME Project 近日宣布 Clutter 库正式退役,这个用于 GNOME Shell 并且是 GTK3 的核心库曾在 2006 年为 Linux 带来了基于 OpenGL 的硬件渲染。 Clutter 是一个用于渲染 UI 的图形库,最初由 OpenedHand 负责开发。其首个版本于 2006 年发布

2023-05-30

MINIX 操作系统大约的确已经死了。 Minix 原来是荷兰阿姆斯特丹的 Vrije 大学计算机科学系的 Andrew S. Tanenbaum 教授所开发的一个类 Unix 操作系统,全部代码共约 12,000 行,起初是为给学生讲解操作系统的运作细节而开发。 Linu

2022-04-01

微软曾于去年 5 月份,Internet Explorer 11 桌面应用程序将于 2022 年 6 月 15 日退役;同时将从某些 Windows 10 版本中淘汰 Internet Explorer 11,将其替换为基于 Chromium 的 Microsoft Edge。Edge 中包含有一个 IE 模式,以兼容依赖 IE11 的网站和应

2021-12-20

Apache Log4j 的 2.0-alpha1 到 2.16.0 版本存在新的漏洞 CVE-2021-45105 ,此漏洞评分 7.5 ,且在刚发布的 Log4j 2.17.0 (Java 8) 中得到了修复。如果把安全公司 Praetorian 发现的第三个信息泄露漏洞也算进去,这应该是 Log4j 的第四个漏洞了。

2024-01-13

Known 是基于 Blazor 的企业级快速开发框架,低代码,跨平台,开箱即用,一处代码,多处运行。 现已发布2.0版本,主要特性如下: 快速开发:基于 Blazor,在线表单设计,自动生成代码 通用权限:内置通用权限模块,只需

2023-11-17

BootstrapBlazor v8.0.0 已经发布,Bootstrap 样式的 Blazor UI 组件库 此版本更新内容包括: Release 2023-11-16 V8.0.0 What's Changed fix(Table): 修复单元格内溢出文本 Tooltip 未居中问题 by @ArgoZhang in https://github.com/dotnetcore/BootstrapBlazor/pull/2307 f

2023-08-31

播预告】eBPF 到底是可观测领域的神器 or 鸡肋? BootstrapBlazor v7.10.0 已经发布,Bootstrap 样式的 Blazor UI 组件库 此版本更新内容包括: Release 2023-08-30 V7.10.0 What's Changed 破坏性更新 refactor(TableToolbarPopConfirmButton): 组件重命名 Ta

2023-08-01

BootstrapBlazor v7.9.0 已经发布,Bootstrap 样式的 Blazor UI 组件库 此版本更新内容包括: Release 2023-08-01 V7.9.0 What's Changed Bugs fix(Chart): 修复 borderWidth 属性不生效问题 by @azlis in https://github.com/dotnetcore/BootstrapBlazor/pull/1474 fix(Filter):

2023-11-01

BootstrapBlazor v7.12.0 已经发布,Bootstrap 样式的 Blazor UI 组件库 此版本更新内容包括: Release 2023-10-31 V7.12.0 Bugs fix(MenuLink): 修复 MenuLink 地址为 / 时始终高亮问题 by @ray-gilbert in https://github.com/dotnetcore/BootstrapBlazor/pull/2204 fix(Count

2023-07-03

BootstrapBlazor v7.8.0 已经发布,Bootstrap 样式的 Blazor UI 组件库 此版本更新内容包括: Release 2023-07-01 V7.8.0 What's Changed 破坏性更新 chore(Table): 原属性 Searchs 更改为 Searches by @ArgoZhang in https://github.com/dotnetcore/BootstrapBlazor/pull/1417

2024-02-02

BootstrapBlazor v8.2.0 已经发布,Bootstrap 样式的 Blazor UI 组件库 此版本更新内容包括: Release 2024-1-31 V8.2.0 Bugs fix(ITableColumn): 修复 Step 参数不接受 any 值问题 by @ArgoZhang in https://github.com/dotnetcore/BootstrapBlazor/pull/2718 fix(Textarea): 修

2022-10-09

BootstrapBlazor v6.11.0 已经发布,Bootstrap 样式的 Blazor UI 组件库 发布时间 2022-10-06 V6.11.0 V6.10.12 feat(#I5SO59): 组件 Collapse 重构移除 javascript 脚本降低维护成本 #I5SO59 refactor(#I5U6ZK): 组件 AnchorLink 移除 TooltipText 默认值 #I5U6ZK V6.10.1

2022-03-10

另一位联合创始人 Cassidy James Blaede 在公司发展状况比较挣扎的时刻,没有提前通知他们而直接跳槽去了另一家公司并要求获得大量补偿一事。 在推文中,Danielle Foré 先介绍了一下公司目前的经营状况:自疫情开始蔓延以来,