Inheritance ExpressJS和CoffeeScript类继承

Inheritance ExpressJS和CoffeeScript类继承,inheritance,express,coffeescript,Inheritance,Express,Coffeescript,使用,我可以扩展节点的类: 如果我理解正确的话,extends反过来又扩展了http.Server。但以下内容存在一些继承问题: Express = require 'express' class MyApp extends Express foo: 'bar' myapp = new MyApp console.log myapp.foo # undefined class MyApp2 extends MyApp constructor: -> super() myapp2

使用,我可以扩展节点的类:

如果我理解正确的话,extends反过来又扩展了http.Server。但以下内容存在一些继承问题:

Express = require 'express'
class MyApp extends Express
  foo: 'bar'
myapp = new MyApp
console.log myapp.foo # undefined

class MyApp2 extends MyApp
  constructor: -> super()
myapp2 = new MyApp2
console.log myapp2 # {}
myapp2.listen 3000 # throws TypeError
调用
listen
时,它会抛出以下错误,因为
myapp2
是空对象
{}
并且没有
listen
方法:

TypeError: Object #<MyApp2> has no method 'listen'
TypeError:对象#没有方法“listen”

如何将
express
以面向对象的方式与
CoffeeScript
结合使用?

是的,您完全可以做到。只需删除那些
()

express = require 'express'
class MyApp extends express
myapp = new MyApp
myapp.listen 3000
express
现在表示一个类,因此您可以将其称为
express
,以遵守CoffeeScript的指导原则。您可以看到,
express()
返回
http.Server
的子体实例,而不是子体类,因此您尝试扩展服务器实例。CoffeeScript允许直接使用JS原型,而这正是您意外做到的。所以,前两行应该是这样的:

Express = require 'express'
class MyApp extends Express

不能从express或server进行扩展,因为它是函数而不是类。您可以使用以下方法对此进行测试:


console.log(express类型)

谢谢!但是我发现了更多的问题,我用它们更新了问题:)
Express = require 'express'
class MyApp extends Express