我的理解是這樣的:
首先衅金,JavaScript是一個(gè)強(qiáng)大的腳本(函數(shù)式+面向?qū)ο螅┱Z言,它有很多快速高效的解釋器簿煌,然而氮唯,它并沒有一個(gè)用于更廣泛應(yīng)用程序的標(biāo)準(zhǔn)庫。
CommonJS是個(gè)規(guī)范姨伟,這個(gè)規(guī)范中定義了許多API惩琉,用于普通應(yīng)用程序(主要指非瀏覽器的應(yīng)用)使用的API,從而填補(bǔ)了這個(gè)空白夺荒。它的終極目標(biāo)是提供一個(gè)類似Python瞒渠,Ruby和Java標(biāo)準(zhǔn)庫。這樣的話技扼,開發(fā)者可以使用CommonJS API編寫應(yīng)用程序伍玖,然后這些應(yīng)用可以運(yùn)行在不同的JavaScript解釋器和不同的主機(jī)環(huán)境中。
NodeJS就是CommonJS這個(gè)規(guī)范的實(shí)現(xiàn)者淮摔。
CommonJS其中就有一個(gè)Modules規(guī)范私沮,這個(gè)Modules規(guī)范設(shè)計(jì)之初是為了server端設(shè)計(jì)的,它是一個(gè)同步的模式和橙,這種模式并不適合瀏覽器端仔燕,所以AMD規(guī)范誕生了,它最大的特點(diǎn)就是可以異步的方式加載模塊魔招。
RequrieJS其實(shí)就是AMD現(xiàn)在用的最廣泛晰搀,最流行的實(shí)現(xiàn),其中办斑,Require.js主要提供define和require兩個(gè)方法來進(jìn)行模塊化編程外恕,前者用來定義模塊,后者用來調(diào)用模塊乡翅。