2013-02-09 53 views
1

我试图在需求调用后将整个模块拉入另一个文件的当前范围。将整个模块拉入当前范围Node.js

举例来说,如果我的模块如下所示:

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

我怎样才能再访问个人变量,如它们在当前文件的全局变量?所以,而不是像requireVar.chai做什么,我只能键入柴?

感谢您的任何意见

回答

4

使用CoffeeScript的,我建议你使用destructuring assignment功能:

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

// use chai, mocha and Q for good stuff 
+0

是啊,这就是我最终使用。它看起来是最干净的,希望有一条我可以用来拉动这些全局变量的单线,但是哦... – JonMorehouse 2013-02-11 15:05:37

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

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

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

请注意,没有人喜欢with但特别ly Douglas Crockford。实际上使用requireVar.chai;它消除了中的任何歧义,其中chai来源于此,并且易于理解代码/模块的结构。

如果您觉得无聊,打字requireVar,请将其缩短; a.chai