编辑澄清:
在性能方面(尽管我知道这仍然是一个疯狂的术语),哪个更好 - 通过 RequireJS 加载本地版本或 jQuery 的 CDN 版本?
作为记录,RequireJS 在线文档包含一些似乎不鼓励使用 CDN 的段落,尽管我不确定 100% 是什么意思:
不要在构建中混合 CDN 加载和 shim 配置。示例场景:您从 CDN 加载 jQuery,但使用 shim 配置加载依赖于 jQuery 的 Backbone 的库存版本。进行构建时,请确保在构建文件中内联 jQuery,并且不要从 CDN 加载它。否则,Backbone 将内联在构建的文件中,并在加载 CDN 的 jQuery 加载之前执行。这是因为 shim 配置只是延迟加载文件,直到加载依赖项,但不执行任何自动包装定义。构建后,依赖项已经内联,shim 配置不能延迟执行未定义()的代码,直到以后。定义()' d 模块在构建后确实与 CDN 加载的代码一起工作,因为它们正确地将其源代码包装在定义工厂函数中,该函数在加载依赖项之前不会执行。所以教训:shim config 是非模块化代码、遗留代码的权宜之计。定义()的模块更好。
从理论上讲,使用 CDN jQuery 文件会导致多出 1 个 HTTP 请求(不能使用 r.js 与其他 JS 文件合并),但潜在的好处是您的访问者可能已经从他们的其他站点缓存了 CDN 版本去过。
但是,如果我从谷歌搜索的信息中得到它,您仍然需要为 r.js 提供本地 jQuery 副本,因为生成的缩小 JS 文件仍需要包含 jQuery 模块的副本以确保依赖关系的一致性。这将导致通过本地和 CDN 加载 jQuery。(希望我得到了正确的部分?)
那么,哪种方式更好呢?