最近,我看到Mvc 4已经将几个脚本和css捆绑和缩小到一个链接中,通过单个配置缩小和减少脚本加载时间。
require.js r.js也是一个可用于脚本加载和缩小的优化工具。谁能告诉我哪个更好?或者,如果require.js可以与minification + bundling工具一样使用,也可以将脚本加载到单个文件中?和Mvc 4一样吗?
我更喜欢使用require.js进行AMD加载,因此想要应用Mvc 4缩小概念的概念,如果它在require.js中可用作为脚本的单个url加载和用于优化和缩小的css。
有人可以为这个话题提出一些想法和建议吗?
答案 0 :(得分:21)
Require.js是一个客户端工具,它允许客户端只请求它需要的脚本。通常在MVC应用程序中,每个脚本最终都会被添加到_layout.cshtml文件中,并且不会考虑每个控制器所需的内容。 Require.js允许您考虑每个模块运行所需的内容。
r.js需要node或java,并且是一个服务器端工具,有点类似于MVC4捆绑和缩小。 r.js与require一起使用,试图缩小常用的bundle并将它们作为包发送。但是通过捆绑和打包它们,你可能会在脚本“需要”它们之前发送它们。
有趣的是,通过捆绑你几乎击败了AMD的目的。 ie - 你将一大堆依赖脚本捆绑到一个文件中,而不是让require.js找出它需要的那些,并在需要时发出请求。
关于整合require和mvc的一个很好的参考:http://www.stefanprodan.eu/2012/09/intro-requirejs-for-asp-net-mvc/ - 请注意它没有使用捆绑。
所以对我来说 - 我认为缩小单个文件(并捆绑/缩小css)并根据需要调整其工作以支持AMD。
答案 1 :(得分:9)
在我的特定情况下(以及我之前遇到过的许多其他情况),为了加载1-3kb脚本或样式文件,单独请求执行额外的服务器加载没有多大意义。
一旦加载甚至巨大的5mb(这是一个不真实的)捆绑脚本并且稍后从缓存加载它看起来更加高效和安全。通过使用GZip,您可以将5 MB的文本压缩为200kb的二进制数据,这远远低于平均网站每个请求使用的图形内容量。