如何从不同的文件访问所需的模块?

时间:2017-01-26 15:53:55

标签: javascript node.js socket.io

在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);

1 个答案:

答案 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
};