You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#/Blazor技术栈中跨Razor、CSS及C#文件压缩CSS类名的理论可行性咨询

C#/Blazor技术栈中跨Razor、CSS及C#文件压缩CSS类名的理论可行性咨询

先跟你聊聊前端常见的CSS类名压缩方案,再说说我在Blazor上的困惑:

在HTML/CSS/JavaScript技术栈中,有一款gulp-minify-cssnames的Gulp插件可以实现CSS类名的压缩。我这里不想纠结它的具体实现细节,但可以提一下核心思路——它本质上是通过正则表达式,在HTML、CSS、JavaScript文件中批量替换带特定前后缀的类名字符串。

举个例子,原始的HTML代码是这样的:

<div class="menu--s--" id="main-menu--s--">
    <div class="menu__item--s--">1</div>
    <div class="menu__item--s--">2</div>
    <div class="menu__item--s-- .menu__item_active--s--">3</div>
</div>

对应的CSS代码:

.menu--s-- {color: red;}
.menu_top--s-- {color: black;}
.menu__item--s-- {color: green;}
.menu__item_active--s-- {color: blue;}
.menu__item_active--s--::before {content: 'active'}

还有JavaScript代码:

var $menuItems =  document.querySelectorAll('.menu__item--s--');
var $mainMenu = document.querySelector('#main-menu--s--');

经过插件处理后,会被转换成更简洁的版本:
处理后的HTML:

<div class="a0" id="a4">
    <div class="a2">1</div>
    <div class="a2">2</div>
    <div class="a2 a3">3</div>
</div>

处理后的CSS:

.a0 {color: red;}
.a1 {color: black;}
.a2 {color: green;}
.a3 {color: blue;}
.a3::before {content: 'active'}

处理后的JavaScript:

var $menuItems = document.querySelectorAll('.a2');
var $mainMenu = document.querySelector('#a4');

你可能会说,这种正则替换的方法不够精准,毕竟跨文件替换CSS类名本来就有风险——没错,而且这款插件甚至不区分标记类型。但不管怎么说,只要遵循BEM这类统一的命名规范,再配合对应的替换逻辑,就能避免破坏应用功能。不过我再强调一遍:这部分的实现细节不是重点,关键是要明确:在HTML/CSS/JS栈中,这种类名压缩的操作是可行的。

现在回到我的核心问题:在C#/Blazor技术栈中,这种跨Razor文件、样式表和C#逻辑文件压缩CSS类名的操作,理论上是否可行?

注意:我不是在问“有没有现成的类似工具”,而是想知道从技术原理上能不能实现——如果可行的话,我可以自己动手开发。

另外还要补充一点:我关心的不是“拿到最终输出的文件后怎么用正则替换”,而是要搞清楚:在项目的bin目录下,有没有哪些文件还保留着可识别、可跨文件同步替换的CSS类名?毕竟我之前主要做Pug/Stylus/TypeScript栈,那套是靠后处理输出的HTML/CSS/JS文件来实现的,但Blazor的编译模型不一样,我得先明确要针对哪些文件下手。

备注:内容来源于stack exchange,提问作者Takeshi Tokugawa YD

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.13 18:34:31