|
| 1 | +<script setup> |
| 2 | +import { onMounted } from 'vue' |
| 3 | + |
| 4 | +if (typeof window !== 'undefined') { |
| 5 | + const hash = window.location.hash |
| 6 | + |
| 7 | + if (['#component-libraries', '#component-libraries-notes'].includes(hash)) { |
| 8 | + onMounted(() => { |
| 9 | + window.location = './component-libraries.html' + hash |
| 10 | + }) |
| 11 | + } |
| 12 | +} |
| 13 | +</script> |
1 | 14 | # Introduction
|
2 | 15 |
|
3 | 16 | > Thank you to those on the [Vue Land Discord](https://chat.vuejs.org/) and elsewhere who inspired these ideas.
|
@@ -36,101 +49,4 @@ In pretty much all cases, the styling and accessibility of these components is n
|
36 | 49 |
|
37 | 50 | ## Component libraries
|
38 | 51 |
|
39 |
| -These are some of the most widely used component libraries for **Vue 3**. |
40 |
| - |
41 |
| -The monthly downloads should not be trusted as a way to judge the quality of a library. Specifically: |
42 |
| -* Some of these libraries are much older than others and will benefit from historical inertia. |
43 |
| -* Some used the same npm package name for the Vue 2 version of the library, while others did not. The final column of the table attempts to indicate whether the monthly downloads also include Vue 2. |
44 |
| - |
45 |
| -<style> |
46 |
| -img[src^="https://img.shields.io"] { |
47 |
| - display: inline-block; |
48 |
| - vertical-align: middle; |
49 |
| -} |
50 |
| - |
51 |
| -td > img { |
52 |
| - display: inline-block; |
53 |
| -} |
54 |
| -</style> |
55 |
| -<script setup> |
56 |
| -const cross = './images/cross.svg' |
57 |
| -const tick = './images/tick.svg' |
58 |
| -</script> |
59 |
| - |
60 |
| -<table> |
61 |
| - <thead> |
62 |
| - <tr><th>Name</th><th>docs</th><th>npm</th><th>Vue 2?</th></tr> |
63 |
| - </thead> |
64 |
| - <tbody> |
65 |
| - <tr> |
66 |
| - <td>Vuetify<sup><a href="#component-libraries-notes">1</a></sup></td> |
67 |
| - <td><a href="https://vuetifyjs.com/en/introduction/why-vuetify/" target="_blank" rel="noopener noreferrer">docs</a></td> |
68 |
| - <td><a href="https://www.npmjs.com/package/vuetify" target="_blank" rel="noopener noreferrer">npm</a> <img alt="npm monthly downloads" src="https://img.shields.io/npm/dm/vuetify?color=%235588cc&label="></td> |
69 |
| - <td><img :src="tick" alt="Tick"> Yes</td> |
70 |
| - </tr> |
71 |
| - <tr> |
72 |
| - <td>Element Plus</td> |
73 |
| - <td><a href="https://element-plus.org/en-US/" target="_blank" rel="noopener noreferrer">docs</a></td> |
74 |
| - <td><a href="https://www.npmjs.com/package/element-plus" target="_blank" rel="noopener noreferrer">npm</a> <img alt="npm monthly downloads" src="https://img.shields.io/npm/dm/element-plus?color=%235588cc&label="></td> |
75 |
| - <td><a href="https://www.npmjs.com/package/element-ui" target="_blank" rel="noopener noreferrer">npm</a> <img alt="npm monthly downloads" src="https://img.shields.io/npm/dm/element-ui?color=%235588cc&label="></td> |
76 |
| - </tr> |
77 |
| - <tr> |
78 |
| - <td>Quasar</td> |
79 |
| - <td><a href="https://quasar.dev/components" target="_blank" rel="noopener noreferrer">docs</a></td> |
80 |
| - <td><a href="https://www.npmjs.com/package/quasar" target="_blank" rel="noopener noreferrer">npm</a> <img alt="npm monthly downloads" src="https://img.shields.io/npm/dm/quasar?color=%235588cc&label="></td> |
81 |
| - <td><img :src="tick" alt="Tick"> Yes</td> |
82 |
| - </tr> |
83 |
| - <tr> |
84 |
| - <td>Headless UI<sup><a href="#component-libraries-notes">2</a></sup></td> |
85 |
| - <td><a href="https://headlessui.dev/" target="_blank" rel="noopener noreferrer">docs</a></td> |
86 |
| - <td><a href="https://www.npmjs.com/package/@headlessui/vue" target="_blank" rel="noopener noreferrer">npm</a> <img alt="npm monthly downloads" src="https://img.shields.io/npm/dm/@headlessui/vue?color=%235588cc&label="></td> |
87 |
| - <td><img :src="cross" alt="Cross"> No</td> |
88 |
| - </tr> |
89 |
| - <tr> |
90 |
| - <td>PrimeVue</td> |
91 |
| - <td><a href="https://primevue.org/installation" target="_blank" rel="noopener noreferrer">docs</a></td> |
92 |
| - <td><a href="https://www.npmjs.com/package/primevue" target="_blank" rel="noopener noreferrer">npm</a> <img alt="npm monthly downloads" src="https://img.shields.io/npm/dm/primevue?color=%235588cc&label="></td> |
93 |
| - <td><img :src="tick" alt="Tick"> Yes</td> |
94 |
| - </tr> |
95 |
| - <tr> |
96 |
| - <td>Ant Design Vue</td> |
97 |
| - <td><a href="https://www.antdv.com/components/overview/" target="_blank" rel="noopener noreferrer">docs</a></td> |
98 |
| - <td><a href="https://www.npmjs.com/package/ant-design-vue" target="_blank" rel="noopener noreferrer">npm</a> <img alt="npm monthly downloads" src="https://img.shields.io/npm/dm/ant-design-vue?color=%235588cc&label="></td> |
99 |
| - <td><img :src="tick" alt="Tick"> Yes</td> |
100 |
| - </tr> |
101 |
| - <tr> |
102 |
| - <td>Vant<sup><a href="#component-libraries-notes">3</a></sup></td> |
103 |
| - <td><a href="https://vant-ui.github.io/vant" target="_blank" rel="noopener noreferrer">docs</a></td> |
104 |
| - <td><a href="https://www.npmjs.com/package/vant" target="_blank" rel="noopener noreferrer">npm</a> <img alt="npm monthly downloads" src="https://img.shields.io/npm/dm/vant?color=%235588cc&label="></td> |
105 |
| - <td><img :src="tick" alt="Tick"> Yes</td> |
106 |
| - </tr> |
107 |
| - <tr> |
108 |
| - <td>Naive UI</td> |
109 |
| - <td><a href="https://www.naiveui.com/" target="_blank" rel="noopener noreferrer">docs</a></td> |
110 |
| - <td><a href="https://www.npmjs.com/package/naive-ui" target="_blank" rel="noopener noreferrer">npm</a> <img alt="npm monthly downloads" src="https://img.shields.io/npm/dm/naive-ui?color=%235588cc&label="></td> |
111 |
| - <td><img :src="cross" alt="Cross"> No</td> |
112 |
| - </tr> |
113 |
| - <tr> |
114 |
| - <td>bootstrap-vue-next<sup><a href="#component-libraries-notes">4</a></sup></td> |
115 |
| - <td><a href="https://bootstrap-vue-next.github.io/bootstrap-vue-next/" target="_blank" rel="noopener noreferrer">docs</a></td> |
116 |
| - <td><a href="https://www.npmjs.com/package/bootstrap-vue-next" target="_blank" rel="noopener noreferrer">npm</a> <img alt="npm monthly downloads" src="https://img.shields.io/npm/dm/bootstrap-vue-next?color=%235588cc&label="></td> |
117 |
| - <td><img :src="cross" alt="Cross"> No</td> |
118 |
| - </tr> |
119 |
| - <tr> |
120 |
| - <td>Oruga UI<sup><a href="#component-libraries-notes">5</a></sup></td> |
121 |
| - <td><a href="https://oruga.io/documentation/" target="_blank" rel="noopener noreferrer">docs</a></td> |
122 |
| - <td><a href="https://www.npmjs.com/package/@oruga-ui/oruga-next" target="_blank" rel="noopener noreferrer">npm</a> <img alt="npm monthly downloads" src="https://img.shields.io/npm/dm/@oruga-ui/oruga-next?color=%235588cc&label="></td> |
123 |
| - <td><a href="https://www.npmjs.com/package/@oruga-ui/oruga" target="_blank" rel="noopener noreferrer">npm</a> <img alt="npm monthly downloads" src="https://img.shields.io/npm/dm/@oruga-ui/oruga?color=%235588cc&label="></td> |
124 |
| - </tr> |
125 |
| - </tbody> |
126 |
| -</table> |
127 |
| - |
128 |
| -<div id="component-libraries-notes"></div> |
129 |
| - |
130 |
| -Notes: |
131 |
| - |
132 |
| -1. Vuetify 3 is compatible with Vue 3. Vuetify 3.0.0 was released at the end of October 2022 and is still missing some important features relative to earlier versions. |
133 |
| -2. Headless UI isn't really comparable to the other libraries on the list, but it does attempt to solve similar problems and it is easily popular enough to warrant a mention. |
134 |
| -3. Vant targets mobile browsers and isn't generally suitable for desktop applications. |
135 |
| -4. bootstrap-vue-next started out as bootstrap-vue-3, <a href="https://www.npmjs.com/package/bootstrap-vue-3" target="_blank" rel="noopener noreferrer">npm</a> <img alt="npm monthly downloads" src="https://img.shields.io/npm/dm/bootstrap-vue-3?color=%235588cc&label=">. It was an independent rewrite of BootstrapVue: <a href="https://bootstrap-vue.org/" target="_blank" rel="noopener noreferrer">docs</a>, <a href="https://www.npmjs.com/package/bootstrap-vue" target="_blank" rel="noopener noreferrer">npm</a> <img alt="npm monthly downloads" src="https://img.shields.io/npm/dm/bootstrap-vue?color=%235588cc&label=">, which was a very popular Vue 2 component library. In late 2022, BootstrapVue announced work on Vue 3 compatibility, <https://bootstrap-vue.org/vue3>. In early 2023, bootstrap-vue-3 was renamed to bootstrap-vue-next. |
136 |
| -5. The Vue 2 library Buefy: <a href="https://buefy.org/" target="_blank" rel="noopener noreferrer">docs</a>, <a href="https://www.npmjs.com/package/buefy" target="_blank" rel="noopener noreferrer">npm</a> <img alt="npm monthly downloads" src="https://img.shields.io/npm/dm/buefy?color=%235588cc&label=">, combines Vue with Bulma. The lead maintainer of that project also maintains Oruga UI and recommends using Oruga as the successor to Buefy for Vue 3. |
| 52 | +* [Component Libraries](./component-libraries) - A list of the most popular component libraries for Vue 3. |
0 commit comments