require.js: как я могу загрузить модуль, который определяет имя под другим именем? - PullRequest
1 голос
/ 23 декабря 2011

Я пытаюсь загрузить underscore.js с require.js следующим образом:

require(["libs/underscore-1.2.3.js"], function(_) {
    ...
});

Но это не работает, потому что underscore.js экспортирует имя модуля: define('underscore', function() { ... }).

Без переименования lib/underscore-1.2.3.js, как я могу загрузить его с помощью require.js?

Ответы [ 2 ]

2 голосов
/ 29 декабря 2011

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

Пример JSFiddle

require(
    ['require','http://documentcloud.github.com/underscore/underscore-min.js'],
    function(require){
        require(['underscore'],function(_){
            var a = _.intersection([1,2,3],[2,3,4]);
            document.write("Underscore is available in the closure : " + a);
        })
    }
)

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

2 голосов
/ 23 декабря 2011

Хорошо, после еще нескольких поисков я нашел: https://github.com/documentcloud/underscore/pull/338#issuecomment-3245213

Где

@ dvdotsenko Все загрузчики AMD позволяют отображать идентификатор модуля на частичный путь, обычноконфигурация называется «путями», поэтому для выполнения того, что вы хотите:

   requirejs.config({
       paths:
           underscore: 'js/libs/underscore-1.2.3.min'
       }
   });
   require(['underscore'], function () {});
   

Поскольку подчеркивание используется другими модулями более высокого уровня, такими как магистраль, необходимо использовать общее имя зависимости для связи с общимзависимость от подчеркивания, и имеет смысл называть эту зависимость «подчеркиванием».Конфигурация путей дает способ сопоставления с конкретным URL-адресом, который вы хотите использовать для этой зависимости.

Это не ответ на мой вопрос (т. Е. До сих порне знаю, как бы я мог загрузить подчеркивание, если бы у меня был только URL), но по крайней мере это функциональный обходной путь.

...