CoffeeScript и NodeJS: как экспортировать несколько классов?

Я хочу экспортировать некоторые классы, скажем, Dog а также Cat, Один из способов сделать это:

class Dog
  bark: -> console.log "Arff! :D"

class Cat
  meaow: -> console.log "Meaw!"


module.exports = {Dog, Cat}

Как я могу сделать что-то подобное, не вводя имена классов дважды?

3 ответа

Решение

Вы можете использовать что-то вроде этого:

class exports.Dog
  bark: -> console.log "Arff! :D"

Это сводится к:

exports.Dog = (function() {

  function Dog() {}

  Dog.prototype.bark = function() {
    return console.log("Arff! :D");
  };

  return Dog;

})();

Альтернативный путь к этому заключается в следующем:

module.exports = 
   Dog: class Dog
          bark: -> console.log "Arff! :D"

   Cat: class Cat
         meaow: -> console.log "Meaw!"

Тогда вы можете сделать следующее:

animals = require './animals'

dog = new Animals.dog()

Обычно я хочу локальную переменную (поэтому мне не нужно вводить exports.x все время) и переменную экспорта (поэтому мне не нужно определять все экспорты сразу в конце), поэтому я делаю следующее:

exports.dog = class Dog
  bark: ->

exports.cat = class Cat
  meow: ->
Другие вопросы по тегам