我在使用 RequireJS 的网站上有多个页面,并且大多数页面都有独特的功能。它们都共享许多通用模块(jQuery、Backbone 等);它们也都有自己独特的模块。我想知道使用r.js优化此代码的最佳方法是什么。我看到 RequireJS 和 Almond 的文档和示例的不同部分提出了许多替代方案——所以我想出了以下我看到的可能性列表,我在问哪个是最推荐的(或者是否有另一种更好的方法) :
- 使用Almond为整个站点优化单个 JS 文件,该文件将加载一次然后保持缓存。这种最简单方法的缺点是我将加载到每个页面上用户不需要该页面的代码(即特定于其他页面的模块)。对于每个页面,加载的 JS 都会比它需要的大。
- 为每个页面优化单个 JS 文件,其中包括通用模块和页面特定模块。这样我就可以在每个页面的文件中包含 Almond,并且在每个页面上只加载一个 JS 文件——这将比整个站点的单个 JS 文件小得多。不过,我看到的缺点是公共模块不会缓存在浏览器中,对吧?对于用户访问的每个页面,她都必须重新下载大量 jQuery、Backbone 等(通用模块),因为这些库将构成每个唯一单页 JS 文件的大部分。(这似乎是RequireJS 多页示例的方法,只是该示例不使用 Almond。)
- 为常用模块优化一个 JS 文件,然后为每个特定页面优化一个 JS 文件。这样,用户将缓存公共模块的文件,并且在页面之间浏览时,只需要加载一个特定于页面的小 JS 文件。在这个选项中,我看到了两种完成它的方法,包括 RequireJS 功能:在所有页面上的公共模块之前加载文件 require.js,使用
data-main
语法或普通<script>
标签——根本不使用 Almond。这意味着每个页面将包含三个 JS 文件:require.js、公共模块和页面特定模块。湾。似乎这个要点正在建议一种将 Almond 插入每个优化文件的方法 ---- 这样我就不必加载 require.js,而是将 Almond 包含在我的公共模块和特定于页面的模块中。那正确吗?这比预先加载 require.js 更有效吗?
感谢您提供有关执行此操作的最佳方法的任何建议。