При разработке библиотеки JS я должен сделать ее совместимой с RequireJS/AMD или нет?

Если я создаю библиотеку JavaScript для общего использования, как мне обращаться с поддержкой RequireJS?

Насколько я могу судить, сделать ваш код, совместимый с RequireJS более или менее, делает невозможным использование без RequireJS. Так зачем мне это делать?

  • Как люди без Требований используют этот код?

  • Есть ли способ поддерживать оба без разветвления/разветвления? Должен ли я предоставить код прокладки?

  • Я правильно понимаю это?

Ответ 1

Если вы имеете дело только с браузером (а не node.js), это всего лишь несколько строк, чтобы библиотека поддерживала как AMD, так и не AMD.

Например, вот файл из jQuery, который делает это, из которых все, кроме четырех, являются комментариями:

// Execute the factory to produce jQuery
var jQuery = factory( window );

// Register as a named AMD module, since jQuery can be concatenated with other
// files that may use define, but not via a proper concatenation script that
// understands anonymous AMD modules. A named AMD is safest and most robust
// way to register. Lowercase jquery is used because AMD module names are
// derived from file names, and jQuery is normally delivered in a lowercase
// file name. Do this after creating the global so that if an AMD module wants
// to call noConflict to hide this version of jQuery, it will work.
if ( typeof define === "function" && define.amd ) {
    define( "jquery", [], function() {
        return jQuery;
    });
}

И очень похожий фрагмент от Knockout можно найти здесь:

} else if (typeof define === 'function' && define['amd']) {
    // [2] AMD anonymous module
    define(['exports'], factory);
}

Обратите внимание, что jQuery использует метод named module, в то время как нокаут использует анонимный модуль. jQuery также оставляет $ и jQuery в глобальном пространстве имен даже когда AMD обнаружена, тогда как Knockout (и, возможно, многие другие) не помещает что-либо в глобальное пространство имен при обнаружении AMD. Для каждого подхода есть плюсы и минусы, о чем свидетельствуют следующие вопросы: