将模块导入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()