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
вы можете обнаружить, что они являются одной и той же функцией с разными именами