将模块导入Coffeescript中的全局名称空间?

从你的模块utils.coffee开始:

exports.foo = -> exports.bar = -> 

那么你的主文件:

 utils = require './utils' utils.foo() 

foo()和bar()是你会频繁调用的函数,所以你:

 foo = require('./utils').foo bar = require('./utils').bar foo() 

当模块中只定义了一些函数时,这种方法是有效的,但随着函数数量的增加,这种方法变得混乱。 有没有办法将所有模块的function添加到您的应用程序的命名空间?

有没有办法将所有模块的function添加到您的应用程序的命名空间?

不,这是,据我所知,你可以做的最好(使用CS的解构作业 ):

 {foo, bar, baz} = require('./utils') 

使用extend (使用下划线或任何其他提供它的库,如果需要,可以自己写):

 _(global).extend(require('./utils')) 

如果你不想使用下划线,你可以简单地做:

 var utils = require('./utils') for (var key in utils) global[key] = utils[key] 

另一种将所有模块function导出到全局范围的方式如下:应用程序模块:

 (()-> Application = @Application = () -> if @ instenceof Application console.log "CONSTRUCTOR INIT" Application::test = () -> "TEST" Version = @Version = '0.0.0.1' )() 

主应用程序:

 require './Application' App = new Appication() console.log App.test() console.log Version 

这个怎么样:

 global[k] = v for k,v of require './utils' 

这样的东西是我的观点的一个很好的方法:

utils.coffee

 module.exports = foo: -> "foo" bar: -> "bar" 

main.coffee

 util = require "./util" console.log util.foo()