3

简而言之:

有没有办法在 NodeJS 中静态导入另一个 JS 文件的函数?(作为 Java 的静态导入?)

我想做的例子:

我有一个m1.js包含函数的文件:

function add(x,y) { return x + y }
exports.add = add

然后我有一个app.js导入的文件m1.js

m1 = require('./m1')
var result = m1.add(3,4)

现在,我想做的是导入这样的函数,m1.js以便我可以调用它们,而不必在调用前加上m1.*

m1 = require('./m1')
var result = add(3,4)  // instead of m1.add(3,4)

到目前为止我已经尝试过:

我在文件中尝试了以下内容m1.js

function add(x,y) { return x + y }
exports.static = function(scope) { scope.add = add }

并尝试按如下方式导入m1.jsapp.js但找不到add(x,y)

require('./m1').static(this)
var result = add(3,4)
4

1 回答 1

4

你的尝试很接近。您必须做的一个小改动是在调用时this替换为:globalstatic

require('./m1').static(global)
var result = add(3,4)

文档中:

全球的

  • {Object} 全局命名空间对象。

在浏览器中,顶级作用域是全局作用域。这意味着在浏览器中,如果您在全局范围内,var something将定义一个全局变量。在 Node 中,这是不同的。顶级范围不是全局范围;var somethingNode 模块内部将是该模块的本地。

于 2014-08-09T22:30:41.787 回答