相信大家在合作開發的時候會遇到乙個問題,就是設定引數的侷限性。比如說成員1用了var a,而忘了說,成員2頁用了var a。這時如果是區域性變數還好說,會被釋放,但是如果是全域性變數的話就會導致全域性變數被影響。
合作開發容易發生衝突『。
那麼有的人就想利用塊級作用域來解決問題,但是這樣子就又共用不了模組。
又有的人會想,用命名空間來解決辦法,雖然能決絕問題,但是難免某些人記錯導致小機率會產生衝突。
這些問題對於企業來說問題是極其嚴重的!
這時,腦子靈光的人都會想到,用塊級作用域以及命名空間互相結合來解決問題。
因此就誕生了模組化開發!比如說requirejs,seajs,commonjs...
就拿seajs來說吧
seajs的使用
。定義模組
define(function( require, exports, module )
//通過exports把name方法 提供給外部使用
exports.name = name;
});
。引用模組
seajs.use('模組的路徑', function(ex){});
這樣就可以做到在內部建立的變數名字不會影響到全域性變數,又可以通過呼叫的方式引入。
我們通過乙個例子來說明。
實現拖放div、改變div的大小、限定拖放範圍。
html檔案:
然後是控制id為box3的div拖動方法檔案:
/***********box3***************/
define(function (require, exports, module) ;
document.onmouseup = function (ev) ;
return false;}}
exports.drag = drag;
});
控制id為box1以及id為box2的div拖動縮放效果檔案:
/*********box1&box2*************/
define(function (require, exports, module) ;
document.onmouseup = function () ;
return false;}}
exports.scale = scale;
});
限定拖放範圍的公用模組檔案:
/***************公用模組*****************/
define(function (require, exports, module) else if (p >max)
return p
}exports.border = border;
});
最後我們把分開的模組整合到一起:
/***************整合檔案*********************/
define(function (require, exports, module)
});
通過以上例子我們可以發現,在過程中能夠存在著一些相同變數定義名稱,但是最後實現效果卻互不影響。著就是模組化的魅力之處。
模組化開發
講模組化開發之前,我們先了解一下 傳統開發模式 是什麼?比如說a所在的公司在做乙個專案,公司安排a跟b還有c三個人一起協同開發,a負責一部分功能塊,b負責另一部分功能塊,把專案的功能分成一塊一塊,這適用於多人協作開發,每個人負責不同的功能塊,當然,這其中有人是負責整合的,有人是負責開發公共功能塊的等...
模組化開發
commonjs規範 同步模式載入模組,導致效率低 node.js環境 乙個檔案就是乙個模組 每個模組都有單獨地作用域 通過module.exports匯出成員 通過require函式載入模組 amd asynchronous module definition 規範 使用相對複雜 模組js檔案請求...
模組化開發
寫在前面 面試時常被問到,你知道什麼是模組化開發嗎?模組化開發能帶來什麼好處?下面的內容可以幫助你簡單了解什麼是模組化開發,從對它模糊的印象中看到一些清晰的輪廓,幫助你了解模組化開發的現狀,以對選擇哪種模組化開發有個選擇的方向。目錄 什麼是模組化開發 模組化開發的意義 模組化開發的好處 1 避免變數...