从您的模块utils.coffee开始:
exports.foo = ->
exports.bar = ->
然后你的主文件:
utils = require './utils'
utils.foo()
foo()和bar()是你经常打电话的功能,所以你:
foo = require('./utils').foo
bar = require('./utils').bar
foo()
当模块中仅定义了少量函数时,此方法有效,但随着函数数量的增加而变得混乱。有没有办法将所有模块的功能添加到应用程序的命名空间?
答案 0 :(得分:11)
使用extend
(使用underscore或提供它的任何其他库。必要时自行编写):
_(global).extend(require('./utils'))
答案 1 :(得分:5)
如果您不想使用下划线,您可以这样做:
var utils = require('./utils')
for (var key in utils)
global[key] = utils[key]
答案 2 :(得分:3)
有没有办法将所有模块的功能添加到应用程序的命名空间?
没有。据我所知,这是你能做的最好的事情(使用CS'destructuring assignment):
{foo, bar, baz} = require('./utils')
答案 3 :(得分:1)
将所有模块函数导出到全局范围的另一种方法如下: 申请模块:
(()->
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
答案 4 :(得分:1)
这是怎么回事:
global[k] = v for k,v of require './utils'
答案 5 :(得分:0)
utils.coffee
module.exports =
foo: ->
"foo"
bar: ->
"bar"
main.coffee
util = require "./util"
console.log util.foo()