shadcn 初体验:什么场景下使用 shadcn
前端
- # shadcn
- # frontend
- # ui
最近体验了一下 shadcn。它和常见的组件库不太一样,不是安装一个完整的依赖之后直接使用,而是把组件代码放进自己的项目里。这样做的好处是代码完全可控,需要调整样式或交互时,可以直接修改组件本身,不必一直和组件库的默认设计对抗。
它比较适合需要快速搭建界面,同时又希望保留定制空间的项目,例如后台管理系统、内部工具、SaaS 产品和个人项目。尤其是在已经使用 Tailwind CSS,并且不想从头实现按钮、表单、弹窗这些基础组件时,shadcn 能省下不少时间。
组件是怎么生成的
shadcn 的命令行工具会读取项目里的配置,然后从组件注册表获取对应的组件模板。它会根据项目使用的框架、样式方案和路径别名处理模板,把组件源码写入项目,同时补充需要的依赖和工具函数。
所以,执行 add 命令并不是把一个组件库安装到 node_modules,而是完成一次代码生成。生成之后,这些组件就是项目源码的一部分,可以直接阅读和修改。
优缺点
它的优点是组件源码完全属于项目,样式和交互都可以自由修改;基础组件比较完整,也能减少从零搭建界面的时间。因为代码就在项目里,遇到问题时也更容易定位。
缺点也来自这种方式:组件生成后需要自己维护,官方组件更新时不会自动同步。项目中的组件越来越多以后,还需要自己保证代码风格和交互的一致性。对于只想开箱即用、不需要深度定制的项目来说,维护成本可能比传统组件库更高。