2015-03-19 55 views
3

最近,我可以看到所有的jQuery插件都從下面的行開始。這是jQuery的AMD語法嗎?

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中。

回答

4

你是非常正確的。

如果我們需要實現AMD,那麼我們傾向於使用Require.js,但是如果我們想在不使用Require.js的情況下實現同樣的效果呢?然後,我們將採用您提到的語法。將其稱作UMD : Universal Module Definition

從來源:

jqueryPlugin.js - 定義了一個jQuery插件,與AMD和瀏覽器的全局工作。

jqueryPluginCommonjs.js - 定義一個jQuery插件,可以與AMD和瀏覽器全局工作,也可以在CommonJS環境中工作。如果您在CommonJS 環境中運行 jQuery(或者jquip或jquery-untouched項目),則可以使用此版本,該環境可以正確加載jQuery。