这是 jQuery AMD 语法吗?

Is this jQuery AMD syntax?

最近,我可以看到所有 jQuery 插件都以下面一行开头。

function (factory) {
    if (typeof define === 'function' && define.amd) {
        // AMD
        define(['jquery'], factory);
    } else if (typeof exports === 'object') {
        // CommonJS
        module.exports = factory;
    } else {
        // Browser globals
        factory(jQuery);
    }
}(function ($) {}));

我认为它和Require.js是一个类似的概念,但我不是很确定。谁能告诉我这叫什么或它是如何工作的?这样我就可以了解更多。

PS:请随时修改问题的标题,或者如果我们已经在 SO 中将其标记为重复。

你说得很对。

如果我们需要达到AMD那么我们倾向于Require.js,但是如果我们想要达到同样的效果而不是Require.js怎么办?然后我们将使用您提到的语法。这被称为 UMD : Universal Module Definition

来源:

jqueryPlugin.js - Defines a jQuery plugin that works with AMD and browser globals.

jqueryPluginCommonjs.js - Defines a jQuery plugin that works with AMD and browser globals, but also in a CommonJS environment. Use this version if you are running jQuery (or the jquip or jquery-untouched projects) in a CommonJS environment that can load jQuery appropriately.