【问题标题】:Pull Entire Module into current scope Node.js将整个模块拉入当前范围 Node.js
【发布时间】:2013-02-09 15:59:48
【问题描述】:

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

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

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

我怎样才能像访问当前文件中的全局变量一样访问单个变量?所以我可以输入 chai 而不是像 requireVar.chai 这样的操作?

感谢您的建议

【问题讨论】:

    标签: javascript node.js coffeescript commonjs


    【解决方案1】:

    使用coffeescript,我推荐你使用destructuring assignment 功能:

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

    【讨论】:

    • 是的,这就是我最终使用的。它看起来最干净,有点希望我可以用一行来将这些全局变量拉入自己,但是哦,好吧......
    【解决方案2】:

    你不能这样做:

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

    【讨论】:

      【解决方案3】:

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

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

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

      如果您对输入requireVar 感到厌烦,请将其缩短; a.chai.

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-11-05
        • 1970-01-01
        • 2016-06-06
        • 2014-05-26
        • 1970-01-01
        • 1970-01-01
        • 2021-08-21
        相关资源
        最近更新 更多