Tailwind CSS 真有那么好吗?讨厌它的前六大原因

开发 前端
Tailwind CSS 为每种可能的场景提供了数千个实用程序类,但这也意味着你必须记住或查找所有这些类及其含义。这可能会令人不知所措,尤其是对于 Web 开发的新手来说。

Tailwind CSS 是一个受欢迎的“实用优先”的 CSS 框架,声称可以帮助你更快、更轻松地创建自定义设计。然而,并不是每个人都对 Tailwind CSS 感到满意。事实上,有很多原因让你应该避免使用它,而坚持使用纯 CSS 或其他框架。以下是你应该讨厌 Tailwind CSS 的主要原因:

  1. 它失去了 HTML 和 CSS 的语义
  2. 它在你的 HTML 中大量添加类
  3. 它不具有可扩展性和可重用性
  4. 它生成的 CSS 文件庞大,影响性能
  5. 它只适合那些不想理解和学习 CSS 的人
  6. 它有一个庞大的库,学习普通的 CSS 更容易

1.它失去了 HTML 和 CSS 的语义

Web 开发的主要原则之一是将你的网站的结构、表现和行为分开。HTML 旨在为你的内容提供结构和含义,CSS 旨在为你的元素提供表现和外观,而 JavaScript 旨在为你的网站提供行为和交互性。

然而,Tailwind CSS 违反了这一原则,将表现与结构混合在一起。而不是使用反映你的元素的目的和功能的有意义和描述性的类名,Tailwind CSS 使用的是描述它们外观的通用和难懂的类名。例如,以下是 Tailwind CSS 中的一个简单卡片组件的样子:

<div class="max-w-sm rounded overflow-hidden shadow-lg">
  <img class="w-full" src="some-image.jpg" alt="Some image">
  <div class="px-6 py-4">
    <div class="font-bold text-xl mb-2">Some title</div>
    <p class="text-gray-700 text-base">Some text</p>
  </div>
</div>

这些类名并不能告诉你关于元素的意义或功能的任何信息。它们只告诉你它们是什么样子。这使得理解和维护你的代码变得困难,因为你必须记住每个类的作用以及它如何影响你的组件的布局和设计。

与此相比,使用纯 CSS,你可以使用语义化和描述性的类名,这些类名反映了你的元素的含义和功能:

<div class="card">
  <img class="card-image" src="some-image.jpg" alt="Some image">
  <div class="card-content">
    <div class="card-title">某标题</div>
    <p class="card-text">某文本</p>
  </div>
</div>

仅通过查看其类名,你就可以轻松地知道每个元素的功能,并通过编辑 CSS 文件来更改其外观。

2.它使你的 HTML 充斥着大量的类

Tailwind CSS 的主要批评之一是它迫使你编写充斥着数十个实用程序类的 HTML,使其难以阅读和维护。例如,这是 Tailwind CSS 中的一个简单按钮的样子:

<button class="bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded">
  点击我
</button>

与此相比,在纯 CSS 中,你可以使用单个类名并在单独的文件中定义样式:

<button class="btn-blue">
  点击我
</button>

纯 CSS 比 Tailwind CSS 更简洁和语义化。你可以轻松地通过查看其类名来知道按钮的功能,并通过编辑 CSS 文件来更改其外观。使用 Tailwind CSS,你必须记住很多类名及其含义,并且每次想要调整设计时都必须修改 HTML。

Tailwind CSS 主张将所有样式放在你的 HTML 中,而不是将它们分离到不同的文件或层中。这违反了 Web 开发的核心原则之一:关注点分离。通过将表现与内容混合,你违反了代码的模块性和可维护性。你还使在不同的上下文或设备中重用或覆盖样式变得更加困难。

3.它不具有可扩展性和可重用性

Tailwind CSS 的另一个问题是它不具有可扩展性和可重用性。Tailwind CSS 鼓励你通过对其应用多个实用程序类来单独设置每个元素的样式。然而,这导致你的代码中出现重复和不一致,因为你必须为类似的元素重复相同的类或为不同的变体稍作更改。

例如,假设你有两个看起来相似但颜色不同的按钮:

<button class="bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded">
  蓝色按钮
</button>

<button class="bg-red-500 hover:bg-red-700 text-white font-bold py-2 px-4 rounded">
  红色按钮
</button>

两个按钮除背景颜色外都有相同的类。这意味着你必须为每个按钮重复相同的类,使你的代码冗长和多余。此外,如果你想更改按钮的某些内容,例如字体大小或边框半径,你必须在多个地方进行更改,这使得你的代码容易出错和不一致。

与此相比,在纯 CSS 中,你可以为两个按钮使用单个类名,并使用修饰符或变量进行不同的变体:

<button class="btn btn-blue">
  蓝色按钮
