javascript - RequireJS:如何动态定义/添加包

标签 javascript dynamic module 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]);
  }
});

最佳答案

您可以嵌套另一个 require() 调用以在 siteMap 告诉您应该加载什么后加载其他模块。像这样:

require(['jquery','siteMap','bootstrap'], function($,siteMap) {
    // .map assumes modern browser or use of something like es5-shim
    var modulesToLoad = siteMap.modules.map(function(m) { return m + '/main'; } );
    require(modulesToLoad, function() {
        // kick off the rest of app logic
    });
});

关于javascript - RequireJS:如何动态定义/添加包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18495659/

相关文章:

java - 从 JTree 中的文本文件动态填充树模型

php - 从 mysql 数据填充的动态下拉列表

python - 在 python 中运行特定的批处理命令

javascript - YouTube iFrame API 'YT is undefined'

javascript - D3 节点更新 - 如何在多个文本元素中选择一个特定的文本元素?

javascript - 如何使用多个表数据仅渲染一次页面而它们之间没有关系?

c# - 为什么 C# switch 语句不能接受 'dynamic' 类型?

python - 关于在我的计算机上存储第三方模块的建议

javascript - 如何在 SVG/D3 中围绕其质心旋转文本(垂直翻转)?

javascript - 如何使用更新的 UI 在 Shiny 中格式化 numericInput?