前端模塊化

前端中有幾個需要深入理解的重要知識點,比如語義化,模塊化,作用域,原型鏈,繼承和麪向對象等問題,今天我們先來整理下前端模塊化問題。模塊化是爲了將實現特定功能的代碼文件封裝在一起,有了模塊可以更方便地使用別人的代碼,需要什麼功能,加載什麼模塊。模塊開發需要遵循一定的規範不然會亂套。

1. 函數封裝:

function setAttribute( name, value){ }

函數封裝,將程序中設計的變量,語句進行封裝,來執行某爾特定功能,比如說上面這個函數,就是完成給屬性賦值的功能,在需要使用這個功能時,就調用該函數即可。

  缺點:污染了全局變量,可能會與其他模塊發生命名衝突,且模塊成員之間沒什麼聯繫。


2. 對象

  var myModule={
                var1 :1;
                var2: 2;
                function fn1(){}
                function fn2(){}
}
在javascript中沒有類,但是也有和類具有相似功能的,那就是對象,這樣在引用的時候,myModule.fn2(); 這樣避免了變量污染,只要保證模塊名唯一即可,同時同一模塊內也有了關係。但是也有缺陷,外部可以隨意修改內部成員,這樣會產生安全問題:
 myModule.var1= 100;

3. 立即執行函數
可以通過立即執行函數,來達到隱藏細節的目的
var myModule = (function(){
var var1 = 1;
var var2 = 2;
function fn1(){}
function fn2(){}
return {fn1: fn1,fn2: fn2};})();
這樣模塊外部就無法修改沒有暴露的內部數據、函數
上述做法就是模塊化的基礎,目前,通行的JavaScript模塊規範主要有兩種:CommonJSAMD
立即執行函數:
    function fn(){}();  //這樣書寫不行,因爲function fn(){}部分是一個聲明,需要有解析器比如eval()來執行,所以後面的()不會執行
只要把聲明變成表達式即可。常見的有用括號括起來:
    (function fn(){})();  //等價於下面的
    var foo=function fn(){};
    foo();

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章