Когда использовать Requirejs и когда использовать связанный javascript?

Это может быть глупым вопросом для веб-ребята. Но я немного смущен этим. Теперь у меня есть приложение, в котором я использую пару файлов Javascript для выполнения различных задач. Теперь я использую Javascript bundler для объединения и минимизации всех файлов. Таким образом, во время выполнения будет только один файл app.min.js. Теперь Requirejs используется для загрузки модулей или файлов во время выполнения. Итак, вопрос в том, что у меня уже есть все вещи в одном файле, тогда мне нужны requirejs? Или что такое сценарий использования, где я могу использовать requirejs и/или bundler?

Пожалуйста, дайте мне знать, нужны ли какие-либо дополнительные данные.

Ответ 1

Это очень спорная проблема среди многих опытных разработчиков javascript. На многих других языках есть фаза "компиляции", в которой вся программа в комплекте для развертывания (файлы JBoss.WAR приходят на ум). Программисты, которые приходят из более традиционного фона, часто предпочитают этот подход.

В последние годы в Javascript наблюдается такой рост, что трудно составить точную передовую практику, но те, которые ценят более функциональный характер Javascript, часто предпочитают подход загрузки модуля (например, использование require.js).

Я написал Frame.js, который работает так же, как require.js, поэтому мое смещение относится к подходу загрузчика модуля.

Чтобы ответить на ваш вопрос напрямую, да, это тот или иной.

Большинство, которые утверждают, что вы упаковываете свои скрипты в один файл, считают, что он обеспечивает большее сжатие и, следовательно, более эффективно. Я считаю, что преимущества эффективности упаковки в большинстве случаев незначительны, потому что: (1) время загрузки модулей распределяется по всему сеансу, (2) отдельные модули могут быть сжаты почти до одного процента, (3) отдельные модули могут быть кэшированы сервер и маршрутизаторы отдельно, и (4) загрузка скриптов только тогда, когда они необходимы, в конечном итоге позволяет вам загружать меньше кода для некоторых пользователей и больше кода в целом.

В долгосрочной перспективе, если вы можете увидеть преимущество для динамической загрузки script, используйте его. Если нет, объедините свои скрипты в один файл.

Ответ 2

Обычно во время разработки используется только требование RequireJS. После того, как сайт будет готов и готов к развертыванию, вы уменьшите код. Преимущество здесь в том, что RequireJS точно знает, что такое ваши зависимости, и, следовательно, может легко минимизировать код в правильном порядке. Вот что он говорит на сайте RequireJS:

Как только вы закончите разработку и хотите развернуть свой код для своих конечных пользователей, вы можете использовать оптимизатор для объединения файлов JavaScript вместе и его минимизации. В приведенном выше примере он может комбинировать main.js и helper/util.js в один файл и минимизировать результат.

Ответ 3

Это зависит от вашего приложения. Если вы делаете приложение на стороне сервера только с скромным javascript (менее 100 килобайт), то отправляйтесь на общий набор, вы, вероятно, будете в порядке.

Но если вы создаете приложение для javascript и имеете тонну кода, то ваши потребности будут разными.

Например, в моем приложении я собираю все основные файлы. Там jQuery, подчеркивание, магистраль, мои основные файлы приложений, моя система входа в систему, моя система макета, мои уведомления и система чата, все являются частью моего большого начального файла.

Но у меня также есть много других модулей, которые не являются частью исходного пакета, которые загружаются после них.

Форумы, вики, wysiwyg, выбор цвета, перетаскивание, календарь и некоторые файлы анимации являются частью второй категории. Вам нужно принять разумные решения о том, что обычно используется и нужно немедленно, и что может быть отложено.

Если я включу все сразу, я могу получить выше мега javascript, что было бы безумным и сделать начальную загрузку неприемлемо медленной.

Вторая категория начинает загрузку после того, как событие initSuccess запускается из исходного файла.

Но вторая категория более умна, чем первая, когда она загружает то, что более важно. Например, если вы смотрите на wiki, он загрузит wiki, прежде чем загрузит сборщик цветов.