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:37. |