是否可以从优化的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"}]})
答案 0 :(得分:3)
为了使用库中的模块,您需要指示RequireJS如何查找此模块。在main.js中你需要有这样的东西:
require.config({
// ...
paths: {
// ...
'MyLibraryBundleName': 'dist/MyLibraryFile',
// ...
},
// ...
bundles: {
//...
'MyLibraryBundleName': ['MyLibrary/MyModule1', 'MyLibrary/MyModule2'],
//...
}
});
当MyApplication引用这样的模块时:
define(['MyLibrary/MyModule1'],function(){})
...正如你所提到的,RequireJS将寻找'MyLibrary / MyModule1'并将其发现到'bundles'部分,之后将检查'path'部分以找到实际文件'dist / MyLibraryFile'将被加载。