这是 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.
最近,我可以看到所有 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.