Blazor全栈是个陷阱

前言

大家好,我是曦远~

最近有个项目急着上线

大概就是接受一堆客户端连接上报数据,然后在界面上展示数据和简单的控制

这种场景感觉 Blazor 还挺合适的,折腾之心蠢蠢欲动

于是掏出了 Blazor 开搞

现在 .NET9 的 Blazor 已经进化了,像 Next.js 那样可以把 server 和 client 放在同一个项目里跑,不过还是差了点,WebAssembly 的 client 必须单独一个 project

也很好理解,WebAssembly 毕竟是一个单独的程序集,要分发到浏览器端运行的

不过搞了半天,我后面还是放弃了

在意识到浪费了太多时间之前,我及时跳坑了🤣

PS: 文章只是个人观点,仅代表作者自己的看法,不喜勿喷

原因

原因有几个方面

生态问题

Blazor 的组件库有点缺乏,我倾向于使用 Tailwind CSS 组件库,这点要给 Flowbite 点个赞,不仅提供了支持,还开了个官方的 Flowbite-Blazor 项目,不过还处在早期开发状态;还有一个 LumexUI,虽然 star 不多,但组件方面已经挺完善的了,可堪一用。

这么一看,生态似乎还好,反正都是用 Tailwind CSS,缺少的组件我自己封装就完事了,还可以搭配 JSInterop 实现交互。

如果在几年前,确实是这样的。

但是,「大人,时代变了」,我之前也很多次说到了,现在是 AI 时代了,什么是 AI 时代?就是要尽可能利用好 AI 去做一些重复性的、不重要的工作。

在我看来封装常用组件,做简单的页面布局,这些工作完全可以交给 AI 生成,之后再自己改一改,这样才能提高效率。

也正是因为生态问题,AI 对 Blazor 的支持比较有限,比起前端技术栈,AI 体验相差较多。

稳定性问题

这里不是说框架的稳定性

是文档、API的稳定性

Blazor 还在发展中,很多功能和写法变化太快,就像 Auth 一样,变来变去的,现在让 AI 生成还可以拿几个大版本之前的写法来糊弄我,这不是坑我吗😂

之前大家总说前端更新得太快,学不动了

但前端变来变去,还是那些东西,无非就是 JavaScript 和 CSS

但前端变来变去,还是那些东西,无非就是 JavaScript 和 CSS。

React 这样的框架,JSX 完全就是在写 JavaScript。

Tailwind CSS 归根到底还是 CSS。

而 Blazor 就不一样了 ------ 它的生态和写法会直接跟着 .NET 版本走,每次 .NET 发大版本,API 改动幅度不小。

于是可能经常会遇到「文档和示例用的是旧写法」「AI 生成的代码直接跑不通」「StackOverflow 上的答案全是过时的」。这种不确定性会导致开发效率大打折扣。

全栈的错觉

Blazor 最大的卖点就是「全栈」,可以前后端都写 C#,不用管 JS,不用折腾 Node,不用 npm/yarn/pnpm,不用面对一大堆前端工程化配置,看起来很美好。

但这其实是个陷阱。

因为你终究还是要面对前端世界。

  • 你要做炫酷交互,最后绕不开 JavaScript;
  • 你想接入成熟的前端库(比如图表、富文本编辑器),要么等社区封装,要么自己写 JSInterop;
  • 你要优化构建、部署、SEO、SSR,Blazor 的那套体系就没法和 Next.js、Nuxt 这种前端框架相比。

换句话说,Blazor 的「全栈」更像是「把前端尽量弱化」,但不是「完全替代前端」。这就像是「你以为不用学 JS 了,其实你只是不知道你哪天会被微软教做人」。

学习成本与团队问题

还有一个现实点的因素:团队。

前端工程师基本都熟悉 React/Vue/Svelte 这一类技术栈,而 Blazor 在前端圈几乎是小透明。要是做个人项目,折腾折腾还行;但要是做团队协作,Blazor 直接劝退大部分前端。

而且 AI 在 React/Vue 这类主流框架上已经能给到非常成熟的支持,从代码生成、Bug 定位到最佳实践提示,几乎就是「你的副驾」。但在 Blazor 上,AI 的帮助有限,很多时候还会给你错的答案。

这就意味着,Blazor 看起来能统一语言,实际上却可能把你锁死在一个「别人帮不上忙」的生态里。

性能与部署

再说个我遇到的小坑:WebAssembly。

Blazor WebAssembly 本质上是把 .NET runtime 搬进浏览器跑,再加载程序集。第一次加载的时候,体积往往是几十 MB 起步。虽然现在有 AOT 和压缩,但体验还是不如主流前端框架。

Blazor Server 模式虽然轻量,但是需要长连接(SignalR),一旦并发量上去,服务器压力会非常大。等用到生产环境,就会发现「小 demo 可以,真要跑业务就得掂量掂量」。

不过 Server 模式在我这次的项目里非常合适,这种项目用的人不多,不会有太大的服务器压力,Blazor 提供的数据交互和长连接优势还是很明显的,可惜没能驾驭哈哈哈🤣

小结

Blazor 并不是一个坏框架,它在某些场景下确实很合适,比如:

  • 内部工具 / 管理后台;
  • 小团队 / 个人项目;
  • 对 .NET 技术栈高度依赖的公司。

但是,如果你想用「Blazor 全栈」去替代主流前端栈,甚至幻想着「一个人写 C# 就能搞定所有 Web 项目」,那大概率会掉坑里。

它解决了一部分问题,但引入了更多潜在的坑。🤣

全栈不是陷阱,「Blazor 全栈」才是陷阱

所以我的建议是:如果喜欢 C#,用 Blazor 做一些小工具是挺爽的。但如果要做严肃的生产项目,尤其是需要长期维护、团队协作、快速迭代的项目,还是乖乖用 React / Vue / Angular 吧,别和自己过不去。

不过 Blazor 的潜力我还是很看好的,或许有一天,Blazor 全栈能和 Next.js 一样能打💪

相关推荐
界面开发小八哥20 天前
界面控件Telerik UI for Blazor 2025 Q2新版亮点 - AI集成全面增强
人工智能·ui·blazor·用户界面·telerik
SchuylerEX1 个月前
第六章 JavaScript 互操(2).NET调用JS
前端·c#·.net·blazor·ui框架
SchuylerEX2 个月前
第六章 JavaScript 互操(3)JS调用.NET
前端·javascript·c#·.net·blazor
known2 个月前
基于Blazor实现的简易进销存管理系统
blazor
百锦再3 个月前
.Net 优秀框架 ABP全面详解
microsoft·.net·web·blazor·abp·razor
百锦再3 个月前
Razor编程中@Helper的用法大全
.net·web·blazor·tag·core·razor·helper
时光追逐者4 个月前
一个开源的 Blazor 跨平台入门级实战项目
c#·asp.net·.net core·blazor
known5 个月前
基于Blazor实现的运输信息管理系统
blazor
时光追逐者5 个月前
在 Blazor 中使用 Chart.js 快速创建数据可视化图表
开发语言·javascript·信息可视化·c#·.net·blazor