2016-12-07 55 views
0

我想轉向模塊化方法來重寫大型js項目。我希望使用require.js來管理這個。處理模塊化js中的全局變量

但是,我在理解如何重新編碼以消除全局變量方面存在一些困難。

那麼,,比如,我以前有

var global = 1; //define global 
somefunction(); //call function that uses global 

function somefunction(){ 
    var local = global * 2; //use global 
    console.log("local = " local); //output 
    }; 

和重寫require.js

define(function(){ 

    return { 

    somefunction: function() { 

     var local = global * 2; //still using global 
     console.log("local = " local); //output 


     }; 

     }; 

    }); 

我將如何改寫這個本地化全球,使之真正模塊化。

+0

「全局」是否意味着*僅由該模塊使用*? –

回答

0

假設global旨在通過該模塊只使用,你define回調中定義它:

define(function(){ 
    var global = 1; // <============= 

    return { 

    somefunction: function() { 

     var local = global * 2; 
     console.log("local = " local); //output 


     }; 

     }; 

    }); 

如果你想global被其他模塊使用,你把它放在它自己的模塊,並有模塊require它。我認爲使用這種模塊的風格意味着你必須使它成爲一個對象屬性(使用ES2015模塊,你不必)。

+0

謝謝。我猜到了。那麼每個使用全局的模塊都必須要求它? – user3617712

+0

@ user3617712:是的,這是主意。使全局變得有效過時。 –