Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: patilanz en 24 Noviembre 2017, 02:21 am



Título: [SOLUCIONADO] Ayuda: Node.js ambito de variables
Publicado por: patilanz en 24 Noviembre 2017, 02:21 am
Si tengo un archivo a.js:

Código
  1. var variableImportante = {...};
  2.  
  3. var b = require('b.js');
  4. b.funct(23);
  5.  

y otro b.js
Código
  1. module.exports = {
  2.    funct: (arg) => {//como acceder a variableImportante desde aqui sin pasarla como argumento a la funcion funct}
  3. }


Un saludo


Título: Re: Ayuda: Node.js ambito de variables
Publicado por: ivancea96 en 24 Noviembre 2017, 17:05 pm
El modulo "b.js" no debería depender de una variable de otro archivo salvo que lo importe.

La mejor opción, es pasar el valor a mano. Puedes exportar en "b.js" una función "setVar()", y llamarla desde "a.js". Solo la llamarías una vez, es la ventaja, no tendrías que pasársela a cada función.


Título: Re: Ayuda: Node.js ambito de variables
Publicado por: patilanz en 25 Noviembre 2017, 14:37 pm
El modulo "b.js" no debería depender de una variable de otro archivo salvo que lo importe.

La mejor opción, es pasar el valor a mano. Puedes exportar en "b.js" una función "setVar()", y llamarla desde "a.js". Solo la llamarías una vez, es la ventaja, no tendrías que pasársela a cada función.

Esto podria ser una solucion pero si son varias variables no me gustaria pasar todos como argumentos. Tambien se pueden poner todos en un objeto y pasarlo pero no es lo que busco.

Y si en variableImportante tengo un objeto que contiene datos de un objeto binario muy grande que no es conveniente copiar, como puedo pasarlo como puntero?


Título: Re: Ayuda: Node.js ambito de variables
Publicado por: ivancea96 en 25 Noviembre 2017, 21:10 pm
En javascript las variables no se copian. Tampoco se pasan por referencia. Es como pasar una referencia al objeto que contiene. Con lo cual, los objetos grandes no tendrán problema.

Y bueno. Lo de que un módulo de Node tenga acceso a una variable de otro código que va a importar ese módulo... Es casi una referencia circular, que es mejor evitar.


Título: Re: Ayuda: Node.js ambito de variables
Publicado por: patilanz en 25 Noviembre 2017, 21:29 pm
En javascript las variables no se copian. Tampoco se pasan por referencia. Es como pasar una referencia al objeto que contiene. Con lo cual, los objetos grandes no tendrán problema.

Y bueno. Lo de que un módulo de Node tenga acceso a una variable de otro código que va a importar ese módulo... Es casi una referencia circular, que es mejor evitar.

Lo haré con setVar gracias :D


Título: Re: [SOLUCIONADO] Ayuda: Node.js ambito de variables
Publicado por: Luis Leon B en 29 Noviembre 2017, 05:32 am
Puedes importar la variable de a.js en b.js como una clase, si es algo de lo que buscas:

Código:
class VariableImp { 
constructor() {
this.variableImportante  = { };
}
}

export default VariableImp;
y en b.js
Código:
a = require('./a.js');
variableImp = new a.VariableImp() // Si usas babel puedes hacer import a, {VariableImp} from './a.js';

module.exports = {
funct:(arg) => {variableImp.variableImportante /* is usas babel seria solo VariableImp */}
}