常见问题:RequireJS优化

如何使用优化工具?§ 1

有关基本设置,请参见常规优化页面。另请参阅jQuery 文档页面,这是设置项目的好方法,即使您没有使用jQuery也是如此。

我如何向不依赖RequireJS的其他人提供库?§ 2

如果要构建一个库,以在可能不使用RequireJS或AMD加载器的网页上使用,则可以使用优化器将所有模块组合到一个文件中,然后将它们包装在一个函数中并使用AMD API垫片。这使您可以交付并非所有RequireJS都随附的代码,并允许您导出无需AMD加载程序即可在普通网页上运行的任何类型的API。

almond 是AMD API垫片,这是非常小的,所以它可以代替require.js来使用时,所有的模块都内置到使用RequireJS优化一个文件。该 包装构建配置选项会放一个函数包装周围的代码,如果你需要做额外的逻辑,你可以提供自己的包装。

请参阅almond项目,以获取有关如何使用API​​填充程序和wrap进行构建的详细信息。

如果您需要在构建后动态加载代码,则使用almond + wrap并不足够,因为almond无法动态加载代码。取而代之的是,您可能想为您的require/define使用命名空间。请参阅下一节。

如何为我的代码命名空间以在其他人的页面中正常播放?§ 3

如果要将代码提供给可能不使用AMD加载程序的网站,并且需要动态加载代码,则仅使用包装程序构建一个简单的文件是不够的。您还可能希望将您的加载需求与页面的AMD加载器隔离。

有一个namespace构建选项可以执行以下操作:

  • 重命名requirejs,require并将使用定义为具有"namespace." 。在他们面前。
  • 如果文件以下面的形式对define进行了存在性检查typeof define === 'function' && define.amd,则它将在define引用前面加上"namespace."。
  • 如果build.file中包含require.js,它将确保它公开了"namespace."。API版本。

不要使用namespace.require()/namespace.define()调用对源代码进行编码,而是像往常一样使用require()/define(),然后使用优化器进行重命名。