JavaScript模塊化開發整理


在網上已經有很多關於模塊化開發的文章了,這里還是按照自己的理解來整理一下。

隨着項目文件的越來越大和需求的越來越貼近現實(我發現現在客戶不如:一個領導說我要審批你們報上來的資料,系統發布以后用的還不錯,可能是有那個新鮮感,等領導煩了說:每個文件我都這么操作太累了,能不能一次報,到最后說能不能自動判斷對不對……),以后的需求估計要讓做個人工智能出來……借着上面繼續,需求的內容越來越復雜,一個人開發時間長,多個人開發這樣那樣的問題一堆等等這時候Javascript模塊化開發誕生了。

先說說發展歷程

剛開始是這樣寫代碼的:

function func1() { }
function func2() { }

后來經過變形是這樣的:

var obj = {
    func1: function () {
    },
    func2: function () {
    }
}    

最后經過總價實踐后是這樣的:

(function () { })();

 

閉包:至於這種方式防止全局變量的污染,有效的提高了開發的思路和開發的效率。

 

這里重點說下我設想的思路:

上面的項目文件列表是這樣的;index主頁上面有不同的標簽,每個標簽下面有不同的功能(很復雜的)。Index的代碼如下

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>JavaScript模塊化編程</title>
    <script src="../jquery.js"></script>
    <script src="Js/main.js"></script>
    <script src="Js/a.js"></script>
    <script src="Js/b.js"></script>
    <script src="Js/c.js"></script>
</head>
<body>
</body>
</html>

mian處理公用的業務邏輯,a,b,c不同的功能塊

main.js的代碼如下:

$(function () {
    var sum = myModule.addMethod(1),
        sub = myModule.subMethod(1, 3),
        mod = myModule.modMethod(1, 3);
    myModule.alert = function () {
        alert($().jquery);
    };
});

a.js的代碼如下:

(function (my) {
    var x = 8;
    my.addMethod = function () {
        return arguments[0] + x;
    }
})(window.myModule = window.myModule || {});

b和c的代碼就不帖了和a的雷同;

為什么這么寫呢?假如說寫成下面的樣子行嗎?

(function (my) {
    my.modMethod = function () {
        return arguments[0] / arguments[1];
    };
    //比如執行完異步后執行
    my.callBack = function () {
        if (typeof arguments[0] == "function") {
            arguments[0]();
        }
    }
})(window.myModule || {});

如果寫成了以上的這種,在index頁面上引入js的順序變化有可能window.myModule就是undefined.

a,b,c都是一個頁面上不用的業務邏輯處理,當然相互可以關聯,導入。

這樣就有效的阻止了全局變量的污染, 可以找不同的開發者開發同一個模塊。

那這樣暴漏出另一個問題就是index頁面上引入的js過於過,而且會影響加載速度,在訪問index的時候也許只用到a腳本,點擊某個按鈕才用到b腳本。這就引入下個話題:"require.js"


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM