Можно ли остановить requireJS от автоматического добавления расширения .js?
Я использую requireJS для загрузки скриптов. Она имеетэта деталь в документах:
The path that is used for a module name should not include the .js extension, since the path mapping could be for a directory.
В моем приложении я сопоставляю все мои файлы сценариев по пути конфигурации, потому что они динамически генерируются во время выполнения (мои сценарии начинают жизнь какorder.js
но стать такими вещамиorder.min.b25a571965d02d9c54871b7636ca1c5e.js
(это хеш содержимого файла, для очистки кеша).
В некоторых случаях require добавит второе расширение .js в конец этих путей. Несмотря на то, что я генерирую динамические пути на стороне сервера, а затем заполняю путь конфигурации, мне нужно написать дополнительный код JavaScript, чтобы удалить.js
расширение из проблемных файлов.
Читая документы requireJS, я действительно не понимаю, почему вы хотите, чтобы отображение пути использовалось для каталога. Означает ли это, что можно каким-то образом загрузить файлы всего каталога за один вызов? Я не понимаю.
Кто-нибудь знает, возможно ли просто принудительно потребовать прекратить добавление .js к путям файлов, чтобы мне не приходилось его взламывать?
Благодарю.
ОБНОВЛЕНИЕ: добавлено несколько примеров кода по запросу.
Это внутри моего HTML-файла (это проект Scala, поэтому мы не можем записать эти переменные непосредственно в.js
файл):
foo.js.modules = {
order : '@Static("javascripts/order.min.js")',
reqwest : 'http://5.foo.appspot.com/js/libs/reqwest',
bean : 'http://4.foo.appspot.com/js/libs/bean.min',
detect : 'order!http://4.foo.appspot.com/js/detect/detect.js',
images : 'order!http://4.foo.appspot.com/js/detect/images.js',
basicTemplate : '@Static("javascripts/libs/basicTemplate.min.js")',
trailExpander : '@Static("javascripts/libs/trailExpander.min.js")',
fetchDiscussion : '@Static("javascripts/libs/fetchDiscussion.min.js")'
mostPopular : '@Static("javascripts/libs/mostPopular.min.js")'
};
Тогда внутри моегоmain.js
:
requirejs.config({
paths: foo.js.modules
});
require([foo.js.modules.detect, foo.js.modules.images, "bean"],
function(detect, images, bean) {
// do stuff
});
В приведенном выше примере я должен использовать строку «bean» (который относится к требуемому пути), а не мой прямой объект (как другие используютfoo.js.modules.bar
) иначе получаю доп.js
прилагается.
Надеюсь, это имеет смысл.