我决定为Express服务器编写ES6类,但扩展的Express会覆盖子原型,因此无法使用在构造函数外部定义的方法和道具。查看代码:
import Express from 'express'
export default class Server extends Express {
constructor(options) {
super(options.expressOptions || {})
super.use(cookieParser()) // TypeError: (intermediate value).use is not a function
this.use(bodyParser.json()) // This definition works cause of overridden prototype
this.use(Express.static('static'))
this.test() // TypeError: this.test is not a function
this.test1 = '123' // Contains in Server final prototype
}
test() {
console.log('test')
}
}
还有超类定义的问题。我不知道如何保存子原型。如果您有帮助,那将是非常宝贵的。
答案 0 :(得分:2)
再次查看这个问题,我发现了问题。
express
不是构造函数。
您将express
视为您使用new Express
调用的构造函数。这不是它的工作方式:您仅使用const app = express()
进行调用。实际上,express
是一个函数(here's the source code),它以一种老式的(非ES6)方式为您创建对象。
据我所知,不可能对任何核心Express对象进行子类化。我猜您可以使用类来包装Express框架对象,但是对我来说,这似乎并不直观。