</button>

<button class="btn btn-red">
  红色按钮
</button>

你可以为两个按钮使用单个类名,并使用修饰符或变量进行不同的变体。这使得你的代码简洁且一致,你可以在一个地方更改按钮的某些内容。

4.它生成的 CSS 文件庞大,影响性能

Tailwind CSS 的另一个缺点是它生成的 CSS 文件庞大,可能会对你的网站性能产生负面影响。Tailwind CSS 附带了数千个实用程序类,涵盖了几乎所有可能的样式变体。然而,这些类中的大多数在你的项目中从未使用过,它们只是为你的 CSS 文件增加了不必要的膨胀。

根据官方文档,默认的 Tailwind CSS 文件大小超过 2.4 MB,对于生产网站来说太大了。即使在压缩文件后,它仍然保持在约 46 kB,这仍然比大多数其他 CSS 框架大。

为了减小文件大小,Tailwind CSS 推荐使用一个名为 PurgeCSS 的工具,该工具扫描你的 HTML 文件并从你的 CSS 文件中删除任何未使用的类。然而,这为你的构建过程增加了额外的步骤,如果 PurgeCSS 未能检测到在你的代码中动态或有条件地使用的某些类,它也可能引入错误。

  1. 它只适合那些不想理解和学习 CSS 的人

Tailwind CSS 也对你学习和理解 CSS 产生了负面影响。使用 Tailwind CSS,你实际上是依赖于一个声称是 CSS 样式替代品的框架,但实际上仍然需要你知道 CSS 样式来使用它。例如,你仍然需要知道如何使用 flexbox、grid 或 position 属性来布局你的元素,但是你不是直接在你的 CSS 文件中使用它们,而是使用模仿它们的 Tailwind CSS 类。

以下是文章的翻译:

5.它只适合那些不想理解和学习 CSS 的人

Tailwind CSS 也对你学习和理解 CSS 产生了负面影响。使用 Tailwind CSS,你实际上是依赖于一个声称是 CSS 样式替代品的框架,但实际上仍然需要你知道 CSS 样式来使用它。例如,你仍然需要知道如何使用 flexbox、grid 或 position 属性来布局你的元素,但是你不是直接在你的 CSS 文件中使用它们,而是使用模仿它们的 Tailwind CSS 类。

这不仅令人困惑,而且容易误导。你并没有学习实际的 CSS 属性和值,而是学习 Tailwind CSS 类及其含义。这可能会让你认为你知道 CSS,但实际上,你只熟悉 Tailwind CSS。如果你遇到 Tailwind CSS 未提供你需要的类的情况,或者你想切换到另一个框架或工具,你将很难理解或编写实际的 CSS 代码。

6.它有一个庞大的库,学习普通的 CSS 更容易

Tailwind CSS 为每种可能的场景提供了数千个实用程序类,但这也意味着你必须记住或查找所有这些类及其含义。这可能会令人不知所措,尤其是对于 Web 开发的新手来说。

此外,Tailwind CSS 并不遵循 CSS 的标准命名约定或语法。例如,它不使用破折号或驼峰命名来分隔类名中的单词,而是使用冒号或括号。它不使用百分比或像素来指定值,而是使用任意的数字或字母。这可能会使你的代码看起来不一致和不熟悉。

相比之下,学习普通的 CSS 要简单得多,也更直观。你只需要学习标准化的、得到浏览器广泛支持的基本属性和值。你还可以使用自定义属性或变量来创建符合你需求的自己的命名约定和值。你还可以使用在线资源或工具来交互式和直观地学习和练习 CSS。

责任编辑:武晓燕 来源: 大迁世界
相关推荐

2023-09-28 13:27:40

Tailwind浏览器CSS

2023-02-06 10:37:50

数据驱动IT领导者

2015-04-14 11:31:35

软件软件招人讨厌

2014-12-02 09:57:41

Node.js

2014-12-03 10:14:11

Node.js

2010-09-09 13:54:06

DIV CSS

2020-06-17 07:00:00

Java数据科学家

2017-08-08 16:35:26

Python爆红原因

2016-11-29 16:29:25

国产存储失败

2013-08-12 09:51:23

周鸿祎互联网

2009-07-06 09:16:30

ERP人才流失

2023-08-28 14:13:08

2012-02-07 13:29:25

云计算HP

2022-08-07 23:37:53

测试软件开发自动化

2022-05-31 21:08:41

云原生容器

2010-09-07 14:14:46

DIV+CSS

2013-11-13 10:20:13

运维管理数据中心

2015-08-24 10:30:25

数据中心选址

2010-09-03 14:46:46

CSS缩写CSS

2014-07-26 09:56:43

WOT2014敏捷开发PO
点赞
收藏

51CTO技术栈公众号