ant-design-vue、bootstrap-vue、element-ui、vuetify は、Vue.js アプリケーションの開発を加速させるための代表的な UI コンポーネントライブラリです。これらは、ボタン、フォーム、テーブル、モーダルなどの共通部品を提供し、デザインの一貫性と開発効率を向上させます。しかし、対応している Vue のバージョン(Vue 2 vs Vue 3)や、デザインシステムのアプローチ、カスタマイズ性には大きな違いがあります。本比較では、各ライブラリの技術的特徴と、現代のフロントエンドアーキテクチャにおける適切な選定基準を解説します。
Vue.js エコシステムには、多くの UI コンポーネントライブラリが存在します。ant-design-vue、bootstrap-vue、element-ui、vuetify はその中でも特に人気がありますが、それぞれ対応する Vue のバージョンや設計思想が異なります。アーキテクトとして、単に「見た目」だけでなく、メンテナンス性、バージョン対応、拡張性を考慮して選定する必要があります。
ライブラリを選ぶ際、最も重要な技術的制約は「どの Vue バージョンに対応しているか」です。Vue 2 はサポートが終了しており、新規プロジェクトでは Vue 3 を選ぶのが標準です。
ant-design-vue
Vue 3 に完全対応しており、積極的にメンテナンスされています。Composition API にも対応しています。
<!-- ant-design-vue (Vue 3) -->
<template>
<a-button type="primary">Primary Button</a-button>
</template>
<script setup>
import { Button } from 'ant-design-vue';
</script>
bootstrap-vue
主要なバージョン(v2)は Vue 2 専用です。Vue 3 対応版(bootstrap-vue-next)は別パッケージとして開発中ですが、現時点では安定性に注意が必要です。
<!-- bootstrap-vue (Vue 2) -->
<template>
<b-button variant="primary">Primary Button</b-button>
</template>
<script>
import { Button } from 'bootstrap-vue';
</script>
element-ui
Vue 2 専用ライブラリです。公式に Vue 3 対応版は element-plus として別名でリリースされています。新規プロジェクトで element-ui を使うべきではありません。
<!-- element-ui (Vue 2) -->
<template>
<el-button type="primary">Primary Button</el-button>
</template>
<script>
import { Button } from 'element-ui';
</script>
vuetify
Vue 3 に対応した v3 バージョンがリリースされ、積極的に更新されています。Vue 2 版(v2)もまだ使われていますが、新規では v3 が推奨されます。
<!-- vuetify (Vue 3) -->
<template>
<v-btn color="primary">Primary Button</v-btn>
</template>
<script setup>
import { VBtn } from 'vuetify/components';
</script>
各ライブラリは独自のデザイン言語を持っています。プロジェクトのブランドイメージに合うか、またカスタマイズが容易かも重要な選定基準です。
ant-design-vue
Ant Design の「企業向け・洗練された」デザインが特徴です。CSS 変数を使ったテーマカスタマイズが可能ですが、基本のデザインから大きく外すのは手間がかかります。
// ant-design-vue: Less 変数でテーマ調整
@primary-color: #1890ff;
@border-radius-base: 4px;
bootstrap-vue
Bootstrap の標準的なデザインです。SASS 変数によるカスタマイズが広く知られており、Web 上にリソースが豊富です。
// bootstrap-vue: SASS 変数でテーマ調整
$primary: #007bff;
$border-radius: 0.25rem;
element-ui
クリアでモダンなデザインです。オンラインテーマツールがあり、手軽にカラー生成ができますが、構造的な変更は困難です。
/* element-ui: CSS 変数による上書き */
:root {
--el-color-primary: #409EFF;
}
vuetify
マテリアルデザインに準拠しています。テーマシステムが非常に強力で、ダークモードやカスタムプロパティの定義が簡単です。
// vuetify: 設定オブジェクトでテーマ定義
export default createVuetify({
theme: {
themes: {
light: {
colors: {
primary: '#1976D2',
},
},
},
},
})
業務アプリケーションではフォーム処理が重要です。バリデーションや双方向バインディングの実装方法を比較します。
ant-design-vue
Form コンポーネントが強く、ルールベースのバリデーションを内蔵しています。
<!-- ant-design-vue -->
<a-form :model="form">
<a-form-item name="username" :rules="[{ required: true }]">
<a-input v-model:value="form.username" />
</a-form-item>
</a-form>
bootstrap-vue
標準の HTML 入力要素をラップする形式です。バリデーションは外部ライブラリ(Vuelidate など)と組み合わせることが多いです。
<!-- bootstrap-vue -->
<b-form-input v-model="username" state="invalid" />
<b-form-invalid-feedback>
This field is required
</b-form-invalid-feedback>
element-ui
Form Item にルールを定義する方式で、ant-design-vue に近いです。
<!-- element-ui -->
<el-form :model="form" :rules="rules">
<el-form-item prop="username">
<el-input v-model="form.username" />
</el-form-item>
</el-form>
vuetify
入力コンポーネント自体に rules プロパティを持ち、簡潔に記述できます。
<!-- vuetify -->
<v-text-field
v-model="username"
:rules="[v => !!v || 'Required']"
/>
管理画面ではテーブルコンポーネントの使用頻度が高いです。ソート、フィルタ、ページネーションの実装比較です。
ant-design-vue
高機能なテーブルを標準で提供します。サーバーサイド処理との連携もスムーズです。
<!-- ant-design-vue -->
<a-table
:columns="columns"
:data-source="data"
:pagination="{ pageSize: 10 }"
/>
bootstrap-vue
基本的なテーブル表示に強く、カスタマイズ性が高いですが、高機能な機能は自分で実装する必要があります。
<!-- bootstrap-vue -->
<b-table
:items="items"
:fields="fields"
sortable
pagination
/>
element-ui
非常に高機能なテーブルを持ち、ツリー表示や編集機能も内蔵されています。
<!-- element-ui -->
<el-table :data="tableData" style="width: 100%">
<el-table-column prop="date" label="Date" />
<el-table-column prop="name" label="Name" />
</el-table>
vuetify
データテーブルコンポーネントが強力で、ヘッダーのカスタマイズや行の選択が容易です。
<!-- vuetify -->
<v-data-table
:headers="headers"
:items="desserts"
/>
element-ui と bootstrap-vue (v2) は Vue 2 専用です。Vue 2 は 2023 年末でサポートが終了しています。新規プロジェクトでこれらを採用することは、技術的負債を最初から抱えることを意味します。Vue 3 を使う場合は、ant-design-vue、vuetify (v3)、または element-plus、bootstrap-vue-next を選定してください。
すべてのライブラリは、必要なコンポーネントのみをインポートする「オンデマンドインポート」に対応しています。しかし、設定方法が異なります。
// ant-design-vue: babel-plugin-import 設定が必要
// vuetify: 自動インポート機能が組み込まれている
// element-ui: 同様にプラグイン設定が必要
適切に設定しないと、アプリケーションの初期読み込みが重くなるリスクがあります。
vuetify と ant-design-vue は Vue 3 移行において積極的です。bootstrap-vue は Bootstrap の知名度に支えられていますが、Vue 固有の機能活用という点では他社に譲る場合があります。element-ui は中国圏で非常に強いですが、ドキュメントの言語対応(英語版が遅れるなど)に注意が必要です。
ant-design-vue が堅実です。コンポーネントの品質が高く、大規模開発に向いています。vuetify がおすすめです。マテリアルデザインの恩恵を受けられ、見た目の調整が容易です。element-ui や bootstrap-vue が必要になる場合がありますが、移行計画を並行して立てるべきです。bootstrap-vue ですが、Vue 3 なら後継パッケージの動向を注視してください。最終的には、チームの習熟度と、プロジェクトが求めるデザイン要件のバランスで決定してください。
マテリアルデザインをベースにした、視覚的にリッチなアプリケーションを構築したい場合に適しています。Vue 3 に対応しており、テーマカスタマイズやレイアウトシステムが強力なため、スタートアップや消費者向けアプリでよく選ばれます。
Vue 3 プロジェクトで、エンタープライズ向けの高機能な管理画面やダッシュボードを構築する場合に最適です。Ant Design のデザイン言語をそのまま使いたいチームや、TypeScript との親和性を重視する際に選定されます。
Vue 2 環境で、中国発のモダンな管理画面デザインを求めている場合に選ばれてきました。しかし、Vue 2 のサポート終了に伴い、新規プロジェクトでの採用は避けるべきであり、Vue 3 版である element-plus への移行を検討すべきです。
既存の Bootstrap デザイン資産を活かしたい場合や、Vue 2 レガシープロジェクトのメンテナンスに適しています。ただし、Vue 3 への移行を検討している場合は、後継パッケージの確認が必要です。
To check out the documentation, visit vuetifyjs.com.
Getting started with Vuetify is easy. To create a new project, choose your package manager and run one of the following commands:
Using pnpm
pnpm create vuetify
Using yarn
yarn create vuetify
Using npm
npm create vuetify@latest
Using bun
bun create vuetify
For more information on how to get started, such as using Nuxt or Laravel, check out the official Installation guide.
Vuetify is a MIT licensed project that is developed and maintained by the Core Team. Sponsor Vuetify and receive some awesome perks and support Open Source Software at the same time! 🎉
Funds donated through GitHub Sponsors directly support John Leider and the ongoing development and maintenance of Vuetify. Funds donated via Open Collective are managed with transparent expenses and will be used for compensating work and expenses for Core team members. Your name/logo will receive proper recognition and exposure by donating on either platform.
|
|
|
|
|
|
Vuetify is a no design skills required UI Library with beautifully handcrafted Vue Components. No design skills required — everything you need to create amazing applications is at your fingertips. Vuetify has a massive API that supports any use-case. Some highlights include:
Vuetify supports all modern browsers, including Safari 13+ (using polyfills). Components are designed for a minimum width of 320px.
| Name | Description |
|---|---|
| 🕶️ Vuetify Awesome | Awesome stuff built with Vuetify. |
| 🗑️ Vuetify Bin | A pastebin for saving code snippets. |
| 🫧 Vuetify Create | Scaffolding tools for creating new Vuetify projects. |
| 💭 Vuetify Discord | Our massive and inclusive Discord server where you can ask questions, share feedback, and connect with other Vuetify developers. |
| 🧹 Vuetify ESLint | An opinionated [ESLint config](https://github.com/vuetifyjs/eslint-config-vuetify) for styling and an [ESLint plugin](https://github.com/vuetifyjs/eslint-plugin-vuetify) for upgrading Vuetify version. |
| 🐛 Vuetify Issues | A web application for reporting bugs and issues with Vuetify, Documentation, or one of our other packages. |
| 📦 Vuetify Loader | A monorepo of compiler plugins for autoloading Vuetify components and configuring styles. |
| 🧠 Vuetify MCP | A Model Context Protocol server for developing with Vuetify and Agents. |
| 🎮 Vuetify Playground | A Vuetify 3 playground built using vuejs/repl where you can play with our components. |
| ✂️ Vuetify Snips | Pre-built code snippets for Vuetify components that you can use in your projects |
| 🛒 Vuetify Store | The official Vuetify Store where you can download free digital products, purchase pre-made themes, and more. |
For help and support questions, please use our Discord community. This issue list of this repo is exclusively for bug reports and feature requests.
Use our Issue generator to report bugs and request new features.
Please make sure to read the Important Information before opening an issue. Issues not confirming to the guidelines may be closed immediately.
2️⃣ Vuetify 2 Support Vuetify 2 is now End Of Life (EOL) and is no longer supported, even for security issues. Commercial support for this version is available from our partner, HeroDevs.
Detailed changes for each release are documented in the release notes.
Developers interested in contributing should read the Code of Conduct and the Contribution Guide.
Please do not ask general questions in an issue. Issues are only to report bugs, suggest enhancements, or request new features. For general questions and discussions, ask in the community chat.
To help you get you familiar with our contribution process, we have a list of good first issues that contain bugs which have a relatively limited scope. This is a great place to get started. If you have any questions, please join us on the community chat.
We also have a list of help wanted issues that you might want to check.
Vuetify is available under the MIT software license.
Copyright (c) 2016-present Vuetify, LLC
This project exists thanks to all the people who contribute 😍!