节点coffeescript类文件和继承

时间:2012-02-27 13:05:59

标签: node.js inheritance coffeescript

我有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 个答案:

答案 0 :(得分:19)

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),但是其他人喜欢这样的结构:< / p>

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

每个模块导出一个具有一个或多个属性的对象。

答案 1 :(得分:3)

你也可以写:

class @MyClass
  [...]

{MyClassName} = require './myclassFile'
myClass = new MyClassName