如何使用优化工具?§ 1

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

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

如果您正在构建一个要在可能不使用 RequireJS 或 AMD 加载器的网页上使用的库,则可以使用优化器将所有模块组合到一个文件中,然后将它们包装在一个函数中并使用 AMD API 垫片。这使您可以发布不包含所有 RequireJS 的代码,并允许您导出任何可以在没有 AMD 加载器的普通网页上运行的 API。

almond 是一个非常小的 AMD API 垫片,因此当使用 RequireJS 优化器将所有模块构建到一个文件中时,它可以用来代替 require.js。wrap 构建配置选项将在代码周围放置一个函数包装器,或者如果您需要执行额外的逻辑,也可以提供您自己的包装器。

有关如何使用 API 垫片和 wrap 进行构建的详细信息,请参阅 almond 项目。

如果您需要在构建后动态加载代码,则使用 almond+wrap 将不够用,因为 almond 无法动态加载代码。相反,您可能希望对 require/define 的使用进行命名空间化。请参阅下一节。

如何对我的代码进行命名空间化,以便在其他人的页面中良好运行?§ 3

如果您想将代码提供给可能不使用 AMD 加载器的网站,并且您需要动态加载代码,那么仅仅使用带包装器的单个文件构建是不够的。您可能还想将您的加载需求与页面的 AMD 加载器隔离开来。

有一个namespace 构建选项,它执行以下操作

  • 将 requirejs、require 和 define 的使用重命名为前面带有“namespace.”。
  • 如果文件以以下形式对 define 进行存在性检查:typeof define === 'function' && define.amd,则它将在 define 引用前面加上“namespace.”。
  • 如果 require.js 包含在构建的文件中,它将确保它公开“namespace.”版本的 API。

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