可以在没有文件的情况下在两个函数之间共享全局变量吗?
Possible to share global variable between two functions without a file?
使用下面的代码,我得到
{ test1: 'aaa', test2: 'bbb' }
这就是我想要的。 IE。能够在 t2.js
和 t3.js
之间有一个全局变量。
在这个 PoC 中 t3()
只被调用一次,但在实际情况下,如果 t3()
的 ~100 个实例永远不会结束,因为它们在无限循环中收集数据。 t2.js
不需要修改 c
.
问题
是否可以相同,但没有第三个文件(在这种情况下为t1.js
)?
t1.js
module.exports = {};
t2.js
const express = require('express');
const app = express();
let c = require('./t1');
const t3 = require('./t3');
c.test1 = "aaa";
t3();
console.log(c);
app.get('/test.json', (req, res) => {
res.send(JSON.stringify(c, null, 2));
});
app.listen(1900, () => {});
t3.js
let c = require('./t1');
module.exports = () => {
c.test2 = "bbb";
};
看起来很简单,可以在入口点创建一个对象,然后传递它:
const express = require('express');
const app = express();
const t3 = require('./t3');
const records = {
test1: "aaa",
};
t3(records);
console.log(records);
app.get('/test.json', (req, res) => {
res.send(JSON.stringify(records, null, 2));
});
app.listen(1900, () => {});
module.exports = (records) => {
records.test2 = "bbb";
};
请注意,无论是在这段代码中还是在您的原始代码中,都没有使用全局变量(我想 require
除外)。
使用下面的代码,我得到
{ test1: 'aaa', test2: 'bbb' }
这就是我想要的。 IE。能够在 t2.js
和 t3.js
之间有一个全局变量。
在这个 PoC 中 t3()
只被调用一次,但在实际情况下,如果 t3()
的 ~100 个实例永远不会结束,因为它们在无限循环中收集数据。 t2.js
不需要修改 c
.
问题
是否可以相同,但没有第三个文件(在这种情况下为t1.js
)?
t1.js
module.exports = {};
t2.js
const express = require('express');
const app = express();
let c = require('./t1');
const t3 = require('./t3');
c.test1 = "aaa";
t3();
console.log(c);
app.get('/test.json', (req, res) => {
res.send(JSON.stringify(c, null, 2));
});
app.listen(1900, () => {});
t3.js
let c = require('./t1');
module.exports = () => {
c.test2 = "bbb";
};
看起来很简单,可以在入口点创建一个对象,然后传递它:
const express = require('express');
const app = express();
const t3 = require('./t3');
const records = {
test1: "aaa",
};
t3(records);
console.log(records);
app.get('/test.json', (req, res) => {
res.send(JSON.stringify(records, null, 2));
});
app.listen(1900, () => {});
module.exports = (records) => {
records.test2 = "bbb";
};
请注意,无论是在这段代码中还是在您的原始代码中,都没有使用全局变量(我想 require
除外)。