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

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

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

и иногда

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

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

4 ответов


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

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

см. эту фиксацию - https://github.com/jrburke/requirejs/commit/be45948433b053921dc6a6a57bf06d04e13b3b39


Are 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. Вы должны сделать это совершенно независимо от того, есть конфликт в глобальном пространстве.


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

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

кроме того, что произойдет, если случится немыслимое, и среда, о которой идет речь, не только уже имеет" require", но и имеет" requirejs"? Значит ли это, что у нас тоже должен быть requirejsjs? И так далее...?


Они же Откройте сайт, который загружен require уже

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

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

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

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