2016-03-17 2 views
1

В RequireJS можно явно настроить пути для заданных модулей. Например, можно указать, что для модуля foo модуль bar должен быть загружен вместо (файл bar.js должен быть загружен):RequireJS paths config, говорящий «все модули находятся в этом файле»

require.config({ 
    paths: { 
     "foo": "bar" 
    } 
}); 

Как я могу сделать то же самое, но для всех модулей?


Я попытался с помощью звездочки, но она будет создавать только отображение для модуля * буквально:

require.config({ 
    paths: { 
     "*": "bar" 
    } 
}); 
+0

Я не знаю ответа, но интересуюсь целями, которые заставляют вас попробовать это ... Могу я узнать, что это? –

+0

@ LinhPham Компилятор TypeScript способен скомпилировать несколько внешних модулей в названные модули AMD, помещенные в один выходной файл. Однако, чтобы эффективно использовать эти модули, RequireJS должен быть настроен так, чтобы он знал, где их найти. –

+0

очень интересно. У нас есть это как 'jquery' +' underscore' => 'define ('jquery', [fucntion() {...}]); define ('underscore', [fucntion() {...}]); 'в один файл? ---- Если это так, возможно, может быть применено обход. –

ответ

1

По вашему вопросу и комментарии

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

Применяется рабочий процесс. Прежде всего, давайте не будем определять пути модулей в config, кроме пути для всех модулей.

require.config({ 
    paths: { 
     "all": "path/to/all/modules" 
    }, 

    deps: { "all" } // This to tell requireJS to load 'all' at initial state. 
}); 

А затем загрузить файл config/main

<script data-main="scripts/main" src="scripts/require.js"></script> 

От этого requireJS просто прочитать все define() блоки в modules.js. Он зарегистрирует все имена модулей, которые вы получили в js-файле. Например, если вы получили define('myModule', [function(){...}]); в своем module.js. Вы можете просто позвонить, чтобы загрузить его в любом месте без указания пути для него.

Например, где-то в вашем коде.

requirejs(['myModule', function(myModule){ 
    myModule.doSemething(); 
}); 

(Примечание:.. Да этот ответ не пытается решить исходную точку вопроса Но только попытаться решить исходную проблему Если кто-нибудь найти этот ответ бесполезное чувство свободно вниз голосования)

+1

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

Смежные вопросы