Импортировать функции из модуля в глобальное пространство имен в Coffeescript? - PullRequest
4 голосов
/ 13 февраля 2012

Начните с вашего модуля, utils.coffee:

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

Тогда ваш основной файл:

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

foo () и bar () - это функции, которые вы будете часто вызывать, поэтому вы:

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

Этот подход работает, когда в модуле определено только несколько функций, но становится грязным по мере увеличения количества функций. Есть ли способ добавить все функции модуля в пространство имен вашего приложения?

Ответы [ 6 ]

11 голосов
/ 13 февраля 2012

Используйте extend подчеркиванием или любой другой библиотекой, которая его предоставляет. Напишите это при необходимости):

_(global).extend(require('./utils'))
5 голосов
/ 01 мая 2012

Если вы не хотите использовать подчеркивание, вы можете просто сделать:

var utils = require('./utils')
for (var key in utils)
  global[key] = utils[key]
3 голосов
/ 13 февраля 2012

Есть ли способ добавить все функции модуля в пространство имен вашего приложения?

Нет. Насколько мне известно, это лучшее, что вы можете сделать (используя CS ' деструктурирующее задание ):

{foo, bar, baz} = require('./utils')
1 голос
/ 08 сентября 2013

Как это:

global[k] = v for k,v of require './utils'
1 голос
/ 14 февраля 2012

Еще один способ экспортировать все функции модулей в глобальную область: Модуль приложения:

(()->
    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
0 голосов
/ 14 февраля 2012

что-то вроде этого - хороший подход к моему мнению:

utils.coffee

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

main.coffee

util = require "./util"
console.log util.foo()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...