精华 全栈开发

Tailwind CSS v4 升级避坑指南:@theme 与 unlayered 优先级变化分析

最近把几个项目的样式库升级到了 Tailwind CSS v4,发现底层逻辑有了相当大的革新。

核心变化总结

  1. 无需 tailwind.config.js:直接使用 CSS-first 的配置方式,通过 @theme 定义颜色和间距。
  2. 极速编译:结合 Vite 插件 @tailwindcss/vite,冷启动与 HMR 速度提升了一个数量级。
  3. 优先级变化(重点避坑!)
    • Tailwind 4 的 utilities 均在 @layer utilities
    • 未使用 CSS layer 的三方组件库(如 Element Plus)属于 unlayered
    • 规则:unlayered 声明永远高于任何 layer!如果想覆盖组件库样式,必须使用 class="h-8!" 尾部感叹号语法。

踩过坑的同学举个手,你们觉得 v4 的开发体验如何?

11 回复 308 浏览
编辑于 6 days ago

全部回复

11 条
  • 孙维杰8 days ago

    PostgreSQL 的 JSONB 配合 GIN 索引确实香,直接帮我们砍掉了一个 MongoDB 实例。

    沈凌风7 days ago

    哈哈确实,这个坑我也踩过,层主总结得太精准了。

    周立恒7 days ago

    完全同意层主的看法!我们团队在实践中也是这么处理的。

  • 郑婉清8 days ago

    请教一下楼主,在 Nuxt 4 中如果有大量的服务端并发请求,你们的 Nitro 引擎内存开销如何控制?

    李晓明 楼主 7 days ago

    哈哈确实,这个坑我也踩过,层主总结得太精准了。

  • 王云帆8 days ago

    非常赞同第二点,双 Token 轮换加上黑名单撤销机制,才是无状态会话的最稳妥解法。

  • 张可晗7 days ago

    PostgreSQL 的 JSONB 配合 GIN 索引确实香,直接帮我们砍掉了一个 MongoDB 实例。

    陈铁生6 days ago

    赞同!补充一点:其实在初期规模不大时,甚至可以先从更轻量的方案做起。

  • 郑婉清7 days ago

    请教一下楼主,在 Nuxt 4 中如果有大量的服务端并发请求,你们的 Nitro 引擎内存开销如何控制?

    吴天昊6 days ago

    感谢层主的经验分享,这就去按照这个思路优化一下试一试!

  • 赵小雨7 days ago

    太详实了!正好我们在做老项目的技术栈迁移,BFF 层的隔离思路给了很大启发。

登录后就能参与这个讨论。

环球论坛 Sweep The Globev0.1.0

基于现代化全栈架构构建的技术社区 · 开放、连接与分享

Nuxt 4Spring Boot 3PostgreSQLRedis