javascript – 使用RequireJS加载jQuery – 哪个更好,本地版本或CDN?

前端之家收集整理的这篇文章主要介绍了javascript – 使用RequireJS加载jQuery – 哪个更好,本地版本或CDN?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
EDITED澄清:

性能方面(虽然这还是一个野蛮的术语,我知道),这更好 – 通过RequireJS加载本地版本或者一个CDN版本的jQuery?

为了记录,RequireJS online doc包含一些似乎阻止CDN使用的段落,虽然我不太确定100%的含义:

Do not mix CDN loading with shim config in a build. Example scenario:
you load jQuery from the CDN but use the shim config to load something
like the stock version of Backbone that depends on jQuery. When you do
the build,be sure to inline jQuery in the built file and do not load
it from the CDN. Otherwise,Backbone will be inlined in the built file
and it will execute before the CDN-loaded jQuery will load. This is
because the shim config just delays loading of the files until
dependencies are loaded,but does not do any auto-wrapping of define.
After a build,the dependencies are already inlined,the shim config
cannot delay execution of the non-define()’d code until later.
define()’d modules do work with CDN loaded code after a build because
they properly wrap their source in define factory function that will
not execute until dependencies are loaded. So the lesson: shim config
is a stop-gap measure for for non-modular code,legacy code.
define()’d modules are better.

在理论上,使用CDN jQuery文件会导致1个HTTP请求(不能与使用r.js的其他JS文件合并),但具有潜在的好处,您的访问者可能已经从其他站点缓存CDN版本,已访问

然而,如果我从Google的信息中获得正确的信息,您仍然需要向r.js提供一个本地的jQuery副本,因为最终的JS文件仍然需要包含一个jQuery模块的副本,以确保依赖性的一致性.这将导致在本地和CDN上加载jQuery. (希望我有这个部分吗?)

那么哪种方式更好?

解决方法

您的requirejs doc报价特别关于使用具有jim的shim配置的脚本.如果所有脚本都是AMD模块,则从第三方CDN动态加载基础依赖关系是很好的.

缓存命中没有高的可能,你可能会认为(雅虎我相信对缓存vs非高速缓存状态的研究),现在意味着你现在必须依赖另一个域来加载.

好处可能取决于应用程序,分析会导致最佳答案.例如,如果它是一个具有大量图像的站点,那么jquery的策略就会减少,因为图像加载可能是更显着的perf问题.

我将首先将jQuery优化为内置文件,并使用AMD模块进行所有操作,因此,如果我想委托CDN,我可以.但是,如果使用requirejs和垫片配置,则基础依赖关系需要在内置文件中进行内联,因为已加载的库不会调用define() – 它们不等待依赖关系加载,他们希望它们立即可用.

猜你在找的jQuery相关文章