我知道你们在想什么,can't he just use all 3?是的,我可以,但我的问题是:他们不会互相取消吗?
TL;博士
长版
例如,我们捆绑文件以减少HTTP请求。而使用RequireJS,以便可以动态和异步地加载文件,因为它们是必需的。
因此,如果我们将所有JS文件捆绑到1中,甚至需要RequireJS吗?
此外,我们使用CDN,因此浏览器可以访问缓存版本,因此如果用户访问5个网站,所有网站都使用流行的jQuery CDN - 即http://cdn.com/jquery.min.js - 浏览器实际上不需要HTTP在最近4个站点上请求此文件,这比捆绑的文件快得多。如果这些网站每个都从CDN访问一个独特的捆绑文件 - 特定于他们的需求 - 缓存“命中”的几率变得低得多。而且,由于“点击”的几率较低,即使使用该网站的人也不太可能缓存该文件。
因此捆绑文件甚至可以在CDN上帮助它真的有用吗?
答案 0 :(得分:2)
尽管使用了RequireJS,因此可以根据需要动态和异步地加载文件。
许多开发人员使用RequireJS以一种干净的方式来分离关注点,而无需动态加载模块。我有一些使用RequireJS开发的应用程序和库。其中之一是一个根本不使用动态加载功能的库,并且不会从使用它们中受益。在这个库的几乎所有用例场景中,它应该作为单个包加载,而不是作为模块的集合一个一个地加载。
这让我想到另一件事:决定 捆绑或 RequireJS。您可以使用r.js
(RequireJS'优化器)将RequireJS模块捆绑到单个文件中进行生产。如果您愿意,这可能包括第三方模块。或者你可以把它们留在CDN服务。应用程序可以针对单个捆绑包或一系列捆绑包进行优化。与任何其他优化问题一样,应该做什么取决于所考虑的特定应用程序的体系结构。
你的其余问题完全基于意见。我已经看到统计数据支持的详细论据,你应该使用CDN,你不应该使用CDN,以及介于两者之间的所有内容。这是一个优化问题,再次取决于所考虑的应用程序的具体情况。
答案 1 :(得分:0)
因此,如果我们将所有JS文件捆绑为1,甚至需要RequireJS吗?
不是全部。您可能对almond感兴趣。
RequireJS的替代AMD加载程序。它提供了最小的AMD API占用空间,包括加载程序插件支持。仅对构建/捆绑的AMD模块有用,不进行动态加载。