RequireJS的代码中“define.amd = {jQuery: true }”的目的是什么?

CSK*_*SKR 1 requirejs

谁能详细解释一下,为什么在require.js文件中设置了以下代码:

define.amd = {
    jQuery: true
};
Run Code Online (Sandbox Code Playgroud)

参考链接:默认设置为 jquery 为 true

Lou*_*uis 6

设置define.amd为某个值是为了帮助区分defineAMD 加载器define提供的功能和其他东西提供的任何旧功能。应该处理多个加载场景的代码的典型模式是这样的:

if (typeof define === 'function' && define.amd) {
    define(['exports'], factory(exports));
} else if (typeof module === 'object' && module.exports) {
    factory(module.exports);
} else {
    factory(exports);
}
Run Code Online (Sandbox Code Playgroud)

第一行检查您是否有可用的 AMD 加载器,如果存在,将使用 AMD 加载器。如果一个define函数存在但它没有amd设置属性,那么它是一些随机的外来的define

这个名字define很一般。如果不是因为amd财产,有时很难确定define存在的财产是否真的是我们关心的财产。


将其设置{ jQuery: true }为历史文物。有一个对 jQuery拉取请求解释了它。请求的作者是RequireJS的作者。简而言之,目标是表明 AMD 加载器能够处理多个版本的 jQuery 调用define. jQuerydefine只会define.amd.jQuery在 true 时调用。它可能在过去的几个版本的 jQuery 中使用过,但较新的版本不再使用这个标志,所以它仍然主要用于支持旧的 jQuery 版本。