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议么?
虽然你可以将它们加载到global
variables中,但是另一种可能的,也许更健全的方法是将该方法分配给variablestest
。
var test = require('./functions').test; var functions = require('./functions'); var test2 = functions.test;
* =我认为是理智的,因为触及全局范围可能会有一些意想不到的结果,减less了一般的可读性(嘿,这个test
variables是从哪里来的?我没有看到它在代码中的任何地方定义过)在这种情况下,您可能会遇到名称冲突,甚至覆盖global
范围内的所需内容。 并不是说将一些东西加载到全局范围中并不是一个好主意,甚至是彻头彻尾的有用的东西,但是通常情况下,最好将东西放在本地以保持可读性。
一篇关于在浏览器中触及全局范围的文章 。
那么,你可以把这些函数放到global
variables中,这样它们就可以从你的代码中的任何地方访问,但是这通常不鼓励用户使用它,正如你已经在你的代码示例中所描述的那样。
如果你坚持把variables放在全局范围内,你可以这样做:
// function.js global.test = function test () {/* ... */} // ... // Somewhere else... require('./functions') test()
为了至less部分地改善这一点,你可以实现它,使得function.js
文件真正地只导出当前的函数,并且单个函数只被需求模块分配给global
范围。 这样,你至less可以正确地testingfunction。
更新:你没有说你是否希望函数在整个应用程序中可用,或者只在当前的作用域中(如果你require
) – 如果你只需要它们在当前作用域中,那么倾向于避开global
variables,而是将函数分配给variables:
var functions = require('./functions') , test = functions.test , other = functions.other // Use as necessary test()
尝试这个:
require('./functions')(); test();