• 在一个按钮组件的className里塞27个Tailwind类名是什么样一种体验?
  • 发布于 1天前
  • 12 热度
    0 评论
去年翻开同事的代码,看到一个按钮组件的className里塞了27个Tailwind类名。就像有人把字母汤倒进了VSCode里。更要命的是什么?整个项目里每个按钮都有自己独特的"混乱风格"——不同深浅的蓝色、随机的内边距、像是掷飞镖算出来的圆角半径。那一刻我意识到:大部分开发者不是在"使用"Tailwind,而是在"糟蹋"它。

这不能怪他们。Tailwind让写内联工具类变得如此简单,以至于我们忘记了自己本来应该构建的是可维护的代码。让我们来解决这个问题。

第一宗罪:写"工具类小说"
是的,Tailwind是工具优先的。但这不意味着你需要在每个组件里写出14个类名的史诗巨作。如果你的div长这样:
<div className="bg-blue-500 text-white p-4 rounded-lg shadow-lg hover:bg-blue-600 transition duration-300 ease-in-out flex items-center justify-center gap-2 w-full max-w-sm mx-auto border border-blue-700" />
恭喜,你成功让代码审查者哭了。
专业做法:通过CSS中的@apply或JS中的clsx/classnames将重复模式提取为组件类。
/* button.css */
.btn-primary {
  @apply bg-blue-500 text-white p-4 rounded-lg shadow-lg 
         hover:bg-blue-600 transition duration-300 ease-in-out;
}
现在你的JSX看起来是这样:
<button className="btn-primary">点击我</button>
更简洁。可复用。未来的你会感谢现在的你。

第二宗罪:无视设计令牌的存在
如果你的间距、字体大小或颜色都是在随机工具类中硬编码的,那你就没有利用好Tailwind的配置文件。你完全可以在tailwind.config.js中定义品牌颜色、间距比例和排版。为什么要这么做?因为当品牌团队决定你的"主要"蓝色应该深3%时,你不会需要在93个组件中寻找并修改bg-blue-500。
// 堆代码 duidaima.com
// tailwind.config.js
module.exports = {
  theme: {
    extend: {
      colors: {
        brand: {
          primary: '#1e40af',
          secondary: '#f59e0b',
        }
      }
    }
  }
}
然后这样使用:
<div className="bg-brand-primary text-brand-secondary" />
第三宗罪:复制粘贴而不是使用变体
Tailwind有@variants,还有像tailwind-variants或cva这样的库是有原因的。如果你在每个错误消息中都复制粘贴bg-red-500,那你就做错了。你需要的是组件样式的唯一真实来源,而不是一个只是远看起来DRY的意大利面条式混乱。

第四宗罪:响应式和状态类不是随机调料
初学者的Tailwind代码通常看起来像有人随意撒上md:、lg:和hover:类,就像撒调料一样。没有计划。没有一致性。专业人士用设计系统的思维思考:每个断点处什么发生变化?哪些状态真正重要?你的响应式类应该讲述一个故事,而不是情节转折。

糟糕的做法:
<p className="text-sm md:text-lg lg:text-base hover:underline hover:opacity-70 focus:text-xl">你好</p>
更好的做法:
<p className="text-sm md:text-lg hover:underline focus:opacity-70">你好</p>
第五宗罪:与Tailwind对抗而非配置它
如果你发现自己在为Tailwind本可以做的事情编写自定义CSS,那可能是你没有充分配置它。想要特定的网格布局?添加到配置中。需要自定义动画?Tailwind支持关键帧。厌倦了到处输入rounded-xl?让它成为默认值。Tailwind是一个框架,不是一桶工具类。把它当框架来对待。

真相时刻
Tailwind很强大,但只有当你有意识地使用它时才是如此。如果你的代码库看起来像工具汤,那它不是"干净"或"现代"的——它是一个穿着漂亮外衣的未来维护噩梦。整理你的类。使用配置。提取模式。系统化思考。因为在初学者手中的Tailwind是快速交付丑陋但功能性代码的方式。在专业人士手中的Tailwind?那才是超能力。

你是否也曾写过Tailwind"工具类小说"?还是你已经传道配置福音好多年了?在评论区分享你的恐怖故事、胜利经验和犀利观点吧。让我们看看谁才是真正的Tailwind高手。
用户评论