Require.js优化与asp.net mvc 4捆绑和缩小

Joy*_*Joy 30 requirejs asp.net-mvc-4 bundling-and-minification

最近我看到Mvc 4已经将几个脚本和css捆绑和缩小到一个链接中,这个链接通过一个配置缩小和减少脚本加载时间.

require.js r.js也是一个可用于脚本加载和缩小的优化工具.谁能告诉我哪个更好?或者,如果require.js可以与minification + bundling工具一样使用,也可以将脚本加载到单个文件中?和Mvc 4一样吗?

我更喜欢使用require.js进行AMD加载,因此想要应用Mvc 4缩小概念的概念,如果它在require.js中可用作为脚本的单个url加载和用于优化和缩小的css.

有人可以为这个话题提出一些想法和建议吗?

Pet*_*SFT 21

Require.js是一个客户端工具,它允许客户端只请求它需要的脚本.通常在MVC应用程序中,每个脚本最终都会被添加到_layout.cshtml文件中,并且不会考虑每个控制器所需的内容.Require.js允许您考虑每个模块运行所需的内容.

r.js需要node或java,并且是一个服务器端工具,有点类似于MVC4捆绑和缩小.r.js与require一起使用,试图缩小常用的bundle并将它们作为包发送.但是通过捆绑和打包它们,你可能会在脚本"需要"它们之前发送它们.

有趣的是,通过捆绑你几乎击败了AMD的目的.即 - 您将一大堆依赖脚本捆绑到一个文件中,而不是让require.js找出它需要哪些,并在需要时提出请求.

关于整合require和mvc的一个很好的参考:http://www.stefanprodan.eu/2012/09/intro-requirejs-for-asp-net-mvc/ - 请注意它没有使用捆绑.

所以对我来说 - 我认为缩小单个文件(并捆绑/缩小css)并让它需要工作,以支持AMD.


Lu4*_*Lu4 9

在我的特定情况下(以及我之前遇到的许多其他情况),仅为了加载1-3kb脚本或样式文件而在单独请求中执行额外的服务器加载没有多大意义.

  • 如上所述,此类请求使用通常有限的服务器资源
  • 加载需要时间,50-200ms保证滞后
  • 您拥有的文件越多,其中一个文件因连接问题而无法加载的可能性就越大
  • 将所有内容包装到模块中还需要大量的样板代码

即使是巨大的5mb(这是一个不真实的)捆绑脚本,并且稍后从缓存中加载它也会更加高效和安全.通过使用GZip,您可以将5 MB的文本压缩为200kb的二进制数据,这远远低于平均站点每个请求使用的图形内容量.

  • 是的,似乎更合乎逻辑的是每个站点使用一个脚本文件并在用户第一次访问您的站点时加载它,以后将使用缓存版本 (2认同)