Как сопровождающий приложения, существовавшего до Webpacker, я могу привести одну причину:
Трудно перенести существующий интерфейс из Sprockets в Webpack.
Sprockets объединяет все JS в один большой файл с общей областью действия. Webpack изолирует область действия каждого модуля JS. Чтобы перейти на Webpack, вам нужно убедиться, что ваш код по-прежнему работает с изоляцией области действия.
Что часто проблематично, потому что во времена Sprockets у вас не было должных JS-требований, и вам приходилось полагаться на глобальные переменные или переменные верхнего уровня для совместного использования кода и данных между исходными файлами JS.
Rails не предлагает безболезненного пути перехода от компиляции Sprockets к Webpack. Таким образом, он должен поддерживать оба.
Но чтобы ответить на другой вопрос - в дальнейшем вам следует использовать Webpacker , если у вас достаточно JS, чтобы сделать его стоящим .
Если ваш интерфейс простой, вы пропустите некоторые неприятности JS, если будете использовать Sprockets. Например, если вы хотите добавить 10 строк JS в свое приложение, вам может не потребоваться настройка целой среды JS с управлением зависимостями и node_modules
и т. Д., Что является ценой использования Webpack / Webpacker. Было бы еще более бессмысленно управлять средой JS, если бы все, что вам нужно, - это скомпилировать CSS и добавить дайджесты к именам файлов вашего изображения - на что Sprockets в совершенстве способен, без package.json
и всего, что связано с JS.
Следовательно, есть вторая причина:
Webpacker хорош для приложений, которые имеют значительную кодовую базу внешнего интерфейса. Sprockets хорош для добавления небольшого количества JavaScript в традиционное приложение, отображаемое на сервере, и для приложений без JavaScript вообще.