Skip to content

2025 年还在手写 CSS?Tailwind CSS v4 工程化实战指北

毛佳国

如果要在过去五年的前端生态里选拔出一个最具争议、骂它的人和爱它的人一样多、却又偏偏统一了全宇宙技术栈的框架,那毫无疑问是:Tailwind CSS

有多少人在第一次看到以下这种代码的时候,感到了生理上的极其不适和对前端行业倒退的绝望:

<button class="bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded-full shadow-lg transition-transform transform hover:scale-105">
  点击我
</button>

在很多人眼里,这种做法就等于在 2025 年把大家骂了无数遍的内联样式(Inline Styles)又换着名字请了回来,使得本该干净负责页面骨架的 HTML 代码变得肥胖臃肿、面目全非!

但这只是一部分人的偏见,当你真正在一个极其复杂、需要维护好几年的前端工程里使用它,你才能明白由于它为什么能够彻底杀死传统の手写 CSS、甚至 SASS 和 LESS。

让传统 CSS 跌下神坛的三宗罪

在没有 Tailwind 的时代我们怎么写:给这个按钮起个好听的名字、去旁边新建个 .css 文件、开始写样式。

这就引发了维护大项目时由于人类天性导致的必然崩溃:

  1. 起名地狱:为了不和别的冲突,你甚至用上了复杂的 BEM 规范(比如 button--primary__icon)。
  2. 永远不敢删除的旧代码:项目做了一年之后,你不敢删除 CSS 里的任何一行,因为你不知道在这个巨大的项目深处,哪个页面正依赖着名叫 .container-wrapper 的属性。于是 CSS 文件只能越来越大。
  3. 上下文跳跃的割裂感:调一个元素的间距,这你得在这 HTML 文件和 CSS 文件里来回切换,极其割裂了也就是不仅这是没有带有心智的流畅感。

Tailwind 的核心哲学:用原子重塑世界

Tailwind 不是一堆写好的 UI 组件,它是一本极其克制的设计系统字典。

在使用了 Tailwind 以后:

2025 现代工程化中的 Tailwind 实战与解药

当然,如果是一个极其复杂的并且在很多地方要重复使用的组件,谁也不想每次都把这三十个长长的 class 写一遍,这时候就需要 2025 的优雅解药。

第一剂:组件化优先 (React / Vue)

不要妄图用 Tailwind 的 @apply 提取重复样式(官方极其不推荐这么做)。你应该把组件作为封装和复用的最小单元!

在 React 中:

// Button.jsx 组件
export default function Button({ children, className }) {
  return (
    <button className={`bg-blue-500 text-white rounded-md px-4 py-2 hover:bg-blue-600 ${className}`}>
      {children}
    </button>
  );
}

通过组件的参数透传,我们在外层使用的时候不仅可以复用所有长长的基础样式,甚至还能加上覆盖样式,一切都如同搭积木。

第二剂:通过工具类优雅合并

在真实开发中,我们常常遇到各种状态切换导致动态组装一大堆 Tailwind class,如果直接用字符串拼接会极其恶心还会报错。

在 2025 年最标准解法是引入 clsxtailwind-merge 这个神仙级工具。它不仅能让动态参数完美并排,更能聪明的解决“在外面覆盖里面的属性但不生效”的由于权重造成的问题。

面对现实吧,抛弃那些需要为了起名而思考半个小时的 CSS 文件,拥抱 Tailwind,这这是拥抱这个时代最高效的样式开发准则!

上一篇
终极 iOS 代理对决:Sing-box vs Quantumult X
下一篇
旁路由的终极奥义:用 Macvlan 和 OpenWrt 打造不拖垮主网的超级网关