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

时间:2017-02-17 08:53:59

标签: requirejs

任何人都可以解释详细信息,为什么在require.js文件中设置了以下代码:

define.amd = {
    jQuery: true
};

参考链接:Default set to jquery as true

1 个答案:

答案 0 :(得分:1)

define.amd设置为某个值是为了帮助区分AMD加载程序提供的define函数与其他东西提供的任何旧define。应该处理多个加载方案的代码的典型模式是:

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

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

名称define非常通用。如果不是amd属性,有时很难确定存在的define是否真的是我们关心的那个。

将其设置为{ jQuery: true }是一个历史工件。有一个pull request to jQuery可以解释它。该请求的作者是RequireJS的作者。简而言之,那里的目标是表明AMD加载器能够处理多个版本的jQuery调用define的情况。只有当define真实时,jQuery才会调用define.amd.jQuery。它可能在过去的几个版本的jQuery中使用过,但较新的版本不再使用此标志,因此它仍然主要用于支持较旧的jQuery版本。