У меня есть конфигурация для requirejs, которая совместно используется несколькими приложениями. Когда приложение загружается, приложение получает объект с макетом приложения (и различными другими параметрами). Я хочу использовать этот объект для определения модулей/пакетов для приложения.RequireJS: как динамически определять/добавлять пакеты
siteMap = { modules: { "foo": { … }, "bar": { … }, … }, other: "stuff" }
/shared/
libs/
bootstrap.js
jquery.js
…
app.js
/$appName/
foo/
index.html
edit.html
main.js
bar/
index.html
stuff.html
main.js
…
Я предполагаю, что должен быть способ, чтобы добавить пакеты, выходит что-то вроде этого:
// /shared/app.js
require.config({
paths: {
"bootstrap": ["//hosted.bootstrap.js","/shared/libs/bootstrap.js"],
"jquery": ["//hosted.jquery.js","/shared/libs/jquery.js"],
"siteMap": "//appName.example.com/api/siteMap"
},
…
});
require(['jquery','siteMap','bootstrap'], function($,siteMap) {
for (var module in siteMap.modules)
{
require.config.packages[module] = siteMap.modules[module];
// OR
require.addPackage(siteMap.modules[module]);
}
});
Что должно произойти в результате вызова 'addPackage' (или что-то еще)? – explunit
@explunit, пакет добавляется к требованию, и его содержимое выполняется (и доступно), как если бы оно находилось в 'app.js' – jacob
, что-то должно произойти с .html в этих папках или просто нужно загрузить (например) foo/main.js? – explunit