Memos / 碎碎念 — 1 entries #前端
2026.04.09 16:53 #29

最近在**#vibecoding** 很多小项目,叫做自嗨,也可以说是“电子小垃圾”。
研究了一下前端,发现还是有一些挺好的晚饭,简单的页面甚至轻量级的项目(10个页面的我觉得都算)直接让ai用tailwindcss 来写,真的超级快,而且样式也不赖。
玩着玩着,发现一个基于 tailwindcss 的插件,叫做daisyui( https://daisyui.com/ ),还真的是很好看,也很容易调用。唯一的问题就是,这个库是要安装在 nodejs 的基础上的。(https://daisyui.com/docs/install/)

其实 tailwindcss 也是要安装在 nodejs 上的,原理就是在本地开发的机子上运行,然后编译后再上传到服务端,编译的概念无非就是打包只需要的样式以及代码,很轻量。很快。
现在我们用的 tailwindcss 其实都是直接调用一个 cdn 的,其实不是最优解。
(但 10 个 8 个页面这种,我不想折腾什么 nodejs……)
当你使用 时,所有的工作都是在浏览器端实时完成的:
浏览器下载一个巨大的 JS 引擎。
该引擎扫描你的 HTML 页面,看你用了哪些类名。
它在浏览器内存中实时生成对应的 CSS 样式。
缺点: 这种方式运行效率低,且文件体积巨大,不适合正式上线。

然后发现了一个新的 UI 库:Radix(https://www.radix-ui.com/
然后又发现了 https://ui.shadcn.com/ ,这个网站可以查看你要的设计风格,然后一键生成一个npm 的安装代码,比如:npx shadcn@latest init --preset b2oXmBecj --template next
这样就可以直接用npm 来一键安装了这个风格的依赖了。(所以还得是要装 nodejs 哈哈哈)

为什么正式开发需要 Node.js?
Node.js 在这里充当了一个“加工厂”的角色。以下是它必须存在的三个理由:

A. 按需定制与“瘦身”(Purge/Just-in-Time)
TailwindCSS 拥有数以万计的预设类名。如果把全部样式都发给用户,文件可能有几十 MB。
Node.js 的作用: 它会像一个扫描仪,扫描你所有的代码文件(.html, .js, .vue 等),识别出你真正用到的那 1% 的类名。
结果: 最终生成的 CSS 文件通常只有 10KB~50KB,极大地提升了加载速度。

B. 处理复杂的插件(如 daisyUI)
daisyUI 不是简单的 CSS 堆砌,它是一套基于 Tailwind 的组件插件。
daisyUI 需要通过 Tailwind 的配置文件(tailwind.config.js)进行逻辑运算(比如根据你的主题色计算深浅阴影、处理各种 UI 组件的嵌套逻辑)。
这种逻辑运算需要 Node.js 环境来执行脚本,浏览器本身无法理解这种复杂的配置合并。

C. 生态系统的协同 (PostCSS)
Tailwind 通常是作为 PostCSS 的一个插件运行的。Node.js 环境允许你:
自动添加浏览器前缀: 自动处理 -webkit- 等兼容性问题。
嵌套语法支持: 像写 Sass 一样写原生 CSS。
实时预览: 当你保存代码时,Node.js 会瞬间重新编译并刷新页面(HMR),这极大提升了开发效率。

总结

你看到的“直接引用”只是 Tailwind 给你的试用品;而 Node.js 环境则是它的生产线。如果你想使用 daisyUI 提供的精美皮肤、自定义主题,或者追求网页加载速度,就必须让 Node.js 在后台帮你完成繁重的编译工作。

但是好用也确实是好用。有机会研究一下才行

views: 40