简短问题:
有没有办法静态导入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.js
中导入app.js
,如下所示,但无法找到add(x,y)
:
require('./m1').static(this)
var result = add(3,4)
答案 0 :(得分:4)
你接近你的尝试。在调用this
时,您必须进行的一项小改动是将global
替换为static
:
require('./m1').static(global)
var result = add(3,4)
全球
- {Object}全局命名空间对象。
在浏览器中,顶级范围是全局范围。这意味着在浏览器中如果您处于全局范围
var something
将定义全局变量。在Node中,这是不同的。顶级范围不是全球范围; Node模块中的var something
将是该模块的本地。