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



使用Require.js,效果非常好。

然而,我正在阅读有关优化的文章(http://requirejs.org/docs/optimization.html)使用r.js.

据我所知,它将顶级定义的模块捆绑到一个文件中(很棒,因为:http调用更少,缩小了)。

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

现在,我只是想知道r.js到底有多聪明?在确定将哪些模块打包在一起时,它是否考虑了所有多个页面(具有不同的"requires"),这样我就不会为X页面类型使用X绑定的javascriptf文件,即使每个绑定脚本中包含的模块有很大的重叠。

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

非常感谢澄清,。

我所理解的是,优化器通过查找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可用。

最新更新