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