2016-12-07 2 views
0

Ich möchte zu einem modularen Ansatz auf eine Neufassung eines größeren js-Projekts zu bewegen. Und ich hoffe, require.js zu verwenden, um dies zu verwalten.Umgang mit globalen Variablen in modularen js

Allerdings habe ich einige Schwierigkeiten zu verstehen, wie ich recode um globale Variablen zu beseitigen.

Also, wo zum Beispiel, ich hatte vorher

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

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

und neu geschrieben für require.js

define(function(){ 

    return { 

    somefunction: function() { 

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


     }; 

     }; 

    }); 

Wie würde ich dieses umschreiben global zu lokalisieren und es wirklich modular zu machen.

+0

Ist 'global' gemeint, nur * von diesem Modul benutzt zu werden? –

Antwort

0

global Angenommen wird, soll nur von diesem Modul verwendet werden, definieren Sie es innerhalb des define Rückruf:

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

    return { 

    somefunction: function() { 

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


     }; 

     }; 

    }); 

Wenn Sie global wollen von anderen Modulen verwendet werden, können Sie es setzen würde in ein eigenes Modul und haben Module require es. Ich denke, mit dieser Art von Modul bedeutet das, dass Sie es zu einer Objekteigenschaft machen müssen (mit ES2015-Modulen müssen Sie nicht).

+0

Danke. Ich vermutete so viel. Und so müsste jedes Modul, das global verwendet, es benötigen? – user3617712

+0

@ user3617712: Yup, das ist die Idee. Machen Sie Globals effektiv obsolet. –