Saltar al contenido

Compartir y modificar una variable entre varios archivos node.js

Solución:

Tu problema es que cuando lo haces var count = require('./main.js').count;, obtiene una copia de ese número, no una referencia. Cambiando count no cambia la “fuente”.

Sin embargo, debería tener las funciones de exportación de archivos. Requerir un archivo solo lo ejecutará la primera vez, pero después de eso se almacena en caché y no se vuelve a ejecutar. ver documentos

Sugerencia n. ° 1:

// main.js
var count = 1;
var add = require('./add.js');
count = add(count);

// add.js
module.exports = function add(count) {
    return count+10;
}

# 2:

var count = 1;
var add = function() {
    count += 10;
}
add();

# 3: Personalmente, crearía un módulo de contador (esta es una instancia única, pero puede convertirla fácilmente en una “clase”):

// main.js
var counter = require('./counter.js');
counter.add();
console.log(counter.count);

// counter.js
var Counter = module.exports = {
    count: 1,
    add: function() {
        Counter.count += 10;
    },
    remove: function() {
        Counter.count += 10;
    }
}

No estoy seguro de si esto es nuevo o no, pero de hecho puede compartir variables entre archivos como tales:

main.js

exports.main = {
    facebook: null
};

counter.js

var jamie = require('./main'); 
console.info(jamie); //{facebook: null}
jamie.main.facebook = false;
console.info(jamie); //{facebook: false}

anothercheck.js

var jamie = require('./main'); 
console.info(jamie); //{facebook: null} //values aren't updated when importing from the same file.
jamie.main.facebook = true;
console.info(jamie); //{facebook: true}

Ahora puedes compartir archivos entre archivos.

Tengo el mismo problema que tú, .. A veces me gustaría compartir variables entre varios archivos porque me encanta el estilo modular, por ejemplo. separando controlador, función, modelos en diferentes carpetas / archivos en mi script node.js para poder administrar fácilmente el código.

No sé si esta es la mejor solución, pero espero que se adapte a sus necesidades.

modelos / data.js

// exports empty array
module.exports = [];

controladores / somecontroller.js

var myVar = require('../models/data');
myVar.push({name: 'Alex', age: 20});
console.log(myVar);
//  [{ name: 'Alex', age: 20 }]

controladores / anotherController.js

var myVar = require('../models/data');

console.log(myVar);
// This array has value set from somecontroller.js before...
//  [{ name: 'Alex', age: 20 }]

// Put new value to array
myVar.push({name: 'John', age: 17});
console.log(myVar);
// Value will be added to an array
//  [{ name: 'Alex', age: 20 }, { name: 'John', age: 17}]
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *