.NET 5下的Blazor是否可以大规模正式使用?
今天在微信群讨论了很多Blazor是否可以正常用的问题。大家争的面红耳赤的。
于是趁着无聊,就水了这么一篇文。
还记得Blazor还在预览版的时候,我就开始关注Blazor了。
那会儿调试Blazor还得在浏览器地址栏输入一堆命令,调试都贼不方便。打包出来也是很大,浏览器也很卡顿。
可以从以下几个方面来说一下为什么我认为Blazor可以在小规模的正式环境中使用。以及哪些地方不太适用Blazor
1.包大小
但是如今几年过去了。Blazor从一开始的一堆好几M的库,到现在5.0版本

Hello World的包大小已经缩减到一百多kb左右了。当然现在依然没法和Vue NG这样的能缩减到50kb以下的框架来比。(这点大小我认为不影响框架加载速度)
2.功能对比
一个优秀的SPA框架,各方面也要优秀。我们可以使用Blazor对比一下Vue.js的功能。
| Vue.js | Blazor | |
|---|---|---|
| 模板 | 支持 | 支持 |
| 状态管理 | 支持 | 不支持 |
| 动画组件 | 支持 | 不支持 |
| 路由组件 | 支持 | 支持 |
| 组件库数量 | 多 | 少 |
| 组件库质量 | 高 | 低 |
| 使用人数 | 多 | 少 |
| 服务器渲染 | 支持 | 支持 |
| 插件 | 多 | 少 |
以上对比来自己我个人的主观使用。
.NET 5.0让我觉得眼前一亮的是提供一个虚拟滚动组件:Virtualize 这个功能Vue.js至今没有官方实现。但是Blazor居然提供了。这里要给微软点个赞。
3.适用场景以及不适用的场景
从Blazor的文档来看,Blazor基本没有对老旧浏览器有一个良好的支持。

浏览器环境
如果有需要兼容IE10或者11+版本的需求,不要选择Blazor。不挑选浏览器环境的话,可以选择Blazor。移动端 TO b项目可以选择Blazor。 To c慎重(毕竟to c客户不能要求别人换浏览器)
CSS功力
为什么我会有提出这个点呢?因为Blazor的UI组件库质量一言难尽。
Element-blazor处于断更状态。几个月没更新了。
Ant-blazor的官网都随时挂掉。组件也贼卡顿。
唯一感觉质量还行的BootStrapBlazor,UI风格有点太老。需要自己调整CSS。(如果对界面要求不高的,可以使用。)
用Blazor的需要什么特殊功能的组件的话(如颜色选择器,Cron选择器),一般找不到合适的第三方。需要自己动手解决写组件的问题。
很多长期做纯后端工作的老铁们都觉得写CSS很费劲。实际上并不是,大约在去年7月之前,我也是一个CSS小菜鸡。但是去年不知道脑子抽什么风。想用自己弄一套组件库出来。于是重温CSS,闲暇时间也撸了几十个感觉还行的组件库(后期会开源,基于Vue.js写的)
总结
如果你正在做一个内部使用的简单后台系统,那完全没问题。如果你要做一个很复杂且要长期维护的项目,建议等Blazor的进一步优化。
欢迎关注我的公众号 :qingchengcoding
一个以ASP.NET Core+Vue.js的Web开发知识的公众号

