NodeJS – 从其他文件中导入函数并像以前一样使用它?

比方说,我有一个名为server.js的文件:

 //server.js var net = require('net'); var server = net.createServer(function (socket){ socket.on('data',function(data){ console.log("Received: "+data); }); }); 

另一个文件叫做functions.js

 //functions.js module.exports = { test: function () { // do something }, other: function () { // do something } }; 

我知道我可以做这样的事情:

 var functions = require('./functions'); functions.test(); 

但我真的想直接使用这个function,就像这样:

 require('./functions'); test(); 

有什么build议么?

虽然你可以将它们加载到globalvariables中,但是另一种可能的,也许更健全的方法是将该方法分配给variablestest

 var test = require('./functions').test; var functions = require('./functions'); var test2 = functions.test; 

* =我认为是理智的,因为触及全局范围可能会有一些意想不到的结果,减less了一般的可读性(嘿,这个testvariables是从哪里来的?我没有看到它在代码中的任何地方定义过)在这种情况下,您可能会遇到名称冲突,甚至覆盖global范围内的所需内容。 并不是说将一些东西加载到全局范围中并不是一个好主意,甚至是彻头彻尾的有用的东西,但是通常情况下,最好将东西放在本地以保持可读性。

一篇关于在浏览器中触及全局范围的文章 。

那么,你可以把这些函数放到globalvariables中,这样它们就可以从你的代码中的任何地方访问,但是这通常不鼓励用户使用它,正如你已经在你的代码示例中所描述的那样。

如果你坚持把variables放在全局范围内,你可以这样做:

 // function.js global.test = function test () {/* ... */} // ... // Somewhere else... require('./functions') test() 

为了至less部分地改善这一点,你可以实现它,使得function.js文件真正地只导出当前的函数,并且单个函数只被需求模块分配给global范围。 这样,你至less可以正确地testingfunction。

更新:你没有说你是否希望函数在整个应用程序中可用,或者只在当前的作用域中(如果你require ) – 如果你只需要它们在当前作用域中,那么倾向于避开globalvariables,而是将函数分配给variables:

 var functions = require('./functions') , test = functions.test , other = functions.other // Use as necessary test() 

尝试这个:

 require('./functions')(); test();