Есть requirejsи requireтом же уровне ?
Начиная с RequireJS 2.1.15, requireи requirejsв глобальном пространстве они действительно «точно такие же», о чем свидетельствует этот тест, который вы можете выполнить в консоли:
> require === requirejs
true
То, что тест возвращает, trueговорит вам, что это один и тот же функциональный объект . Это не две функции, которые имеют похожий или идентичный код. Это один и тот же объект, точка.
Обратите внимание, однако при выполнении передается функции , как правило , отличается от глобальногоdefine(['require'], function (require) {requirerequire .
Следует ли использовать requireили requirejs?
Это зависит. RequireJS - это загрузчик AMD, но это не единственный загрузчик в городе. Если вы хотите написать код, который на 100% соответствует спецификации AMD , чтобы кто-то, использующий ваш код, мог использовать любой загрузчик, который им нужен, без необходимости изменять ваш код, вы должны использовать его requireна глобальном уровне, поскольку это requirejsотносится к RequireJS. Другой загрузчик AMD этого не определит. Спецификация AMD определяет, requireно нет requirejs.
Если вы загружаете что-то еще, что определяет глобальное значение, requireвы должны использовать его requirejsна глобальном уровне, чтобы избежать конфликта.
Внутри модуля всегда используйте defineдля получения ссылки на require. Делать это нужно совершенно независимо от того, есть ли конфликт в глобальном пространстве.