【问题标题】:NodeJS: Static imports possible?NodeJS:静态导入可能吗?
【发布时间】:2014-08-09 22:27:36
【问题描述】:

简而言之:

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

【问题讨论】:

    标签: node.js static-import


    【解决方案1】:

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

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

    来自documentation

    全局

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

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

    【讨论】:

    • @ndrizza 这是一个新颖的解决方案,但请记住,全局变量的使用可以在整个应用程序中访问,并且不是很好的 IMO :-)
    猜你喜欢
    • 2023-04-03
    • 2013-11-04
    • 2020-10-21
    • 2020-04-18
    • 2013-05-11
    • 2018-10-19
    • 1970-01-01
    • 2011-02-17
    • 2017-10-16
    相关资源
    最近更新 更多