Сравнение тяжеловесности популярных библиотек UI компонент для Vue 3

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!

Библиотеки UI компонент популярны и удобны в некоторых случаях, но у них тоже есть обратные стороны. Одно дело, когда делаешь админку и используешь десятки компонент, другое - когда тебе надо всего пару компонент.

Было проведено исследование - взяты три HTML элемента: Button, Input и Select, и проверено, насколько увеличатся js и css бандлы если использовать для них одну из 10 распространенных UI библиотек для Vue 3.

Создать стилизованный по своему желанию компонент Button - это несколько килобайт кода и стилей. Представляет интерес, сколько "довеска" даёт каждая библиотека к этим нескольким килобайтам.

Почему? Потому что каждый килобайт javascript-a даёт нагрузку на браузер и прямо влияет на UX. И на DX.

Исследование

При тестировании не рассматривались возможности библиотек для построения лэйаутов, поддержка тем и прочий их функционал. Исследовался только footprint библиотек на пустом проекте.

Код тестов доступен в репозитории. Каждой UI библиотеке соответствует своя ветка (branch) репозитория.

Каждая библиотека устанавливалась согласно её документации, но при этом у некоторых не завелись сразу CSS стили. Наборы иконок для чистоты эксперимента также не ставились, поэтому у компонента Select в некоторых библиотеках визуальный дефект.

Скриншоты отображения кнопки, поля ввода и селекта в различных библиотеках:

Скриншоты

Vue 3 & HTML

Vuetify

Quasar

PrimeVue

PrimeVue

Ant Design for Vue

Vant UI

Naive UI

Vuestic UI

Agnostic UI

Vanilla Components

Результаты

Среда: Node v18, Pnpm v8.3, Vue v3.2, Vite v4.3.9

Получившиеся размеры бандлов (округленно):

Библиотека

Size js, KB

Size css, KB

GitHub stars (K)

Vue 3 & HTML

52

0.2

Vuetify 3

203

72

37.4

Quasar

178

201

23.8

PrimeVue

138

159

3.9

Element Plus

843

325

20.4

Ant Design

1132

598

18.3

Vant UI

87

192

21.5

Vuestic UI

515

186

2.9

Naive UI

313

0.2

13

Agnostic UI

67

97

0.64

Vanilla Components

650

0.2

0.15

Результаты довольно неожиданные. Vuetify и Quasar ожидаемо тяжелы, но многие другие библиотеки характеризуют себя примерно как "lightweight, flexible & customizale UI library for Vue 3". Ну и у всех, конечно же, tree-shaking. Ради интереса, я добавил в квазаровский проект QTable как довольно тяжеловесный компонент - js бандл подрос на еще 30 КБ

Выводы

Если нужны качественные проверенные временем компоненты, и их надо много, то Quasar и PrimeVue вне конкуренции. Vuetify выглядит неплохо, но дискредитировал себя долгим переходом на Vue 3 (изначально неудачной архитектурой) и текущей неполнотой.

Ant Design for Vue и Element Plus наоборот в аутсайдерах.

Naive UI засунула стили в js бандл (из-за этого не было проблем или дополнительных телодвижений со стилями при установке в отличие от большинства других библиотек), поэтому точно сказать о ней что-то сложно. Но набор компонент вполне приличный.

Очень интересен Vant UI как прекрасным результатом, так и интересным подбором компонент и композаблов. Библиотека ориентирована на мобильные устройства (работа со свайпами и прочее). Проект активно развивается. Интересно, что у него GitHub звезд почти как у Quazar-a, хотя он не такой известный.

Ну и первое место - Agnostic UI. У них есть вариант элементов чисто с CSS, но и с компонентами результат впечатляющий. Конечно, компоненты не такие богатые и прилизанные, как у Vuetify или Element Plus, но разница в весе очевидна.

А, вообще, свои компоненты (если это не что-то типа сложных таблиц или компонента выбора даты) - наилучший вариант для любителей эффективного кода. Ну и делать базовые компоненты-обёртки, если используешь компоненты других библиотек.

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Какую библиотеку UI компонент для Vue вы используете?
27.27% Quasar 3
18.18% Vuetify 2
18.18% PrimeVue 2
0% Ant Design 0
0% Vuestic UI 0
0% Element Plus 0
9.09% Naive UI 1
0% Agnostic UI 0
9.09% Vanilla Vue 1
0% Vant UI 0
45.45% Пишу свои компоненты 5
Проголосовали 11 пользователей. Воздержались 5 пользователей.
Источник: https://habr.com/ru/articles/745012/


Интересные статьи

Интересные статьи

Идея зрела очень давно и вот, наконец, дозрела. Как вам такой эксперимент: сравнить отпечатки, полученные в домашних условиях на одном из фотопринтеров Epson с отпечатками, заказанными у сервисов комм...
Я работаю над одним проектом, который с большим трудом вмещается в 64к памяти микроконтроллера. И подумалось мне, что возможно, пора взглянуть на разные компиляторы, чтобы выбрать как...
На рынке доступно множество коммерческих решений для управления информацией о товарах (PIM). И есть 3 бесплатных решения с открытым исходным кодом: Akeneo, Pimcore и OpenPIM, которые ...
Сегодня мы бы хотели немного поговорить о VDI. В частности о том, что порой создает значительную проблему выбора для топ-менеджмента крупных компаний: какой вариант предпочесть – организовать лок...
Часто у инженеров возникает необходимость транслировать проекты из одной САПР в другую. На предприятиях не редко бывает такая ситуация, когда разные отделы проектируют в разных САПРах. Также тр...