6月3日 00:08

TailwindCSS JIT 模式是什么?任意值语法和按需生成原理

JIT(Just-In-Time)模式是 TailwindCSS v3 的默认引擎——按需生成 class,而不是预生成所有可能的组合。这让产物体积从 MB 级降到 KB 级,同时支持任意值语法。

JIT 之前:AOT 模式

TailwindCSS v2 及以前用 AOT(Ahead-Of-Time)模式:构建时生成所有 class 组合(所有颜色 x 所有尺寸 x 所有断点),产物可能 3-5MB。然后通过 purge 删除未使用的 class。

问题:不支持任意值(text-[13px] 这种写法不工作),构建慢,purge 配置容易出错。

JIT 模式的工作原理

JIT 不预生成所有 class,而是扫描源码中实际使用的 class,只生成这些。你写了 text-red-500 就生成,没写就不生成。

结果:

  • 开发时 CSS 只有几 KB(而不是几 MB),浏览器加载快
  • 支持任意值:text-[13px]、grid-cols-[17]、top-[calc(100%-1rem)]
  • 不需要 purge 步骤(JIT 本身就是按需生成)

任意值语法

方括号 [] 里写任意 CSS 值:

html
<div class="text-[13px] mt-[27px] bg-[#1da1f2]"> <div class="grid-cols-[1fr_2fr_1fr]"> <div class="top-[calc(100%-1rem)]">

任意值是 JIT 的杀手锏——不再被预定义的断点/颜色/间距限制。但不要滥用:如果一个值在多处使用,应该加到 @theme 配置里(如 --spacing-18: 4.5rem),而不是到处写方括号。

JIT 的局限

  • 动态拼接的 class 无法被检测(const color = 'bg-' + variant)
  • 某些复杂表达式在方括号里可能解析失败(包含 _ 和空格的值需要特殊转义)
  • 构建时需要扫描所有模板文件(大项目可能稍慢)

v4 的改进

v4 的 Oxide 引擎进一步优化了 JIT——用 Rust 重写扫描和生成逻辑,构建速度提升 10 倍。同时改进了任意值解析,支持更多 CSS 函数和表达式。

标签:Tailwind CSS