在node.js中需要全局范围

3

在我的node.js脚本中,我有以下代码:

var wu = require('./wu-0.1.8.js');

只是为了玩弄wu

如果在浏览器中,我可以随处使用wu,例如:

wu([1,2,3]).map( function(n){ return n*n; } );

然而在 node.js 中,我必须写成:

wu.wu([1,2,3]).map( function(n){ return n*n; } );

是否可以将 wu 添加到全局作用域中,这样我就不必一直输入 wu.wu 了吗?

2个回答

6
var wu = require('./wu-0.1.8.js').wu;

编辑(回应评论):

如果你需要在require('./wu-0.1.8.js')中使用其他方法,你可以随时这样做...

var wuModule = require('./wu-0.1.8.js'); 
var wu = wuModule.wu;

// Now you can do 

wu([1,2,3]).map( function(n){ return n*n; } );
wuModule.someOtherWuMethod(...);

1
如果有更多我想要访问的导出函数,比如100个,该怎么办? - Sir Bohumil
你的意思是像这样,wu.foo(),wu.bar(),除了wu.wu()之外? - AlexMA
那么我的答案就不适用了...但是如果它是一个“主”函数(就像jQuery中的$一样),那么根本没有必要有wu.wu方法。wu的设计者应该导出wu函数并将wu.foo和wu.bar添加为方法(wu的属性)。 - AlexMA

3

好的,我建议你不要这样做,但你可以迭代wu对象属性并将它们附加到全局对象上:

var _wu = require('./wu-0.1.8.js');
var key;
for (key in _wu) {
  if (_wu.hasOwnProperty(key)) {
    global[key] = _wu[key];
  }
}

酷...但是太烂了! - wprl
@wprl 有什么问题? - fardjad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接