将整个模块拉入当前范围Node.js

时间:2013-02-09 15:59:49

标签: javascript node.js coffeescript commonjs

我正在尝试在需要调用之后将整个模块拉入另一个文件的当前范围。

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

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

如何访问各个变量,就像它们是当前文件中的全局变量一样?所以,不要像requireVar.chai那样做,我可以输入chai?

感谢您的任何建议

3 个答案:

答案 0 :(得分:4)

使用coffeescript,我建议您使用destructuring assignment功能:

{chai, mocha, Q} = require 'some_module'

// use chai, mocha and Q for good stuff

答案 1 :(得分:1)

你不能这样做:

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();

答案 2 :(得分:1)

如果真的真的想要这样做,我想你可以使用with

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

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

如果您无聊地输入requireVar,请将其缩短; a.chai