AMD_CMD_CommonJS

題目1: 為什么要使用模塊化?

模塊化可以使你的代碼低耦合,功能模塊直接不相互影響。模塊化主要有以下幾點(diǎn)好處:
1.可維護(hù)性:根據(jù)定義,每個(gè)模塊都是獨(dú)立的。良好設(shè)計(jì)的模塊會(huì)盡量與外部的代碼撇清關(guān)系,以便于獨(dú)立對(duì)其進(jìn)行改進(jìn)和維護(hù)。維護(hù)一個(gè)獨(dú)立的模塊比起一團(tuán)凌亂的代碼來(lái)說(shuō)要輕松很多。
2.命名空間:在JavaScript中,最高級(jí)別的函數(shù)外定義的變量都是全局變量(這意味著所有人都可以訪問(wèn)到它們)。也正因如此,當(dāng)一些無(wú)關(guān)的代碼碰巧使用到同名變量的時(shí)候,我們就會(huì)遇到“命名空間污染”的問(wèn)題。
這樣的問(wèn)題在我們開(kāi)發(fā)過(guò)程中是要極力避免的。

3.可復(fù)用性:現(xiàn)實(shí)來(lái)講,在日常工作中我們經(jīng)常會(huì)復(fù)制自己之前寫(xiě)過(guò)的代碼到新項(xiàng)目中。
參考鏈接

題目2: CMD、AMD、CommonJS 規(guī)范分別指什么?有哪些應(yīng)用

  • CommonJS
    CommonJS規(guī)范是誕生比較早的。NodeJS就采用了CommonJS。是這樣加載模塊:
var clock = require('clock'); 
clock.start(); 

這種寫(xiě)法適合服務(wù)端,因?yàn)樵诜?wù)器讀取模塊都是在本地磁盤(pán),加載速度很快。但是如果在客戶端,加載模塊的時(shí)候有可能出現(xiàn)“假死”狀況。比如上面的例子中clock的調(diào)用必須等待clock.js請(qǐng)求成功,加載完畢。那么,能不能異步加載模塊呢?

  • AMD
    AMD,即 (Asynchronous Module Definition),這種規(guī)范是異步的加載模塊,requireJs應(yīng)用了這一規(guī)范。先定義所有依賴,然后在加載完成后的回調(diào)函數(shù)中執(zhí)行:
require([module], callback); 

用AMD寫(xiě)上一個(gè)模塊:

require(['clock'],function(clock){
    clock.start(); 
}); 

AMD雖然實(shí)現(xiàn)了異步加載,但是開(kāi)始就把所有依賴寫(xiě)出來(lái)是不符合書(shū)寫(xiě)的邏輯順序的,能不能像commonJS那樣用的時(shí)候再require,而且還支持異步加載后再執(zhí)行呢?

  • CMD
    CMD (Common Module Definition), 是seajs推崇的規(guī)范,CMD則是依賴就近,用的時(shí)候再require。它寫(xiě)起來(lái)是這樣的:
define(function(require, exports, module) { 
    var clock = require('clock'); 
    clock.start(); 
});

AMD和CMD最大的區(qū)別是對(duì)依賴模塊的執(zhí)行時(shí)機(jī)處理不同,而不是加載的時(shí)機(jī)或者方式不同,二者皆為異步加載模塊。 AMD依賴前置,js可以方便知道依賴模塊是誰(shuí),立即加載;
而CMD就近依賴,需要使用把模塊變?yōu)樽址馕鲆槐椴胖酪蕾嚵四切┠K,這也是很多人詬病CMD的一點(diǎn),犧牲性能來(lái)帶來(lái)開(kāi)發(fā)的便利性,實(shí)際上解析模塊用的時(shí)間短到可以忽略。
AMD應(yīng)用:RequireJS、curl、Dojo
CMD應(yīng)用:SeaJS
CommonJS應(yīng)用:NodeJs
原文鏈接
其他文章

題目3: 使用 requirejs 完善入門(mén)任務(wù)15,包括如下功能:

  1. 首屏大圖為全屏輪播
  2. 有回到頂部功能
  3. 圖片區(qū)使用瀑布流布局(圖片高度不一),下部有加載更多按鈕,點(diǎn)擊加載更多會(huì)加載更多數(shù)據(jù)(數(shù)據(jù)在后端 mock)
    效果
    代碼
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容