2

CoffeeScriptノードのhttp.Serverクラスを拡張できます:

{Server} = require 'http'
class MyServer extends Server
  foo: 'bar'
myserver = new MyServer
console.log myserver.foo # 'bar'

class MyServer2 extends MyServer
  constructor: -> super()
myserver2 = new MyServer2
myserver.listen 3000

この投稿を正しく理解していれば、expressextendsconnectが 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'

expressでオブジェクト指向の方法で使用するにはどうすればよいCoffeeScriptですか?

4

2 に答える 2

0

はい、全然できます。それらを削除するだけ()です:

express = require 'express'
class MyApp extends express
myapp = new MyApp
myapp.listen 3000

expressはクラスを表すようになったのでExpress、CoffeeScript のガイドラインに従うために、代わりにそれを呼び出す必要があるかもしれません。は、子孫クラスではなく、 の子孫のインスタンスをexpress()返すhttp.Serverため、サーバー インスタンスを拡張しようとしていました。CoffeeScript では JS プロトタイプを直接使用できますが、それはあなたが誤って行ったことです。したがって、最初の 2 行は次のようになります。

Express = require 'express'
class MyApp extends Express
于 2013-03-14T16:13:11.737 に答える