找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

88

积分

0

好友

11

主题
发表于 2025-10-6 23:06:46 | 查看: 11| 回复: 0

你是否厌倦了这样的场景?

安装一个组件库,结果发现样式改不了、功能扩展不了,想调整一个小细节还得翻遍文档找 API,最后发现根本不支持。于是只能妥协,或者自己重写一遍。

今天要介绍的 shadcn/ui,彻底颠覆了这个困境。

源码下载:
ui-main.zip (47.58 MB, 下载次数: 0)

它不是组件库,是你的代码

shadcn/ui 最大的创新在于:它不是 npm 依赖,而是直接把源码复制到你的项目里

传统方式:

npm install some-ui-library
import { Button } from 'some-ui-library'

shadcn/ui 方式:

npx shadcn-ui add button
# 源码直接生成到 components/ui/button.tsx

这意味着什么?代码完全属于你。想改样式?改。想加功能?加。想重构?随便。没有任何限制。

技术架构:简单而优雅

shadcn/ui 基于三个核心技术栈:

1. Radix UI - 负责行为

提供无障碍访问、键盘导航、焦点管理等底层能力。你不用担心 a11y 问题,开箱即用。

2. Tailwind CSS - 负责样式

所有样式都是 Tailwind 类名,直观易懂。想改颜色?改个类名就行。

3. CVA - 负责变体管理

通过 class-variance-authority 管理组件的不同状态:

const buttonVariants = cva("base-styles", {
  variants: {
    variant: {
      default: "bg-primary text-white",
      outline: "border border-gray-300",
      ghost: "hover:bg-gray-100"
    },
    size: {
      sm: "h-9 px-3",
      lg: "h-11 px-8"
    }
  }
})

类型安全、易于扩展、一目了然。

实际使用:5 分钟上手

初始化项目

npx shadcn-ui@latest init

回答几个问题(TypeScript?Tailwind 配置路径?),自动完成配置。

添加组件

npx shadcn-ui add button dialog form

组件源码会出现在 components/ui/ 目录,直接就能用:

import { Button } from "@/components/ui/button"

export default function Page() {
  return (
    <div>
      <Button variant="default">点击我</Button>
      <Button variant="outline">次要按钮</Button>
      <Button variant="ghost" size="sm">小按钮</Button>
    </div>
  )
}

自定义修改

想让按钮更圆?打开 button.tsx,改一行代码:

// 把 rounded-md 改成 rounded-full
"inline-flex items-center rounded-full ..."

就这么简单。

主题系统:深色模式开箱即用

shadcn/ui 使用 CSS 变量实现主题:

:root {
  --primary: 222.2 47.4% 11.2%;
  --secondary: 210 40% 96.1%;
  --destructive: 0 84.2% 60.2%;
}

.dark {
  --primary: 210 40% 98%;
  --secondary: 217.2 32.6% 17.5%;
}

切换主题只需要切换 dark 类名,所有组件自动适配。

为什么开发者都在用它?

1. 完全控制权

代码在你手里,想怎么改就怎么改。不用等库更新,不用提 PR。

2. 零学习成本

如果你会 React 和 Tailwind,就已经会用 shadcn/ui 了。

3. AI 友好

代码结构清晰,非常适合 AI 辅助开发。告诉 Cursor 或 Copilot:"修改这个按钮加个图标",它能准确理解并修改。

4. 按需使用

只添加需要的组件,没有冗余代码。项目打包体积完全可控。

5. 生产级质量

  • 完整的 TypeScript 支持
  • 无障碍访问标准
  • 响应式设计
  • 动画流畅自然

适合什么场景?

SaaS 产品 - 需要快速迭代和定制化
企业后台 - 需要统一设计系统
个人项目 - 想要高质量 UI 但不想从零开始
设计系统 - 作为基础组件库进行二次开发  

社区生态

  • 96k+ Stars - GitHub 前端项目顶流
  • 26k+ 项目使用 - 生产环境验证
  • 活跃的社区 - 问题响应快,文档完善
  • 丰富的模板 - 各种场景的起始模板

快速开始

  1. 访问官网:https://ui.shadcn.com
  2. 选择你的框架(Next.js / Remix / Vite)
  3. 运行 npx shadcn-ui@latest init
  4. 开始添加组件

建议:先从 Button、Card、Dialog 这些基础组件开始,熟悉代码结构后再探索更复杂的组件。

写在最后

shadcn/ui 证明了一件事:有时候最好的库,就是不是库

它给你的不是黑盒依赖,而是高质量的代码模板。不是限制你的框架,而是帮你快速起步的工具。

如果你还在为组件库的限制而烦恼,不妨试试 shadcn/ui。它可能会改变你对前端组件的认知。


关注《云栈大前端》,获取更多前端、移动、全栈领域的开源项目深度解析!


📦 项目信息

GitHub 地址:
https://github.com/shadcn-ui/ui

官方文档:
https://ui.shadcn.com

快速开始:  

npx shadcn-ui@latest init

🏷️ 标签:#shadcn-ui #Github #React #Tailwind #组件库 #前端工程化 #开源项目


您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|云栈社区(YunPan.Plus) ( 苏ICP备2022046150号-2 )

GMT+8, 2025-10-16 20:54 , Processed in 0.060685 second(s), 43 queries .

Powered by Discuz! X3.5

© 2025-2025 CloudStack.

快速回复 返回顶部 返回列表