ant-design-vue、bootstrap-vue、element-ui 和 vuetify 都是 Vue.js 生态系统中成熟的 UI 组件库,旨在加速前端界面开发。它们提供了预构建的组件(如按钮、表单、表格),但设计语言、Vue 版本支持度和维护状态存在显著差异。ant-design-vue 和 vuetify 已全面支持 Vue 3,适合现代项目;element-ui 仅支持 Vue 2,新项目应转向 element-plus;bootstrap-vue 主要针对 Vue 2,Vue 3 需评估 bootstrap-vue-next。选择时需优先考虑框架版本兼容性及长期维护风险。
这四个库都是 Vue 生态中流行的 UI 组件库,但在架构决策中,Vue 版本兼容性和维护状态是比设计风格更优先的考量因素。作为架构师,必须明确区分哪些库适合现代 Vue 3 项目,哪些仅适用于遗留系统。以下从核心维度进行深度对比。
这是选型的第一道过滤网。错误选择会导致项目无法升级或面临无人维护的风险。
ant-design-vue 已全面支持 Vue 3。
// ant-design-vue (Vue 3)
import { createApp } from 'vue';
import Antd from 'ant-design-vue';
import 'ant-design-vue/dist/reset.css';
const app = createApp(App);
app.use(Antd);
bootstrap-vue 主要针对 Vue 2。
bootstrap-vue (2.x) 仅支持 Vue 2。bootstrap-vue-next,这是另一个包。// bootstrap-vue (Vue 2)
import Vue from 'vue';
import BootstrapVue from 'bootstrap-vue';
Vue.use(BootstrapVue);
element-ui 仅支持 Vue 2 (⚠️ 已停止新功能开发)。
element-plus。// element-ui (Vue 2 Only)
import Vue from 'vue';
import ElementUI from 'element-ui';
Vue.use(ElementUI);
vuetify 已全面支持 Vue 3。
// vuetify (Vue 3)
import { createApp } from 'vue';
import { createVuetify } from 'vuetify';
import 'vuetify/styles';
const vuetify = createVuetify();
const app = createApp(App);
app.use(vuetify);
设计语言决定了产品的视觉基调和定制成本。
ant-design-vue 采用企业级中性风格。
<!-- ant-design-vue -->
<template>
<a-button type="primary" size="large">主要按钮</a-button>
</template>
bootstrap-vue 遵循 Bootstrap 经典风格。
<!-- bootstrap-vue -->
<template>
<b-button variant="primary" size="lg">主要按钮</b-button>
</template>
element-ui 风格简洁清晰。
<!-- element-ui -->
<template>
<el-button type="primary" size="large">主要按钮</el-button>
</template>
vuetify 严格遵循 Material Design。
<!-- vuetify -->
<template>
<v-btn color="primary" size="large" elevation="2">主要按钮</v-btn>
</template>
后台系统核心在于表格处理能力,这是区分组件库深度的关键。
ant-design-vue 表格功能最强大。
<!-- ant-design-vue Table -->
<a-table :columns="columns" :data-source="data">
<template #bodyCell="{ column, record }">
<template v-if="column.key === 'name'">
<a>{{ record.name }}</a>
</template>
</template>
</a-table>
bootstrap-vue 表格功能基础。
<!-- bootstrap-vue Table -->
<b-table :items="items" :fields="fields" striped hover>
<template #cell(name)="data">
<strong>{{ data.value }}</strong>
</template>
</b-table>
element-ui 表格功能均衡。
<!-- element-ui Table -->
<el-table :data="tableData" style="width: 100%">
<el-table-column prop="name" label="姓名" />
<el-table-column prop="address" label="地址" />
</el-table>
vuetify 表格注重交互。
<!-- vuetify Table -->
<v-data-table :headers="headers" :items="desserts">
<template v-slot:item.name="{ item }">
<v-badge color="error" content="!">
{{ item.name }}
</v-badge>
</template>
</v-data-table>
企业级应用必须考虑多语言和无障碍访问。
ant-design-vue:内置完善的国际化方案,支持无障碍属性,符合企业合规要求。bootstrap-vue:依赖 Bootstrap 生态,无障碍支持较好,但国际化需自行管理文本。element-ui:提供内置 locale 包,国内使用方便,但无障碍支持相对较弱。vuetify:国际化配置灵活,无障碍支持符合 Material Design 标准,但包体积较大。| 特性 | ant-design-vue | bootstrap-vue | element-ui | vuetify |
|---|---|---|---|---|
| Vue 3 支持 | ✅ 支持 (3.x) | ❌ 仅 Vue 2 (Vue3 需 next) | ❌ 仅 Vue 2 (请选 plus) | ✅ 支持 (3.x) |
| 设计风格 | 企业级中性 | 经典 Web 风格 | 简洁清晰 | Material Design |
| 表格能力 | ⭐⭐⭐⭐⭐ 极强 | ⭐⭐⭐ 基础 | ⭐⭐⭐⭐ 均衡 | ⭐⭐⭐⭐ 交互好 |
| 维护状态 | 🟢 活跃 | 🟡 维护 (Vue2) | 🔴 停止 (Vue2) | 🟢 活跃 |
| 适用场景 | 复杂后台 | 旧项目/Bootstrap 用户 | 遗留 Vue 2 系统 | 现代应用/C 端 |
对于新启动的 Vue 3 项目:
首选 ant-design-vue 或 vuetify。
ant-design-vue。vuetify。element-plus 而不是 element-ui。对于维护中的 Vue 2 项目:
element-ui 或 bootstrap-vue,可继续维持,但需规划向 Vue 3 迁移。element-ui 必须替换为 element-plus,bootstrap-vue 需评估 bootstrap-vue-next。最终结论:技术选型不仅是选组件,更是选生态。避免在新项目中使用已停止更新的 element-ui 或仅支持 Vue 2 的 bootstrap-vue,以免陷入技术债务。
选择 ant-design-vue 如果你的项目是基于 Vue 3 的企业级后台管理系统。它提供了丰富的数据展示组件(如高级表格、树形控件),设计规范中性且专业,适合复杂业务场景。团队若熟悉 Ant Design React 版本,迁移成本较低。注意需使用 3.x 版本以支持 Vue 3。
选择 bootstrap-vue 仅当你维护基于 Vue 2 的旧项目且依赖 Bootstrap 生态。对于新 Vue 3 项目,官方推荐的 Vue 3 版本是 bootstrap-vue-next,而非此包。如果你需要高度利用现有的 Bootstrap CSS 类库和栅格系统,这是一个熟悉的选择,但需注意其 Vue 3 支持是通过独立包实现的。
⚠️ 不建议在新项目中使用 element-ui。该库仅支持 Vue 2,已停止主要功能更新。如果你的技术栈是 Vue 3,必须选择其继任者 element-plus。仅在维护遗留的 Vue 2 系统且已深度依赖该库时,才考虑继续使用 element-ui。
选择 vuetify 如果你偏好 Material Design 设计风格或需要构建移动端优先的应用。Vuetify 3 已完美支持 Vue 3,提供了极高的组件密度和定制能力。适合追求视觉统一性和丰富交互效果的项目,但需注意其样式覆盖可能较重,定制主题需要学习其 SASS 变量系统。
English | 简体中文
Star us, and you will receive all releases notifications from GitHub without any delay!

