Javascript 扩展快速路由器
有没有扩展express.Router的方法 我试过这个:Javascript 扩展快速路由器,javascript,node.js,express,Javascript,Node.js,Express,有没有扩展express.Router的方法 我试过这个: class Test extends express.Routeur() { }; 但是express给了我一个错误 有什么解决方案吗?您不能这样做,因为express.Router是一个函数。我还没有找到如何用函数扩展类。但您可以使用一种方法,即如何使用此方法,或在ES2015中使用标准方法: import * as express from 'express'; let router = express.Router();
class Test extends express.Routeur() {
};
但是express给了我一个错误
有什么解决方案吗?您不能这样做,因为
express.Router
是一个函数。我还没有找到如何用函数扩展类。但您可以使用一种方法,即如何使用此方法,或在ES2015中使用标准方法:
import * as express from 'express';
let router = express.Router();
/* GET home page. */
router.get('/', (req, res, next) => {
res.render('index', { title: 'Express' });
});
export = router;
也许是这样的:
function My_Router() {
return express.Router.apply(this, arguments);
}
var myRouter = new My_Router();
正确的方法是:
class Test extends express.Router {
constructor() {
super();
this.get('/', (req, res) => console.log('test'));
}
};
当您编写express.Router()时(带括号),您已经调用了构造函数,因此您试图扩展对象而不是类。对不起,我一点也不懂英语。感谢谷歌翻译 构造函数应该返回路由器的完美(实际上是函数)对象。 您可以向该对象添加任何您想要的内容,或者根据您的意愿对其进行更改。 当然,每个接口都将有一个新的路由器对象 还需要确定构造函数的原型。这发生在第6行
const Router = require("express").Router;
const myRouter = function () {
const router = Router();
Object.setPrototypeOf(Router, myRouter);
router.myGet = function (path) {
router.get.call(this, arguments);
console.log("is my get function!!");
};
return router;
};
const router_custom = new myRouter();
router_custom.myGet("/", (req, res) => {
res.send("hay!!");
});
这样做可能会有所帮助
class YourController extends express.Router{
constructor(){
super()
this.get("/", (req, res)=>{
//do somthing
res.send("return something");
})
this.get("/:id", (req, res)=>{
//do something
res.send("return something);
})
}
}
module.exports = new YourController();
将其用作:
const yourExtendedRouter = require("../controllers/YourController")
router.use("/base-url", yourExtendedRouter)
请将完整的堆栈跟踪添加到问题帖子中。可能您在尝试进行此注册时拼写错误
Routeur
。应用程序没有发生此注册。请使用(route)!你能告诉我这是否有效吗?你不是忘了创建对象吗app.use(new Test())
你是如何让它工作的?我想用同样的方法。但是tslint说,Type'(options?:RouterOptions)=>Router'不是构造函数类型
。没有工作:(对不起,换行符在注释中不工作)///类测试扩展了express.Router{///constructor(){///super();///this.get('/',(req,res)=>console.log('Test');/////let Test new Test();///console.log(测试实例的测试:
,测试实例的测试);///false///console.log(express.Router的测试实例:
,express.Router的测试实例);//false///console.log(测试类型:
,测试类型);//函数///console.log(test.constructor:
,test.constructor);//function(){…}@ngfelixl你知道吗?