Test Foro de elhacker.net SMF 2.1

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 (javascript) [Seleccionar]
var variableImportante = {...};

var b = require('b.js');
b.funct(23);


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



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
Cita de: 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.

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
Cita de: 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.

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:

class VariableImp {
constructor() {
this.variableImportante  = { };
}
}

export default VariableImp;

y en b.js
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 */}
}