Blazor全栈是个陷阱
Blazor全栈?别逗了,这玩意儿就是陷阱。生态弱得可怜,AI都不给力,文档还老变。真以为能脱离前端?醒醒吧,小demo可以,真业务?省省吧。
目录8 个章节
前言
大家好,我是曦远~
最近有个项目急着上线
大概就是接受一堆客户端连接上报数据,然后在界面上展示数据和简单的控制
这种场景感觉 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 一样能打💪
_EOF_
Blazor全栈是个陷阱
- 本文作者:
- 程序设计实验室
- 版权声明:
- 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
相关文章
梦想家装平台开发记录,Asp-Net-Core上手实践
DreamingHome Dreaming Home 梦想家,家装平台 EF Core概念 Model: 数据模型,一个普通的C#类 DbContext: 与数据库沟通的桥梁,一个数据库对应一个DbContext 注册EF Core服务 services.AddEntityFrameworkSqlite() .AddDbContextMainContext(options = option
2022-08-17 · AspNetCore · 约 1 分钟
跨平台框架AspNetCore开发实践杂谈
前言 最近边学边做,初步上手了AspNetCore的开发,对MVC这套熟悉了一下,因为之前没有拿来做过独立项目,都是和别人合作开发,所以前后端分离,我都只做WebApi,而且还是很小的项目(课设级别),生产环境用最多的应该是Python的Django框架,这次我把一个之前做的Django项目用AspNetCore重写一遍,性能提升了不少,C#的性能真不是盖的,AspNetCore这个框架的性能也很
2022-08-28 · AspNetCore · 约 1 分钟
操作系统学习二:进程同步与互斥之生产者-消费者问题--NetCore实现
目的 1. 掌握进程(线程)的同步与互斥。 2. 掌握生产者消费者问题的实现方法。 3. 掌握VC的多线程编程方法。 内容 本实验要求设计并实现一个进程,该进程拥有3个生产者线程和1个消费者线程,它们使用10个不同的缓冲区。需要使用如下信号量: 一个mutex信号量,用以阻止生产者线程和消费者线程同时操作缓冲区队列; 一个full信号量,当生产者线程生产出一个物品时可以用它向消费者线程发出信号;
2022-06-17 · 计科基础 · 约 1 分钟
【VB超简单入门】二、知识准备
在开始编程之前,需要先熟悉一下各种操作和术语,以后学习编程才能得心应手。 首先最重要的操作当然就是…电脑的开机关机啦~(开个玩笑哈哈),必须掌握软件的安装和卸载,还有能编写批处理程序对平时的使用也是很有帮助的。 关于各种操作列个表~~ (由于时间关系,先列出相关点,详细操作以后我会慢慢补充~) l 查看、编辑注册表:使用regedit.exe修改系统注册表,我们写程序有时需要将程序的相关配置保存到
2022-11-13 · VB入门教程 · 约 1 分钟
讨论
共 0 条加载评论中…