Require.js并通过r.js进行优化:如何找出组合多个页面模块的最佳方法?

时间:2012-03-29 22:11:05

标签: requirejs

使用Require.js并且它非常可靠。

但是,我正在使用r.js阅读有关优化(http://requirejs.org/docs/optimization.html)的内容。

根据我的理解,它将顶级定义的模块捆绑到1个文件中(很棒,因为:较少的http调用,缩小了)。

当我只定义了1个页面类型时,这似乎很好,即:要加载1组必需的模块。但是,在任何常规站点中,您都有多个页面类型,每个页面类型都需要不同的模块。

现在,我只是想知道r.js到底有多聪明?在确定要封装在一起的模块时,是否需要考虑所有多个页面(具有不同的“需求”),以便我不会为X页面类型使用X捆绑的javascriptf-iles,即使模块中存在大量重叠包含在每个捆绑脚本中。

我需要给优化器提供的任何提示,是自动处理等等?

澄清非常感谢,

1 个答案:

答案 0 :(得分:1)

我理解的是,优化器通过查找require()调用来查找文件的依赖关系,并列出它找到的内容。 (因此它只发现作为文字字符串传递给require()的依赖项。)然后将文件与其依赖项(递归地)合并到一个文件中,并最小化。

您可以控制配置中的模块内容。这是一个示例:

({

baseUrl: "Website/Scripts",
dir: "Staging/Scripts",
modules: [
    { name: "main", include: ["Rotator"], exclude: ["jwPlayerDialog"] },
    { name: "jwPlayerDialog" }
],
paths: {
    "jquery": "empty:"
},
fileExclusionRegExp: /^\.|Microsoft|modernizr|unobtrusive|\.min\.|\.debug\./
})

如果关闭最小化,则可以轻松查看每个文件中包含的内容。一个模块可以包含在多个文件中。例如,上面的Rotator模块将位于main.js中,并且仍然可以Rotator.js显示。