目前痛点
- 之前的版本体验差。项目使用 tailwindcss,由于 tailwind 在
v2.1+
之后才支持JIT
模式,所有很多随意的宽度(比如w-123
)啥的不支持,要么在全局样式中的某个位置添加这样一个工具类,要么只能在tailwind.config.js
去定义,但是你又不能穷举所有的数字。 - 本地开发会比较慢。tailwind 的
PurgeCSS
这个清除操作仅在生成构建下有效,而开发环境下仍要使用包含了所有规则巨大的 CSS 文件。这在 Webpack 中表现可能并不明显,但在 Vite 中却有着巨大的影响,毕竟其他内容的加载都非常迅捷。 - 性能不是太好。从内部实现上看,Tailwind 依赖于 PostCSS 的
AST
进行修改,并且 Tailwind JIT 依赖于对文件系统的预扫描,并使用文件系统监听器来实现 HMR。文件 I/O 不可避免地会引入开销,而你的构建工具实际上需要再次加载它们。 - WindiCSS 已不再维护
UnoCSS 介绍
虽然目前 Tailwind 还不错,但是 UnoCSS 有更大的优势:
- 直观且完全可定制。像 Tailwind 的一些约定是内置的,你不能随意修改
- 预设功能。通过预设功能,可以直接支持 Tailwind/WindiCSS…的写法;并且可以共享给他人你的自定义预设。
- 跳过解析,不使用 AST。性能更好。
- 其他优势:
- 纯 CSS 图标
- 可变修饰 (Variants)
- 属性化模式 (Attributify Mode)
- CSS 作用域
- Shortcuts:多个原子合成一个
- 网络字体
- …
是否使用
新项目直接使用 UnoCSS,使用 tailwind 预设,可以直接上手。
老项目的话,tailwind 目前还不是瓶颈,需要的功能都有,暂不需要更新。