在Node.js中我正在使用我的main.js中的Socker.io
const io = require('socket.io')(http);
我也使用像api.js这样的“sub”文件,我想用它来取消一些我的业务逻辑远离主要的。所以我也导入了这个像
const api = require('./api.js');
在我的api.js中,我现在如何使用socket.io框架?我可以从不同的文件中访问上面的实例吗?或者我必须像这样传递“io”对象:api.myFoo(io);
答案 0 :(得分:1)
您说require('module')
的每个地方都会获得该模块的相同实例。
但是,当你想要共享一个函数的返回值时,你必须明确地导出它:
const io = require('socket.io')(http);
module.exports = io;
在某些模块中,并通过以下方式在另一个模块中要求:
const io = require('./your-module');
其他选项是将其作为参数传递给其他模块,如:
const io = require('socket.io')(http);
const api = require('./api.js')(io);
但在这种情况下,您的api.js
必须导出一个以io
为参数的函数:
module.exports = (io) => {
return ... // return whatever was exported before
};