RequireJS - 在r.js优化包中导入模块

Jam*_*ies 6 javascript requirejs

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

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

MyLibrary包含两个独立的模块,'MyModule1'和'MyModule2'.

在开发模式中,我可以使用RequireJS导入每个模块,并使用MyApplication中的普通定义(['MyLibrary/MyModule1'],function(){})语法.

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

我可以从编译/优化的源中看到每个模块都有define()块,但My Application中的RequireJS似乎不能直接引用它们.

这是可能的,还是我需要将整个应用程序捆绑到一个文件中才能使用.

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

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

mar*_*anc 3

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

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

当 MyApplication 引用这样的模块时:

define(['MyLibrary/MyModule1'],function(){})
Run Code Online (Sandbox Code Playgroud)

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