前端一直都是开源项目的热门领域,太多耳熟能详的名字:react、vue、bootstrap。对于前端领域每年都有新人来,今年同样不例外。
今天我们推荐的就是2023年最火的前端开源项目,目前在GitHub已超过44K Star,它就是:shadcn-ui。
在JavaScript Rising Stars 公布的2023 年 JavaScript 明星项目榜单中,shadcn-ui 获得了整体推荐的总冠军。
shadcn-ui 是用 React 编写的 UI 组件的集合,允许通过 TailwindCSS 进行自定义样式。shadcn-ui构建于Radix之上,这是一组无头组件,为可访问性和键盘交互等问题提供原语,shadcn-ui 与其他流行库(例如 MUI、ChakraUI、React Spectrum)的区别在于它不是可下载的 NPM 包。相反,您可以通过终端命令集成 shadcn-ui 组件,该命令安装底层依赖项并将组件源代码直接复制到代码库中以进行进一步修改。
列几个shadcn-ui 的核心能力:
下面是它的GitHub star历史,shadcn-ui 于今年1月份创建,不到1年的时间,shadcn-ui 就获得了超过40Kstar,这是多少项目都难以企及的。
从前面的介绍能看出shadcn-ui和传统组件库有明显的差异, 我们也来看看它带来的显著优势:
当然任何事情都是一把双刃剑,在看到这个优势的同时,我们也冷静的来看到一些问题:
shadcn-ui支持和各种框架集成使用,如下:
这也是比较方便快捷方式,你也可以手动来配置,需要一步步将shadcn-ui所需的各种组件安装进项目,比较麻烦,我们还是看下在nextjs中使用的例子。
npx create-next-app@latest my-app --typescript --tailwind --eslint
npx shadcn-ui@latest init
完成后的项目结构如下:
接下来就是添加shadcn-ui的组件了,直接使用cli来添加组件:
npx shadcn-ui@latest add button
添加后在component中可以直接看到button的代码:
接下来就可以直接使用这个组件了:
import { Button } from "@/components/ui/button"
export default function Home() {
return (
<div>
<Button>Click me</Button>
</div>
)
}
Shadcn UI 组件的通用架构如下:
shadcn-ui基于核心原则构建,即组件的设计应与其实现分开。因此,shadcn-ui中的每个组件都具有两层架构。即:
与现有的组件库相比,shadcn-ui 在用户体验和开发速度方面都非常出色,同时还使开发人员能够对他们使用的组件进行细粒度的控制。但是事情没有完美的,收益和风险总是相伴而行,希望在未来shadcn-ui可以发展得更加优秀。