nodejs导入文件并以本机方式使用函数



如何导入/需要文件,然后以本机方式使用文件中的函数?

假设我有文件1:

const file2 = require("./file2.js")
const text = "hello"
file2.print()

在文件2中,我有:

module.exports = {
print:()=>{
console.log(text)
}
}

我希望能够像在原始文件中一样使用另一个文件中的函数,保留在第一个文件中创建的变量和对象,这可能吗?

不,模块是独立的,除非您将变量分配到global对象中,并希望能够跟踪它们而不会发疯。不要那样做。

任一

  • 传递所需的数据(大多数情况下是最佳选项(,或者
  • 也许可以添加第三个模块,其中包含您需要的共享状态,并从文件1和文件2中require()

否!

但是

共享上下文的常规模式是创建一个上下文并共享它

//In file 1 -->
let myContext = {
text: 'hello'
}
file2.print(myContext);
//In file 2 -->    
module.exports = {
print:(ctx)=>{
console.log(ctx.text)
}
}

但是

JS对上下文有一些内置的支持。类似这样的东西:

//In file 1 -->
let myContext = {
text: 'hello'
}
let print = file2.print.bind(myContext);
print(); 
//In file 2 -->    
module.exports = {
print: function(){
console.log(this.text)
}
}

请注意,移除了参数并将箭头函数更改为函数表达式。

最新更新