You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
-
一般的那些就不说了,大同小异,最大问题就是丑
然后之前用nextUI(heroUI),也是不太顺手,用起来感觉和其他也差不多
直到用了shadcnUI,妈呀,太爽了
主要有几点
第一点,UI风格适配性非常高
因为很简单和纯粹,加上默认是黑色风格,基本上所有项目都能直接用
而正常的UI库风格化太严重了,比如ant design这种丑风真的很掉价,semi呢?一但搭得不好也很容易翻车
shadcn反倒没这些问题,无论c端,b端,大项目小项目都能用,区分主要靠配图和主题色,真的很轻松,效果也很好
再也不用担心风格化不好搭,也不用担心改主题太麻烦了
第二点,回归排版
和上面是相关的... 就是重点应该是在我们自己如何排版内容,让用户使用得更方便
但如果UI库太抢戏,反倒没有任何好处
用shadcnUI搭呢,简简单单搭起来效果也不错,这就很爽
第三点,无限制classNames
这个也是非常好用的功能,其他UI库要覆盖样式简直是噩梦
还有传统的透传className属性也是很蠢的做法,如果组件很多层就会出现wrapperClassName,contentClassName... 这种很蠢的属性出现,和第二点也是很相关
一个组件的属性,应该更多的是控制属性的功能和状态,结果40%的属性是用来覆盖样式的,这合理吗?
而且每新增一层,就多一个属性,有时候忘记了还得再更新一个版本...
并且还要自己去看看到底这些属性是用在哪个dom上
而classNames就是很轻松解决这些问题,一个属性就是专门来控制样式的,不管你里面有多少层,就一个属性
然后配置也很轻松,只要dom一看role,就能轻松改掉,非常非常合理
还有的cn函数(原子化样式Merge),这才是覆盖样式的正确方法啊,之前的important,style,css 变量覆盖方法都是不合理的...
第四点,专业事情交给专业做
我一直觉得很蠢的事情之一就是每家UI库自己实现逻辑... 然后要么缺胳膊少腿,要么就是花大量修这些逻辑的bug...
搞什么啊... 直接用第三方不好吗?比如toast(sonnor),table(@tanstack/table),vitrual...
这才是headless的应用啊,这才是关注点分离,这才是UI库就该只做UI的初衷啊。
第五点,安装无负担
每次安装一个UI库都巨麻烦... 然后semi甚至用不了cdn的模式,还有各种什么插件要安装,好烦
甚至还会遇到依赖冲突啊,插件影响构建啊,适配性啊,巴拉巴拉的,这真的合理吗?
而shadcn就很简单啊,底层就是tailwindcss+postcss,这个本来所有项目都有的。
然后安装可以一个一个组件安装,有些带了第三方包但问题也不大
再加上是下载复制的代码到项目了,就不用出问题还得到node module里疯狂找,甚至找的还是编译后的代码...
就该这样,完全无负担... 分享代码也方便
真的,现在很多UI库的安装和使用比创建项目还麻烦...
总之,shadcnUI的实现方式和概念是我比较喜欢的,用起来非常顺手和合理,是真的有思考UI库的意义,而不是纯粹叠更多的组件或者有些UI库(非常非常多)不仅丑而且毫无意义。
缺点:
当然,也有一些缺点
比如更新是个悖论
shadcn是下载到项目里,好处是自己可以定制,但是一但定制了,如果shadcn更新了就麻烦了,因为你要更新就会被覆盖,等于白改... 那如果你不改,他这个下载到本地的做法又毫无意义
而且检查更新也很麻烦...
所以这在点上,可能还不如直接变成包来得好
第二个缺点,就是组件太少了
甚至一些很基础的组件都没有... 然后全靠社区互助...
所以,shadcn虽好,但现在并不适合所有人,比较适合的是有动手能力的,可以折腾,可以自己实现的,那效果会非常好
但是如果本来就没任何追求,还是老老实实用随便一个其他UI库
Beta Was this translation helpful? Give feedback.
All reactions