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."