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-11-04

前面一篇sqltoy-orm发版的文章,对mybatis进行了抱怨,客观的说我是希望引起共鸣,如果有质疑则可以通过摆事实讲道理式的逻辑辩论,但大多数人还是不能理解。       对此我表示理解,大多数人都是被mybatis(plus)所熏

2024-01-13

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

2024-08-22

大家好,BootstrapAdmin 通用权限管理后台,由 BootstrapBlazor 组件库全新重构完成 演示网站:https://pro.blazor.zone 欢迎小伙伴们点击查看演示网站,为了减少网站维护工作量,现统一使用 Github OAuth 认证登录演示网站 主要功能 通

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

2024-09-28

BootstrapBlazor v8.10.1 已经发布,Bootstrap 样式的 Blazor UI 组件库 此版本更新内容包括: Release 2024-9-27 V8.10.1 Bugs fix(PopConfirmButton): 修复表格行内删除按钮确认框无法关闭问题 by @ArgoZhang in https://github.com/dotnetcore/BootstrapBlazor/pull/435

2024-09-22

BootstrapBlazor v8.9.3 已经发布,Bootstrap 样式的 Blazor UI 组件库 此版本更新内容包括: Release 2024-9-20 V8.9.3 Bugs fix(AutoFill): 修复按键 ArrowUp/Down/Esc/Enter 触发 OnCustomFilter 回调问题 by @ArgoZhang in https://github.com/dotnetcore/BootstrapBlazor/pull/

2024-07-22

BootstrapBlazor v8.7.3 已经发布,Bootstrap 样式的 Blazor UI 组件库 此版本更新内容包括: ## Release 2024-7-21 V8.7.3 What's Changed Bugs fix(DockView): 修复当前选中 Panel 刷新后丢失问题 by @ArgoZhang in https://github.com/dotnetcore/BootstrapBlazor/pull/3860

2024-07-29

BootstrapBlazor v8.7.4 已经发布,Bootstrap 样式的 Blazor UI 组件库 此版本更新内容包括: Release 2024-7-28 V8.7.5 Bugs fix(SelectTable): 修复内置 InputGroup 组件时搜索栏丢失 Label 问题 by @ArgoZhang in https://github.com/dotnetcore/BootstrapBlazor/pull/3896

2024-10-22

BootstrapBlazor v8.10.4 已经发布,Bootstrap 样式的 Blazor UI 组件库 此版本更新内容包括: Release 2024-10-21 V8.10.4 Bugs fix(ColorPicker): 修复销毁时报错问题 by @ArgoZhang in https://github.com/dotnetcore/BootstrapBlazor/pull/4457 fix(Select): 更新 padding-ri