【问题标题】:RequireJS - Importing modules inside r.js optimized bundleRequireJS - 在 r.js 优化包中导入模块
【发布时间】:2013-07-29 06:19:57
【问题描述】:

是否可以从优化的 RequireJS/r.js 包中导入单个模块?

我有一个 javascript 项目分为两个独立的组件 - 'MyLibrary' 和 'MyApplication'

MyLibrary 包含两个独立的模块,“MyModule1”和“MyModule2”。

在开发模式下,我可以使用 RequireJS 和 MyApplication 中的正常 define(['MyLibrary/MyModule1'],function(){}) 语法导入这些模块中的每一个。

但是,一旦通过 r.js 运行 MyLibrary,这似乎不再可能 - 似乎没有办法直接引用内部模块了?

我可以从编译/优化的源代码中看到每个模块都有 define() 块,但是 My Application 中的 RequireJS 似乎无法直接引用这些。

这可能吗,还是我需要将整个应用程序捆绑到一个文件中才能正常工作。

编辑:RequireJS 优化阶段正在我的 Play 框架中完成,我对构建配置的控制很少。

({appDir: "javascripts",
[info]           baseUrl: ".",
[info]           dir:"javascripts-min", mainConfigFile: "javascripts/build.js", modules:         [{name: "main"}]})

【问题讨论】:

  • 您能发布您的 r.js 构建配置和任何其他相关代码吗?
  • 构建文件是由我正在使用的框架(Play 2.1)动态生成的,而且它们也不多。反正我会加的。

标签: javascript requirejs


【解决方案1】:

为了使用库中的模块,您需要指示 RequireJS 如何找到这些模块。在 main.js 你需要有这样的东西:

  require.config({
      // ...
      paths: {
          // ...
          'MyLibraryBundleName': 'dist/MyLibraryFile',
          // ...
      },
      // ...
      bundles: {
          //...
          'MyLibraryBundleName': ['MyLibrary/MyModule1', 'MyLibrary/MyModule2'],
          //...
      }
  });

当 MyApplication 引用这样的模块时:

define(['MyLibrary/MyModule1'],function(){})

...正如您所提到的,RequireJS 将查找“MyLibrary/MyModule1”并在“bundles”部分找到它,然后检查“路径”部分以找到实际文件“dist/MyLibraryFile”将被加载。

【讨论】:

    猜你喜欢
    • 2016-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-08
    • 2013-03-18
    • 2016-07-08
    • 1970-01-01
    相关资源
    最近更新 更多