RequireJS:优化器为定义模块生成名称
RequireJS: optimizer generates name for define module
我正在使用 gulp.js 和 requirejs (gulp-requirejs) 的优化工具,它将所有脚本合并到一个文件中。我有一个没有名称的定义模块,但它为它生成了一个名称。问题是我不知道如何从另一个文件调用该模块。
例如 page1.js:
...
define("map",["jquery"],function($){
...
});
define("lib", ["jquery"],function($){
...
});
在 page2.js 中,我想调用 page1.js lib 模块,但我不知道该怎么做?如果优化工具没有设置名称,那么我的代码就可以工作了,但这样我就不知道如何让它工作了。有什么想法吗?
不能在单个文件中使用多个模块,除非这些模块被命名。否则 RequireJS 将不知道如何将模块请求与定义它的实际代码相关联。
将所有模块优化为单个包的典型情况是,包中将有 一个 特定模块作为应用程序的入口点,并且那么您可以将该模块名称放入 paths
:
require.config({
paths: {
lib: 'path/to/page1',
}
});
如果你这样做 没有 有一个单一的入口点,但实际上也可能有代码 在 bundle 之外,它将启动加载模块在 包 中,那么您需要在 bundles
:
中列出这些模块
require.config({
paths: {
lib: 'path/to/page1',
},
bundles: {
lib: ['map', ...],
}
});
我上面显示的 bundles
设置基本上是 "when you look for the module named map
, fetch the module lib
, and you will have the definition of map
."
我正在使用 gulp.js 和 requirejs (gulp-requirejs) 的优化工具,它将所有脚本合并到一个文件中。我有一个没有名称的定义模块,但它为它生成了一个名称。问题是我不知道如何从另一个文件调用该模块。
例如 page1.js:
...
define("map",["jquery"],function($){
...
});
define("lib", ["jquery"],function($){
...
});
在 page2.js 中,我想调用 page1.js lib 模块,但我不知道该怎么做?如果优化工具没有设置名称,那么我的代码就可以工作了,但这样我就不知道如何让它工作了。有什么想法吗?
不能在单个文件中使用多个模块,除非这些模块被命名。否则 RequireJS 将不知道如何将模块请求与定义它的实际代码相关联。
将所有模块优化为单个包的典型情况是,包中将有 一个 特定模块作为应用程序的入口点,并且那么您可以将该模块名称放入 paths
:
require.config({
paths: {
lib: 'path/to/page1',
}
});
如果你这样做 没有 有一个单一的入口点,但实际上也可能有代码 在 bundle 之外,它将启动加载模块在 包 中,那么您需要在 bundles
:
require.config({
paths: {
lib: 'path/to/page1',
},
bundles: {
lib: ['map', ...],
}
});
我上面显示的 bundles
设置基本上是 "when you look for the module named map
, fetch the module lib
, and you will have the definition of map
."