问题简介:
有没有办法在 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
将是该模块的本地。