
Предисловие
Привет! Разбираясь с микрофронтендами в монорепозитории для проекте с Vue3 пришёл к выводу, что так много уделяется внимания гибкости в построении архитектуры и бизнес-задачам, что все боятся заниматься улучшением "условий труда" связанных со сборкой приложения! Решил что эта задачка как раз мне подходит и представляю вашему вниманию небольшую статью которая возможно поможет вам сделать выбор или подтолкнет попробовать новые интсрументы сборки фронтенда! Для справки - микрофронтенды у нас на Module Federation, Nx для управления монрепозиторием, общаемся мы через GraphQL, тестируем с Jest и конечно куда без TypeScript. Проект активно развивается, и с ростом его масштабов столкнулись с вопросом: какой сборщик лучше всего справится с нашими задачами? Webpack уже давно с нами, но его медлительность заставляет искать альтернативы. Vite обещает молниеносную разработку, а Rspack — производительность без сложной миграции. Давайте разберёмся, что подойдёт именно нам — и, возможно, вам.
1. Webpack
https://webpack.js.org/
Старый добрый танк фронтенда — медленный, но мощный. Гибкий до предела, он тащит всё: от микрофронтендов до легаси, являясь по-факту стандартом индустрии (особенно корпоративной разработки) с 2014 года. К webpack можно относится по разному, однако всё же стоит признать, что если его хорошо настроили, то стабильно работать он может даже дольше, чем будет жить проект (конечно не без греха в виде долгого старта, прожорливости и сложной конфигурации).
Преимущества webpack
Зрелость и экосистема - наиболее стабильный инструмент с огромной экосистемой плагинов и лоадеров;
Гибкость - позволяет тонко настраивать конфигурацию;
Хорошая оптимизация для production - tree-shaking, code splitting, lazy-loading etc.;
Нативные микрофронтенды - полная поддержка Module Federation так как изначально разрабатывался в webpack;
Интеграция с Nx - поддержка @nx/webpack для сборки.
Недостатки webpack
Плохая производительность - медленный старт dev-сервера из-за полной пересборки при изменении кода, не используется ESM по-умолчанию;
Сложность конфигурации - требует знаний для настройки, сложно вносить изменения;
Прожорливость - высокое потребление памяти при разработке и долгая сборка.
2. Vite
https://vite.dev/
Относительно новый инструмент выпущенный 2020 году, авторами Vue.js. Он использует нативные ES-модули (ESM) в браузере для разработки и Rollup для production-сборки. Запускается мгновенно, обновляет код на лету, но с микрофронтендами пока играет в догонялки — поддержка сыровата.
Плюсы vite
Скорость разработки - мгновенный запуск dev-сервера благодаря использованию ES-модулей (ESM) в паре с ESbuild (сборщиком написанным на Go). HMR хорошо работает даже при работе над большими проектами;
Простота конфигурации и использования - упрощённая конфигурация сборки проектов + экосистема из немалого количества плагинов и поддержка большинства современных фреймворков;
Нативно для vue - разработкой и развитием занимается практически команда vue, поэтому весь ключевой функционал всегда будет с поддержкой vue + настройка пресетов из коробки;
Интеграция с Nx - официальный плагин @nx/vite для генерации проектов и задач.
Оптимизация сборки - при сборке production использует Rollup под капотом, что может снижать вес итогового бандла в некоторых случаях, улучшая runtime приложения, но может терять в скорости самой сборки;
Минусы vite
Ограниченная поддержка legacy - проблемы с устаревшими браузерами;
Экосистема - меньше плагинов, чем у Webpack;
Сложности с микрофронтендами - поддержка Module Federation есть, но пока не нативно. Недавно вышел официальный плагин @module-federation/vite (есть альтернатива в виде @originjs/vite-plugin-federation), возможны баги при сложных сценариях из-за относительной свежести и ненативной поддержки (примеры проектов использующих module-federation в связке с vite есть);
Гибкость сборки - Production-сборка на Rollup может быть менее гибкой чем Webpack;
(?) Возможные проблемы с тестами - некоторые разработчики отмечают проблемы при написании тестов с jest и рекомендуют переходить на vitest, однако на практике не встречал пока что проблем с тестами.
3. Rspack
https://rspack.dev/
Самый молодой сборщик, разработанный на Rust для повышения производительности вышел в релиз 1-ой версии в 2024. Он позиционируется как совместимая с Webpack альтернатива, поддерживающая большинство его API и экосистемы, но с многократным ускорением сборки благодаря параллельной архитектуре и оптимизациям на уровне Rust.
Сильные стороны rspack
Скорость - написан на Rust: сборка в 5-10 раз быстрее Webpack. Поддержка параллельной обработки файлов;
Совместимость с Webpack - поддерживает большинство конфигов и плагинов Webpack (легкая миграция);
Module Federation - нативная поддержка (через совместимость с Webpack @module-federation/enhanced);
Интеграция с Nx - экспериментальная поддержка @nx/rspack.
Слабые стороны rspack
Незрелость - меньше документации и сообщества, меньше решённых проблем;
Ограниченная экосистема - не все плагины Webpack совместимы, мало готовых решений для Vue
Транспилятор - использует движок SWC (тоже на Rust) вместо Babel, который по тестам лучше (до 20х раз), но с теми же рисками;
Риск нестабильности - в силу молодости проекта пользователи могли столкнуться ещё не со всеми проблемами, в то время как большинство проблем webpack/vite имеют готовые решения.
Сравнение по ключевым параметрам
Параметр | Webpack | Vite | Rspack |
|---|---|---|---|
Скорость dev-сборки | Низкая
Источник: https://habr.com/ru/articles/888478/
Поделиться ссылкой:
Интересные статьиИнтересные статьи
Если у вас есть готовая идея мобильного приложения, то главная задача — найти подрядчика, который превратит задумку в реальный продукт, поймет, что конкретно вы хотите получить, и ...
При загрузке данных в Highload-блоки возможна ситуация, когда объем загружаемых данных очень велик.Тем не менее, самый распространенный путь для добавления данных - их перебор в цикле, и последующее д...
Сегодня мы публикуем второй материал из цикла, посвящённого использованию Python в Instagram. В прошлый раз речь шла проверке типов серверного кода Instagram. Сервер представляет собой монолит, н...
В 2019 году люди знакомятся с брендом, выбирают и, что самое главное, ПОКУПАЮТ через интернет. Сегодня практически у любого бизнеса есть свой сайт — от личных блогов, зарабатывающих на рекламе, до инт...
«Битрикс» — кошмар на костылях. Эта популярная характеристика системы среди разработчиков и продвиженцев ныне утратила свою актуальность.
|
