将整个模块拉入当前作用域Node.js

Pull Entire Module into current scope Node.js

本文关键字:作用域 Node js 模块      更新时间:2023-09-26

在一次require调用后,我正试图将整个模块拉入另一个文件的当前作用域。

例如,如果我的模块看起来像这样:

exports.chai = require "chai"
exports.mocha = require "mocha"
exports.Q = require "q"

然后,我如何访问单个变量,就像它们是当前文件中的全局变量一样?所以,与其做requireVar.chai之类的事情,我可以直接键入chai吗?

感谢您的任何建议

使用coffeescript,我建议您使用析构函数赋值功能:

{chai, mocha, Q} = require 'some_module'
// use chai, mocha and Q for good stuff

你就不能这么做吗:

var requireVar = require('yourmod')
  , chai = requireVar.chai
  , mocha = requireVar.mocha
  , Q = requireVar.Q
  ;
//then use chai, mocha and Q afterwards
chai.hoo();
mocha.mon();
Q.tip();

如果真的想这么做,我想你可以使用with:

with (require('yourMod')) {
    // use chai, mocha etc.
}

请注意,没有人喜欢with,尤其是Douglas Crockford。事实上,使用requireVar.chai;它消除了chai来源于的任何歧义,并使您更容易理解代码/模块的结构。

如果你厌倦了键入requireVar,就把它写得很短;a.chai