У нас есть приложение, использующее require.js, которое в то же время допускает расширения, и js этих расширений обслуживаются по другому пути. Итак, в нашем конфиге имеем:
var require = {
baseUrl : '/app/js/modules/'
}
Но расширение обслуживается с /extension/foo-extension/js/modules/
. Кроме того, расширения являются динамическими до такой степени, что они вставляют некоторый HTML-код на страницу, которая использует data-module="foo/bar"
, которую мы используем для загрузки этого модуля.
В идеале мы могли бы передать/установить контекст для require.js, который ограничивал загрузку следующих модулей в пределах baseUrl /extension/foo-extension/js/modules/
. Насколько я могу судить, нам нужно будет сделать require('/extension/foo-extension/js/modules/foo/bar')
, чтобы загрузить foo/bar
из foo-extension.
Вот некоторый псевдокод, чтобы представить, где нам нужно обрабатывать установку пути/контекста:
define(['some-dep'], function(SomeDep) {
$.get('somepage', function(html) {
var extension = html.data('extension'); // "foo/bar"
var extensionBase = html.data('extensionBase'); // extension/foo-extension/js/modules/
// This is where we need to readjust require to use the base path for any foo module
});
});
Есть ли другое решение для этой части пути по пути абсолютного пути?