Tengo varios scripts que son casi iguales pero con diferentes parámetros en un objeto 'parámetros' establecido en el nivel superior. Cuando requiero () los scripts en el mismo archivo para ejecutarlos al mismo tiempo, el objeto 'parámetros' se sobrescribe y solo se usan los últimos 'parámetros' requeridos. ¿Cómo paro esto?
Archivo 1:
params = { name: "John", salary: "50" }Archivo 2:
params = { name: "Victoria", salary: "10" }Archivo 3:
params = { name: "Veka", salary: "80" }Archivo principal:
require(file1.js)(); require(file2.js)(); require(file3.js)(); // do thingsSé que podría cambiar el nombre de cada archivo, pero creo que me falta algo. Gracias de antemano.
¿Cuál es el comportamiento deseado? Parece que tiene una variable global y, naturalmente, no puede contener varios valores distintos a la vez. Si necesita tener acceso a los datos proporcionados por los tres archivos y necesita que sea una variable global (en lugar de, por ejemplo, convertir sus archivos en funciones que devuelven valor), entonces puede convertirlo en una matriz u objeto que el insertar archivos individuales en.
Archivo principal antes de requerir llamadas:
params = []Archivo 1 (lo mismo para otros archivos):
params.push({ name: "John", salary: 50 });Archivo principal:
params = {}Archivo 1:
params['file1'] = { name: "John", salary: 50 };Se desaconseja el uso de globales a menos que sea absolutamente necesario porque conducen a errores confusos y son difíciles de depurar. En su lugar, puedes hacer:
Archivo 1
function getData() { return { name: 'John', salary: 50 }; } module.exports = getData;Archivo principal:
const file1Data = require('./file1.js')();Debe comprender el cierre y el alcance variable en Javascript.
Aquí unos artículos interesantes.
Por lo tanto, debe encapsular esas variables en su propia función.
const yourFunctionFile1 = () => { const params = { name: "Veka", salary: "80" } // do whatever you want } module.exports = yourFunctionFile1Puede exportar el objeto params en cada archivo y luego solicitarlos en su archivo principal como variables:
Archivo 1:
module.exports.params = { name: "John", salary: "50" }Archivo 2:
module.exports.params = { name: "Victoria", salary: "10" }Archivo principal:
let params1 = require('./file1').params let params2 = require('./file2').params