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

Asp.net mvc 4 Require.js优化与asp.net mvc 4捆绑和缩小,asp.net-mvc-4,requirejs,bundling-and-minification,Asp.net Mvc 4,Requirejs,Bundling And Minification,最近,我看到MVC4将多个脚本和css捆绑和缩小到一个链接中,通过一个配置缩短和减少脚本加载时间 require.js r.js也是一个优化工具,可用于脚本加载和缩小。谁能告诉我哪个更好?或者require.js是否可以像缩小+捆绑工具一样将脚本加载到单个文件中?和MVC4一样吗 我更喜欢使用require.js进行AMD加载,因此,如果它在require.js中作为脚本的单一url加载和用于优化和缩小的css可用,我会考虑应用Mvc 4缩小思想的概念 有人能为这个话题提出一些想法和观点吗 Re

最近,我看到MVC4将多个脚本和css捆绑和缩小到一个链接中,通过一个配置缩短和减少脚本加载时间

require.js r.js也是一个优化工具,可用于脚本加载和缩小。谁能告诉我哪个更好?或者require.js是否可以像缩小+捆绑工具一样将脚本加载到单个文件中?和MVC4一样吗

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


有人能为这个话题提出一些想法和观点吗

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

r、 js需要节点或java,是一个服务器端工具,有点类似于MVC4绑定和缩小。r、 js与require一起工作,尝试缩小常用的bundle并将其作为包发送。但是通过捆绑和打包,您可能会在脚本“需要”它们之前将它们发送下来

有趣的是,通过捆绑销售,你几乎违背了AMD的宗旨。ie—您将一大堆依赖脚本捆绑到一个文件中,而不是让require.js整理它需要哪些脚本,并在需要时发出请求

关于集成require和mvc的一个很好的参考资料:-注意,它没有使用绑定

因此,对我来说,我认为缩小单个文件(并捆绑/缩小css)并让其按需要工作,以支持AMD。

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

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

一次加载5mb(这是不真实的)捆绑脚本并在以后从缓存中加载,看起来更高效、更安全。通过使用GZip,你可以将5 mb的文本压缩成200kb的二进制数据,这远远少于一个站点平均每个请求使用的图形内容量。

有人能解释一下这个事实吗?但即使我通过r.js(而不是捆绑包)缩小并让require.js完成它的工作(比如根据需要加载脚本)。如果我打开萤火虫。我仍然看到脚本通过main.js加载到页面上(主脚本文件由
data main
属性调用。因此,它在某种程度上缓存了js文件,这是正常的。但它所做的是一次一个地加载所有脚本(实际上至少我在firebug中看到的是这样的)后来,它只在需要的时候请求脚本。所以,如果我考虑加载内容和网络带宽,那么实际上不是那么有目的吗?这是奇怪的——我对需求的理解是,它只在需要时才请求它们,而不是下载全部数量。以太,并要求他们一次一个,这样它可以同时做这两件事?很好的一点指出。我会研究它…但是,直到找到正确的解决方案和洞察的问题,我不会标记它作为答案:)请不要生气:)我也希望你探索我上面提到的事实:)你肯定有优化=没有?如果您没有,r将在第一次调用时提供整个文件。然后-require将根据需要单独发送每个文件。。。这对您来说似乎是这样的……因此,您在某种程度上说,压缩和缩小版本的捆绑js与asp.net mvc捆绑比使用requirejs为ajax请求执行服务器加载要高效得多?是的,每个站点使用一个脚本文件似乎更符合逻辑,并且在用户第一次访问您的站点时将其加载,稍后将使用缓存版本您的观点是有效的。但对于那些使用面向javascript的结构的人来说,有点像SPA的模块定义。这难道不是requirejs更耀眼吗?好像你可以把所有东西都管理到文件夹结构中,而且管理性更好。显然,我知道我偏离了主题,但奇怪的是,在我的情况下,我已经将所有内容管理到文件夹结构中。在我的应用程序启动之前,它通过我的脚本文件夹并从中选择所有文件名及其路径,当选择所有文件名时,我运行脚本,将所有找到的脚本优化为一个文件。