Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 03.04.2015, 00:51
Новичок на форуме
Отправить личное сообщение для Roman159 Посмотреть профиль Найти все сообщения от Roman159
 
Регистрация: 29.03.2015
Сообщений: 2

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;


Да, данный метод вроде и работает, но он жутко не удобен. Посоветуйте, как правильно передать переменную в модуль?
Ответить с цитированием
  #2 (permalink)  
Старый 10.04.2015, 18:35
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Цитата:
Посоветуйте, как правильно передать переменную в модуль?
Так не делается. Если переменная нужна в нескольких местах - выноси в отдельный модуль.
Ответить с цитированием
  #3 (permalink)  
Старый 10.04.2015, 20:09
Кандидат Javascript-наук
Посмотреть профиль Найти все сообщения от theKingOfJava
 
Регистрация: 31.03.2015
Сообщений: 113

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

Последний раз редактировалось theKingOfJava, 10.04.2015 в 20:44.
Ответить с цитированием
  #4 (permalink)  
Старый 11.04.2015, 07:23
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Объявление без var/let в современном стандарте JS запрещено, потому что он по дизайну строго явный и в нем активно используются замыкания. Если хочется объявить что-то глобальное, то надо писать явно global.greeting = "Hello World", но... Глобал для личных целей в ноде не используется никогда, потому что это модульная платформа. Нет, бывают очень специфические случаи, вроде трансляции из другого языка, когда без него просто не обойтись, но к тебе это явно не относится.
Да, theKingOfJava, это я нубу, а не тебе, можешь не отвечать.

Последний раз редактировалось Erolast, 11.04.2015 в 07:28.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
передача переменных Лесной_Белк Общие вопросы Javascript 11 09.08.2018 16:06
Передача переменных между функциями imhateb Общие вопросы Javascript 2 16.09.2013 21:48
Передача переменной с JS в PHP и обратно kamushek Общие вопросы Javascript 2 22.08.2010 16:12
Передача данных с формы на JS mrDeko Общие вопросы Javascript 8 21.08.2010 12:19
Передача массива JS в cookies Denis Общие вопросы Javascript 1 04.08.2009 12:24