![]() IE / Edge | ![]() Firefox | ![]() Chrome | ![]() Safari | ![]() Opera | ![]() Electron |
|---|---|---|---|---|---|
| Edge | last 2 versions | last 2 versions | last 2 versions | last 2 versions | last 2 versions |
We recommend using npm or yarn to install, it not only makes development easier, but also allow you to take advantage of the rich ecosystem of Javascript packages and tooling.
$ npm install ant-design-vue --save
$ yarn add ant-design-vue
If you are in a bad network environment, you can try other registries and tools like cnpm.
| Project | Description |
|---|---|
| vue-ref | You can use the callback to get a reference like react |
| ant-design-vue-helper | A vscode extension for ant-design-vue |
| vue-cli-plugin-ant-design | Vue-cli 3 plugin to add ant-design-vue |
| vue-dash-event | The library function, implemented in the DOM template, can use the custom event of the ant-design-vue component (camelCase) |
| @formily/antdv | The Library with Formily and ant-design-vue |
| @ant-design-vue/nuxt | A nuxt module for ant-design-vue |
ant-design-vue is an MIT-licensed open source project. In order to achieve better and sustainable development of the project, we expect to gain more backers. You can support us in any of the following ways:
Become a sponsor and get your logo on our README on Github with a link to your site. [Become a sponsor]
Thank you to all the people who already contributed to ant-design-vue!
This project is tested with BrowserStack.