RequireJS: Разница между функциями "requirejs" и "require"

Я использую requireJS 2.x. Я узнал, что некоторые учебники (и официальные документы) иногда используют

requirejs.config({ [...] });
requirejs(["module"]) ...

а иногда

require.config({ [...] });
require(["module"]) ...

Есть ли разница между этими двумя функциями (require и requirejs)? Я не мог найти ни слова об этом в документах.: (

Ответ 1

Они точно такие же.

Причина в том, что в некоторых средах уже есть require, и в этом случае RequireJS не перезаписывает его и не позволяет использовать библиотеку через requirejs

См. это commit - https://github.com/jrburke/requirejs/commit/be45948433b053921dc6a6a57bf06d04e13b3b39

Ответ 2

Являются ли requirejs И require тем же?

Как и в случае RequireJS 2.1.15, require и requirejs в глобальном пространстве действительно "точно совпадают", о чем свидетельствует этот тест, который вы можете выполнить в консоли:

> require === requirejs
true

Что возвращает тест true, он является тем же самым функциональным объектом. Они не являются двумя функциями, которые имеют похожий или идентичный код. Они - один и тот же объект, период.

Обратите внимание, что при выполнении define(['require'], function (require) { Передача require функции обычно отличается от глобальной require.

Следует ли использовать require или requirejs?

Это зависит. RequireJS - это загрузчик AMD, но он не единственный загрузчик в городе. Если вы хотите написать код, который соответствует 100% спецификации AMD, так что кто-то, использующий ваш код, может использовать любой загрузчик, который они хотят, без изменения вашего кода, тогда вы должен использовать require на глобальном уровне, потому что requirejs специфичен для RequireJS. Другой загрузчик AMD не будет определять его. Спецификация AMD определяет require, но не requirejs.

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

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

Ответ 3

ОК, они действительно могут быть "точно такими же". Позвольте затем сосредоточиться на том, почему вы будете использовать один против другого...

Непонятно, что следует считать "лучшей практикой": если requirejs обеспечивает дополнительную уверенность "если в некоторых средах уже может потребоваться", то не было бы хорошей идеей всегда использовать функцию requirejs для определения требуется конфигурация, а не функция require?

Кроме того, что произойдет, если немыслимое произойдет, и окружающая среда не только уже имеет "требовать", но также имеет "requirejs"? Означает ли это, что у нас тоже должны быть требования? И так далее...?

Ответ 4

Они одинаковы Откройте загруженный веб-сайт уже

затем откройте консоль Chrome

введите в консоли и нажмите enter

введите requirejs в консоли и нажмите enter

вы можете обнаружить, что они являются одной и той же функцией с разными именами