NodeJS:可以进行静态导入



问题简介:

有没有办法在 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 }

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

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

你的尝试很接近。您必须做的一个小更改是在调用 static 时将 this 替换为 global

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

从文档中:

全球

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

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

相关内容

  • 没有找到相关文章

最新更新