为什么 Router 在 express 4.x 中像普通函数一样使用而不是构造函数?
Why is Router used like normal function instead of constructor in express 4.x?
我是试图了解 Express 4.x 路由的新手,我正在阅读他们的指南:http://expressjs.com/guide/routing.html
最后一段说的是:
The express.Router class can be used to create modular mountable route
handlers. A Router instance is a complete middleware and routing
system
附带的代码是:
var express = require('express');
var router = express.Router();
为什么这个 express.Router
构造函数在没有 new
运算符的情况下像普通函数一样被调用?他们在文档中说它是 class,他们根据 javascript 风格(首字母大写)命名它,但他们(以及所有其他在线示例)将它用作普通函数。
除了传统的实例化,有些人还喜欢支持函数式风格。这是通过在函数顶部添加一个简单的检查来完成的:
function Router() {
if (!(this instanceof Router))
return new Router();
// ...
}
这允许支持两种类型的调用(使用 new
和不使用)。
我是试图了解 Express 4.x 路由的新手,我正在阅读他们的指南:http://expressjs.com/guide/routing.html
最后一段说的是:
The express.Router class can be used to create modular mountable route handlers. A Router instance is a complete middleware and routing system
附带的代码是:
var express = require('express');
var router = express.Router();
为什么这个 express.Router
构造函数在没有 new
运算符的情况下像普通函数一样被调用?他们在文档中说它是 class,他们根据 javascript 风格(首字母大写)命名它,但他们(以及所有其他在线示例)将它用作普通函数。
除了传统的实例化,有些人还喜欢支持函数式风格。这是通过在函数顶部添加一个简单的检查来完成的:
function Router() {
if (!(this instanceof Router))
return new Router();
// ...
}
这允许支持两种类型的调用(使用 new
和不使用)。