node js передача переменных в модули
Есть основной модуль main.js и есть еще один main2.js. Так вот, в main.js к примеру код
var test = 5,
main2 = require('./main2.js');
так вот, как в модуль main2.js грамотно передать содержимое переменной test ? Сейчас делаю так main.js:
var test = 5,
main2 = require('./main2.js')(test);
main2.js:
var test;
var func = function (tests) {
test = tests;
}
module.exports = func;
Да, данный метод вроде и работает, но он жутко не удобен. Посоветуйте, как правильно передать переменную в модуль? |
Цитата:
|
Roman159,
Либо я тебя не понял, либо ты не совсем понимаешь о чем ты говоришь:) Тебе не надо ничего никуда передавать. У тебя main2 инициируется в main, соответственно, твоя глобальная переменная и так будет доступна для кода, загруженного из main2, только объявляй ее без var в main. Но напрямую пользоваться глобальными переменными из других модулей -- это вобще-то не очень хорошая идея. Модуль он на то и модуль, чтобы быть независимым от чужих/других неймспейсов. Лучше делай вот так: main1:
var main1={
init: function(o){for(var i in o) {if(!o.hasOwnProperty(i)) return; this[i]=o[i]}},
f: function(val){console.log(val+this.x)}
}
module.exports=main1
main:
x=1
main1=require("./main1")
main1.init({x: x})
main1.f(2) // --> 3
|
Объявление без var/let в современном стандарте JS запрещено, потому что он по дизайну строго явный и в нем активно используются замыкания. Если хочется объявить что-то глобальное, то надо писать явно global.greeting = "Hello World", но... Глобал для личных целей в ноде не используется никогда, потому что это модульная платформа. Нет, бывают очень специфические случаи, вроде трансляции из другого языка, когда без него просто не обойтись, но к тебе это явно не относится.
Да, theKingOfJava, это я нубу, а не тебе, можешь не отвечать. |
| Часовой пояс GMT +3, время: 12:20. |