多少速度JS的不断积累与RequireJS / AMD? [关闭](How much speed

2019-06-26 09:09发布

如何更快的是requireJS实际上,在一个大的网站?

任何人做对使用异步加载VS并不大网站的速度,任何测试?

例如,使用骨干有很多的意见(> 100),是它更好地只是有一个被加载一次与所有的美景,然后总是可用一个视图对象,或者他们应该都需要异步加载?

此外,是否有对这些考虑为移动VS桌面什么不同吗? 我听说你想限制行动,而不是大小的请求

Answer 1:

我不相信require.js的目的是生产异步加载所有脚本。 在开发每个脚本的异步加载是方便,因为你可以改变你的项目,并没有一个“编译”步重装。 然而,在生产环境中 ,应该所有的源文件的结合更使用较大的模块为一个或r.js优化 。 如果你的web应用的大能(用户的特定操作后,如)推迟到您的模块的子集加载到以后的时间,这些模块可以单独优化,并在生产中异步加载。

关于加载一个较大的JS文件VS多个较小的文件,一般的速度:

“减少HTTP请求”已经成为一种普遍的格言加快前端的性能,这是一个担心,就是即使在今天的世界上的移动浏览器(通常在网络上是不是宽带连接幅度较慢的订单运行)更相关。 [参考]

但也有其他因素,如:

  • 移动缓存 : iPhone手机限制的文件,他们缓存大小这么大的文件可能需要每次都被下载,使得许多小文件更好。
  • CDN用法 :如果您使用的是常见的第三方库像jQuery它可能是最好不要将其包含在一个大单JS文件,而不是从CDN,因为你的网站的用户可能已经拥有了它从其他网站加载在其高速缓存( 参考 )。 欲了解更多信息,请参见下面更新
  • 懒惰评价 :AMD模块可以被懒惰地解析和评估,允许在用户加载应用下载,同时推迟解析+ EVAL的成本直到需要该模块。 请参见本文章和系列,它引用了其他老的文章。
  • 目标浏览器 :浏览器限制每个主机并发下载的数量。 例如,IE 7将只能从给定主机下载两个文件同时。 其他限制为4,和其他6 [参照]

最后, 这里是由史蒂夫Souders的好文章 ,总结了一堆的脚本加载技术。

更新:重新CDN用法:史蒂夫Souders的发布了详细的分析使用CDN的标识许多注意事项,利弊第三方库(如jQuery的)的。



Answer 2:

这个问题现在是有点老了,但我想我可能会增加我的想法。

我完全同意rharper使用r.js结合生产所有的代码,但也有一个分裂的功能的情况下。

对于单页的应用程序,我认为有一切融合在一起才有意义。 对于大型较为传统的基于网页的网站已经在页面的交互这可能是非常繁琐,导致加载了很多不必要的代码进行了大量的用户。

我已经使用了几次的方法是

  • 定义核心模块(需要在所有网页上为他们正常工作),这被合并成一个单一的文件。
  • 创建模块加载器能够理解DOM依赖性和路径模块
  • 通过根据需要由特定网页所需的增强的功能性的模块加载器和异步加载模块doc.ready回路。

这样做的优点是你保持初始页面体重下降,并作为额外的脚本加载后异步加载网页的感知性能应该会更快。 这就是说,装这种方式应该做走近为渐进增强(即在形式阿贾克斯),以便在加载速度慢或错误的基本功能的情况下,所有功能仍然可用。



文章来源: How much speed is gained with RequireJS/AMD in JS? [closed]