2016-12-07 4 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: Да, это идея. Сделать глобалы эффективными устаревшими. –