Узел coffeescript класс файлов и наследование - PullRequest
9 голосов
/ 27 февраля 2012

У меня есть 2 файла классов:

foo.coffee: class Foo

bar.coffee: class Bar extends Foo

Как определить эти классы, чтобы они былиглобально доступны?Я получаю ошибку в Bar, что Foo не определено.

У меня есть файл index.js, который я вызываю node для запуска сценариев.Вот содержимое файла index.js, я, скорее всего, тоже сделал это неправильно:

exports.Foo = require("./foo")
exports.Bar = require("/bar")

Ответы [ 2 ]

19 голосов
/ 27 февраля 2012

foo.coffee:

class Foo
  // ...

module.exports = Foo

bar.coffee:

Foo = require "./foo"

class Bar extends Foo
  // ...

module.exports = Bar

index.coffee:

exports.Foo = require "./foo"
exports.Bar = require "./bar"

ОБНОВЛЕНИЕ: Вам также нужно запустить .coffee файлы с coffee, если вы не скомпилировали их сначала.

ОБНОВЛЕНИЕ 2: Как вы структурируете свои модели, зависит от вас. Мне нравится шаблон выше (где простые модули экспортируют только функцию - вот когда вам нужно присвоить module.exports, потому что вы не можете просто назначить exports), но другие предпочитают структуру, подобную этой:

foo.coffee:

class Foo
  // ...

exports.Foo = Foo

bar.coffee:

Foo = require("./foo").Foo

class Bar extends Foo
  // ...

exports.Bar = Bar

index.coffee:

exports.Foo = require("./foo").Foo
exports.Bar = require("./bar").Bar

Где каждый модуль экспортирует объект с одним или несколькими свойствами.

3 голосов
/ 04 декабря 2013

Вы также можете написать:

class @MyClass
  [...]

{MyClassName} = require './myclassFile'
myClass = new MyClassName
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...