使用Require.js并且它非常可靠。
但是,我正在使用r.js阅读有关优化(http://requirejs.org/docs/optimization.html)的内容。
根据我的理解,它将顶级定义的模块捆绑到1个文件中(很棒,因为:较少的http调用,缩小了)。
当我只定义了1个页面类型时,这似乎很好,即:要加载1组必需的模块。但是,在任何常规站点中,您都有多个页面类型,每个页面类型都需要不同的模块。
现在,我只是想知道r.js到底有多聪明?在确定要封装在一起的模块时,是否需要考虑所有多个页面(具有不同的“需求”),以便我不会为X页面类型使用X捆绑的javascriptf-iles,即使模块中存在大量重叠包含在每个捆绑脚本中。
我需要给优化器提供的任何提示,是自动处理等等?
澄清非常感谢,
答案 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
显示。