Element Plus 和 Mantine 组件对比调研
文档中为当前 content 系统中已经调用的 Element Plus 组件,分组按照 Element Plus 文档的组件分组。
配置
Element Plus 组件 |
Mantine 组件 |
ElConfigProvider |
MantineProvider,且更强大,可以作为全局样式入口 |
基础组件
Element Plus 组件 |
Mantine 组件 |
ElButton |
Button(参数不同,可以包装,但更强大) |
ElIcon |
官方搭配 tabler icon,支持使用第三方 |
ElCol |
Flex / Grid / Group 都可以替代 |
ElRow |
Flex / Grid / Group 都可以替代 |
ElScrollbar |
ScrollArea,可能没有 ElScrollbar 功能全,但是滚动相关基础 event 都包含 |
ElContainer |
AppShell 拆箱即用 |
ElHeader |
AppShell 拆箱即用 |
ElFooter |
AppShell 拆箱即用 |
ElMain |
AppShell 拆箱即用 |
Feedback
Element Plus 组件 |
Mantine 组件 |
ElAlert |
Alert(参数不同,可以包装) |
ElDialog |
对标 Modal(Mantine 的 Dialog 是 简版 的 Modal) |
ElDrawer |
Drawer |
ElTooltip |
Tooltip |
ElPopconfirm |
暂无实现, 需要自己封装 |
ElPopover |
HoverCard 或者 Popover 都可以实现 |
ElMessage |
Notification,堆栈类可以使用 notifications 扩展包 |
ElMessageBox |
modal 扩展包可以实现 |
v-loading |
使用 Loader 的 LoadingOverlay 实现 |
Mantine 有独立安装的 modal 扩展包,可以实现更丰富的功能。
Navigation
Element Plus 组件 |
Mantine 组件 |
ElDropdown |
Menu |
ElDropdownItem |
Menu.Item |
ElDropdownMenu |
Menu |
ElStep |
Stepper |
ElSteps |
Stepper.Step |
ElTabPane |
Tabs.Tab |
ElTabs |
Tabs (功能比较简单,易用性不如 ElTabs) |
Form
Element Plus 组件 |
Mantine 组件 |
ElAutocomplete |
Autocomplete,功能较弱 |
ElCascader |
似乎国外都没有实现 |
ElCheckbox |
Checkbox |
ElCheckboxGroup |
Checkbox.Group |
ElDatePicker |
暂无实现,需要 dates 扩展包 |
ElForm |
useForm |
ElFormItem |
暂无实现,很多基础控件比如 Input 自带了类似功能;有个比较类似的 Fieldset |
ElInput |
分拆了 TextInput 和 Textarea、PasswordInput 等组件 |
ElInputNumber |
NumberInput |
ElRadio |
Radio |
ElRadioButton |
暂无实现,Radio 的样式系统可以轻松扩展 |
ElRadioGroup |
Radio.Group,SegmentedControl 也类似 |
ElSelect |
Combobox、MultiSelect、Select、TagsInput,拆了不同场景 |
ElOption |
同 ElSelect |
ElOptionGroup |
同 ElSelect |
ElSelectV2 |
暂无实现 |
ElSwitch |
Switch |
ElUpload |
FileInput 比较基础,不包含数据传输层,只到文件选择;拖拽支持则需要 Dropzone 扩展包 |
Data
Element Plus 组件 |
Mantine 组件 |
ElCard |
暂无对标实现,Mantine 的 Card 组件功能不同 |
ElCollapse |
Accordion (同名的 Collapse 只是 单个 的折叠展开) |
ElCollapseItem |
Accordion.Item |
ElPagination |
Pagination (Total 参数逻辑不同,但是很容易封装) |
ElSkeleton |
Skeleton |
ElTable |
Table(自带功能非常弱,官方没有高级表格的开发计划,推荐了一些社区方案 |
ElTableColumn |
Table |
ElTag |
Pill |
ElTimeline |
Timeline |
ElTimelineItem |
Timeline.Item |
ElTree |
Tree(用法大不同,更偏向 react 的用法) |
其他
Element Plus 组件 |
Mantine 组件 |
ElDivider |
Divider |