.NET 5下的Blazor是否可以大规模正式使用?的更多相关文章
- MapReduce: 一种简化的大规模集群数据处理法
(只有文字没有图,图请参考http://research.google.com/archive/mapreduce.html) MapReduce: 一种简化的大规模集群数据处理法 翻译:风里来雨里去 ...
- 使用Keras训练大规模数据集
官方提供的.flow_from_directory(directory)函数可以读取并训练大规模训练数据,基本可以满足大部分需求.但是在有些场合下,需要自己读取大规模数据以及对应标签,下面提供一种方法 ...
- python大规模数据处理技巧之一:数据常用操作
面对读取上G的数据,python不能像做简单代码验证那样随意,必须考虑到相应的代码的实现形式将对效率的影响.如下所示,对pandas对象的行计数实现方式不同,运行的效率差别非常大.虽然时间看起来都微不 ...
- [Asp.Net Core] 关于 Blazor Server Side 的一些杂项, 感想
在2016年, 本人就开始了一个内部项目, 其特点就是用C#构建DOM树, 然后把DOM同步到浏览器中显示. 并且在一些小工程中使用. 3年下来, 效果很不错, 但因为是使用C#来构建控件树, 在没有 ...
- Blazor一个简单的示例让我们来起飞
Blazor Blazor他是一个开源的Web框架,不,这不是重点,重点是它可以使c#开发在浏览器上运行Web应用程序.它其实也简化了SPA的开发过程. Blazor = Browser + Razo ...
- [Asp.Net Core] Blazor WebAssembly - 工程向 - 如何在欢迎页面里, 预先加载wasm所需的文件
前言, Blazor Assembly 需要最少 1.9M 的下载量. ( Blazor WebAssembly 船新项目下载量测试 , 仅供参考. ) 随着程序越来越复杂, 引用的东西越来越多, ...
- Blazor带我重玩前端(六)
本文主要讨论Blazor事件内容,由于blazor事件部分很多,所以会分成上下两篇,本文为第二篇. 双向绑定 概述 如图所示 当点击单项绑定的时候,MyOnewayComponent里的属性值会发生变 ...
- 「译」用 Blazor WebAssembly 实现微前端
原文作者: Wael Kdouh 原文链接:https://medium.com/@waelkdouh/microfrontends-with-blazor-webassembly-b25e4ba3f ...
- 「译」Blazor VS React React / Angular / Vue.js
原文作者: Christian Findlay 原文链接: https://christianfindlay.com/2020/06/04/blazor-vs-react-angular-vue-js ...
随机推荐
- JavaScript——七(继承)
一. 这个样子这个student的类型是person,这个样子写虽然继承了,但是是把父类的属性继承在了student的原型上 为了使student的类型改成他自己就需要加一句"student ...
- 使用SignTool对软件安装包进行数字签名(一)--制作证书
一.制作根证书 1.开始菜单-运行-输入cmd,弹出命令行窗体. 2.输入命令:cd /d F:\SignTool,将当前工作目录修改到SignTool路径下. 3.使用makecert命令制作证书, ...
- leetcode 周赛 205 1576-5508-5509-5510
第四题比较难,看题解用并查集做比较简单,但是我觉得难度在想到用并查集,可能是最近做题少所以想不到吧. 1 替换所有的问号 class Solution { public: string modifyS ...
- bzoj5312 冒险(吉司机线段树)题解
题意: 已知\(n\)个数字,进行以下操作: \(1.\)区间\([L,R]\) 按位与\(x\) \(2.\)区间\([L,R]\) 按位或\(x\) \(3.\)区间\([L,R]\) 询问最大值 ...
- docker07-数据存储
Docker 内部以及容器之间管理数据,在容器中管理数据主要有两种方式: 数据卷(Volumes) 挂载主机目录 (Bind mounts) 数据卷 是一个可供一个或多个容器使用的特殊目录,它绕过 U ...
- Linux Bash Script loop
Linux Bash Script loop shell 编程之流程控制 for 循环.while 循环和 until 循环 for var in item1 item2 ... itemN do c ...
- TypeORM Entity
TypeORM Entity Entity Entity is a class that maps to a database table when using SQL database(or col ...
- text to JSON
text to JSON GeoLocaltion API https://www.cnblogs.com/xgqfrms/p/13283680.html https://repl.it/@xgqfr ...
- OSS & Object Storage Service
OSS & Object Storage Service Object Storage Service https://en.wikipedia.org/wiki/Object_storage ...
- taro 进阶指南
taro 进阶指南 配置 https://nervjs.github.io/taro/docs/config.html https://nervjs.github.io/taro/docs/confi ...