shadcn/ui

06-01 1679阅读

文章目录

  • 前言
    • ✅ 核心特点
    • 📦 支持组件(常用)
    • 🚀 安装使用(框架支持)
      • 初始化(Next.js 项目为例)
      • 添加一个组件
      • 🧠 对比其他组件库
      • 📘 官方资源
      • ✅ 总结
        • ✅ 功能特性:
        • 📦 依赖项(需先安装)
        • 🧱 页面代码:`ChatPage.tsx`
        • 🎨 可选样式增强(全局 CSS)
        • 🧪 进一步可添加功能

          前言

          shadcn/ui 是一个由社区维护的现代 UI 组件库模板集合,专为 React + Tailwind CSS 生态设计,主打:

          • ✨ 可完全控制样式 &行为(不像 MUI、AntD 那样封闭)
          • 🎯 基于 Radix UI(可访问性强)
          • 🧩 可选的组件拼装,不强绑设计系统
          • ⚙️ 支持 Server Component、SSR、RSC 等现代特性

            ✅ 核心特点

            特性说明
            ✨ 美观现代默认采用干净、优雅的设计(类似 Vercel / Linear)
            🎨 Tailwind 驱动100% Tailwind CSS 控制样式,自由修改
            ⚛️ Radix UI 底层提供无障碍可访问性支持(A11y)
            🧱 可组合所有组件是“导入代码”的方式,无 run-time 限制
            🔧 可维护性强你拥有组件代码本体(不再受限组件黑箱)

            📦 支持组件(常用)

            分类组件
            表单Input, Textarea, Select, Switch, Checkbox, Form
            弹窗Dialog, Popover, Tooltip, AlertDialog, Sheet
            导航Tabs, Accordion, DropdownMenu, NavigationMenu
            其他Toast, Badge, Card, Avatar, Skeleton, Progress

            🚀 安装使用(框架支持)

            支持 Vite、Next.js、Remix 等现代 React 框架。

            初始化(Next.js 项目为例)

            npx shadcn-ui@latest init
            

            你会被提示:

            • 是否使用 TypeScript
            • UI 目录位置(如 components/ui)
            • Tailwind 配置路径
            • 是否安装组件(如 Button, Dialog)

              添加一个组件

              npx shadcn-ui@latest add button
              

              生成的文件:

              components/ui/button.tsx
              

              你可以自由修改样式类或行为。


              🧠 对比其他组件库

              特性shadcn/uiMUIAnt DesignChakra UI
              样式控制✅ 完全控制❌ 封闭❌ 封闭⚠️ 类似
              设计系统⚠️ 提供默认样式✅ 有✅ 有✅ 有
              SSR 支持✅ 优秀⚠️ 需调整⚠️ 有限⚠️ 有限
              适合 Tailwind✅ 最佳搭配❌ 不兼容❌ 不兼容❌ 有冲突

              📘 官方资源

              • 官网:https://ui.shadcn.com
              • GitHub:https://github.com/shadcn-ui/ui
              • Demo 示例:https://ui.shadcn.com/docs/components/slider

                ✅ 总结

                适合你吗?条件
                ✅ 喜欢 Tailwind强烈推荐
                ✅ 需要 SSR / RSC 兼容推荐
                ✅ 想要样式可控且干净 UI推荐
                ❌ 想要“开箱即用 + Theme切换 + 组件黑盒”不太适合

                下面是一个基于 shadcn/ui、React 和 Tailwind CSS 封装的 AI 聊天界面模板,具备如下特性:

                ✅ 功能特性:

                • 支持聊天消息滚动显示
                • 用户输入框 + 发送按钮
                • 显示用户消息和 AI 消息
                • 使用 shadcn/ui 组件:Input, Button, Card, ScrollArea, Skeleton
                • Tailwind 风格美观整洁

                  📦 依赖项(需先安装)

                  npx shadcn-ui@latest init
                  npx shadcn-ui@latest add button input card scroll-area
                  

                  🧱 页面代码:ChatPage.tsx

                  import { useState, useRef, useEffect } from "react"
                  import { Input } from "@/components/ui/input"
                  import { Button } from "@/components/ui/button"
                  import { ScrollArea } from "@/components/ui/scroll-area"
                  import { Card, CardContent } from "@/components/ui/card"
                  interface Message {
                    role: "user" | "assistant"
                    content: string
                  }
                  export default function ChatPage() {
                    const [messages, setMessages] = useState([])
                    const [input, setInput] = useState("")
                    const scrollRef = useRef(null)
                    const handleSend = async () => {
                      if (!input.trim()) return
                      const userMsg: Message = { role: "user", content: input }
                      setMessages((prev) => [...prev, userMsg])
                      setInput("")
                      // 模拟 AI 回复
                      setTimeout(() => {
                        const aiMsg: Message = {
                          role: "assistant",
                          content: `你说的是:“${userMsg.content}”`
                        }
                        setMessages((prev) => [...prev, aiMsg])
                      }, 1000)
                    }
                    useEffect(() => {
                      scrollRef.current?.scrollIntoView({ behavior: "smooth" })
                    }, [messages])
                    return (
                      

                  AI Chat Assistant

                  {messages.map((msg, index) => ( index} className={msg.role === "user" ? "ml-auto bg-white" : "mr-auto bg-gray-100"} {msg.role === "user" ? "You" : "AI"}: {msg.content} ))} scrollRef} /
                  input} onChange={(e) = setInput(e.target.value)} onKeyDown={(e) => e.key === "Enter" && handleSend()} /> handleSend}Send
                  ) }

                  🎨 可选样式增强(全局 CSS)

                  body {
                    @apply bg-background text-foreground;
                  }
                  

                  🧪 进一步可添加功能

                  功能shadcn 组件建议
                  Markdown 渲染react-markdown 自定义卡片内容
                  Skeleton 骨架Skeleton 组件用于 AI 回复加载中
                  多轮对话滚动ScrollArea + useRef 自动滚动到底部
                  AI 流式回复用 useEffect 模拟逐字加载即可

                  shadcn/ui
                  (图片来源网络,侵删)
                  shadcn/ui
                  (图片来源网络,侵删)
                  shadcn/ui
                  (图片来源网络,侵删)
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。

目录[+]

取消
微信二维码
微信二维码
支付宝二维码