在 Coffeescript 中将函数从模块导入到全局命名空间?

发布于 2025-01-05 02:25:32 字数 375 浏览 1 评论 0原文

从您的模块 utils.coffee 开始:

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

然后您的主文件:

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

foo() 和 bar() 是您将经常调用的函数,因此您:

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

当模块中仅定义了几个函数但变得混乱时,此方法有效随着功能数量的增加。有没有办法将模块的所有功能添加到应用程序的命名空间中?

Start with your module, utils.coffee:

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

Then your main file:

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

foo() and bar() are functions you'll be calling frequently, so you:

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

This approach works when only a few functions are defined in the module, but becomes messy as the number of functions increases. Is there a way to add all of a module's functions to your app's namespace?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

溺ぐ爱和你が 2025-01-12 02:25:32

使用 extend (使用 underscore 或任何其他提供它的库。如有必要,请自行编写) :

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

Use extend (with underscore or any other library that provides it. Write it yourself if necessary):

_(global).extend(require('./utils'))
慕巷 2025-01-12 02:25:32

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

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

If you don't want to use underscore, you could simply do:

var utils = require('./utils')
for (var key in utils)
  global[key] = utils[key]
欲拥i 2025-01-12 02:25:32

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

不。据我所知,这是你能做的最好的事情(使用 CS 的 解构赋值):

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

Is there a way to add all of a module's functions to your app's namespace?

No. This is, to my knowledge, the best you can do (using CS' destructuring assignment):

{foo, bar, baz} = require('./utils')
淡淡的优雅 2025-01-12 02:25:32

将所有模块功能导出到全局范围的另一种方法如下:
应用模块:

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

Another way to exports all modules function to global scope like so:
Application Module:

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

    Version = @Version = '0.0.0.1'
)()

Main App:

require  './Application'

App = new Appication()
console.log App.test()
console.log Version
征棹 2025-01-12 02:25:32

这个怎么样:

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

How's this:

global[k] = v for k,v of require './utils'
简单爱 2025-01-12 02:25:32

我认为这样的方法是一个很好的方法:

utils.coffee

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

main.coffee

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

something like that is a good approach to my opinion:

utils.coffee

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

main.coffee

util = require "./util"
console.log util.foo()
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文