任何人都可以解释详细信息,为什么在require.js
文件中设置了以下代码:
define.amd = {
jQuery: true
};
答案 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版本。