为什么选择组件库?
一般来说,公司在构建Web应用程序时会选择组件库,以简化重复的任务。
组件库提供了一系列开箱即用的组件,如选择框、输入框、复选框等。这些组件具有可自定义的样式或内置的吸引人的样式,可以快速开发出外观美观的网站,而无需从零开始。
总之,我们通常在两种场景下使用组件库:
- 外部工具:直接面向公司用户,通常与公司的风格一致,外观更美观,响应更灵敏。
- 内部工具:针对公司员工内部使用,强调设计美学和快速功能实现。
内部工具场景的最佳选择
MUI
优势
MUI的组件是非常全面的,MUI的组件由几部分组成,包括:
- MUI Core:核心组件,包括按钮、表单、图标、图表、表格等。
- MUI X:高级组件,包括数据表、复杂图表等。
使用MUI基本上可以覆盖所有的场景,无需为复杂的数据处理场景和展示而选择其他组件库。
如果你喜欢Material Design的风格的设计,使用MUI是你的最佳选择。你可以不做任何修 改的情况下构建出来一套完整的Google风格的应用。
劣势
MUI X中的复杂数据处理组件是需要付费的。 MUI作为Material Design的实现,其设计风格是比较严谨的,对于一些需要自定义设计风格的场景,可能需要额外的工作量。 MUI的自定义Style系统是使用EmotionJs进行整体布局的样式调整,这可能需要一些学习曲线,可能不太适合直接开发,需要查阅文档来进行某些样式修改。 如果你不喜欢CSS-IN-JS的方式,MUI可能不是你的最佳选择。
Shadcn UI
优势
作为一个相对较新的项目,Shadcn UI在开源社区中迅速得到了认可。并且Shadcn由于是新构建的项目,没有历史包袱,可以更好的适应新的技术栈。
Shadcn UI的设计风格偏向于商业风格,具有干净的用户界面,适用于内部工具和严肃的应用场景。Shadcn UI支持自定义主题,还有一些预制的风格,你可以选择自己的喜欢的样式进行安装和修改,这对于一些不需要自定义设计风格的场景,可以快速的构建出来一个应用。
Shadcn UI最大的优势是他并不是一个组件库,Shadcn UI不是一个被npm分发的库,接入Shadcn UI是直接使用代码进行构建,这意味着你可以直接修改Shadcn UI的代码,而不需要额外的工作量。
劣势
Shadcn UI的主题是基于CSS变量实现的,这意味着它不支持IE11。如果您需要支持IE11,那么Shadcn UI可能不是您的最佳选择。
并且Shadcn UI的主题修改方式是CSS variables or Tailwind CSS utility classes,所以如果你使用CSS-IN-JS的方式,可能需要额外的工作量。
Shadcn UI相对于其他组件库的维护时间较短,对于比较复杂的组件,比如DataGrid,Chart等,目前还不支持,还需要寻找其他的解决方案,这意味着你不能使用一个组件库完成你的所有工作。
Chakra UI
优势
Chakra UI是一个风格比较商业的组件库,没有绑定某种特殊的风格,在使用上比较符合大多数人的审美。
作为一个组件库,Chakra UI有一个非常庞大的模板市场
,你可以在Chakra UI的模板市场找到大多数主流场景的完整模板,比如电商,SaaS官网等。下载模板之后,你可以直接使用,也可以进行修改。
Chakra UI的大多数功能是不需要配置的,这对于制作一个快速的原型是非常有帮助的。并且天然对于响应式的支持,你可以在不同的设备上进行预览。
Chakra UI是SEO友好的,这对于制作需要SEO友好的产品是非常有必要的。
劣势
Chakra UI的组件丰富度是不够的,对于一些复杂的场景,比如数据处理,图表等,Chakra UI并不支持,你需要额外的工作量来寻找其他的解决方案。
最好不要使用Chakra UI来构建复杂的工具类产品和SaaS,因为他对组件的定制化能力也不够好,使用Chakra UI制作Landing Page才是最好的选择。
虽然Chakra UI有丰富的模板市场,但是这些模板并不是免费的,你需要额外的费用来购买模板。
Ant Design
优势
作为一个成熟的千亿美金的上市公司维护的组件库,Ant Design的丰富度是最好的,几乎可以满足所有的场景,而且Ant Design的组件库是非常稳定的,不会出现大的变动。
如果你的工作场景里面要统一React和Vue的风格,那么Ant Design是你的最佳选择,因为Ant Design不仅仅支持React,还支持Vue。
Ant Design不仅有基础组件的集合,甚至还有Web3的组件集合,这意味着你可以直接使用Ant Design来构建一个Web3的应用。
Ant Design还对数据图标,大数据场景,地图等做了定制化的组件库,可以支持非常复杂的数据大屏场景。
劣势
Ant Design中由于大量的支持带来了一些历史包袱,比如Table组件的性能是非常差的,这意味着你需要额外的工作量来寻找其他的解决方案。
Ant Design中拥有大量其他类库的功能,对于组件的广度满足的十分出色,但是对于组件的深度满足的不够好。
Ant Design的所有依赖都是Ant Design自己维护的,这意味着你需要额外的工作量来兼容你自己的构建方案和CSS方案,这对于想要使用其他开源库的场景来说是不够友好的。
Fluent UI
优势
微软官方维护的组件库,Fluent UI的风格是跟微软的风格完全一致的,这对于一些需要跟微软风格一致的场景是非常有帮助的。
Fluent UI支持很多平台,包括Web,React Native,iOS,Android,macOS,Windows,这意味着你可以使用Fluent UI来构建一个跨平台的应用。
劣势
微软的风格并不会让所有人喜欢,所以如果你不喜欢微软的风格,那么Fluent UI可能不是你的最佳选择。
Fluent UI的组件丰富度是不够的,对于一些复杂的场景,比如数据处理,图表等,Fluent UI并不支持,你需要额外的工作量来寻找其他的解决方案。
Fluent UI的文档不够好,对于开发者来说,文档建设是很重要的,这点Fluent UI还有改进空间。
总结
- 如果你需要一个
大而全
的组件库,并且愿意为之付费
,推荐使用MUI
。 - 如果你
不想为之付费
,推荐使用Ant Design
。 - 如果你在开发
Landing Page
,推荐使用Chakra UI
。 - 如果你想使用
微软风格
,推荐使用Fluent UI
。 - 如果你不想引入组件库,
只想要源码集成
,推荐使用Shadcn UI
。