比如给原型链写成的对象添加方法是Array.prototype.inArray = function(){};
,那给module.exports编写的模块编写方法呢?
要求是要写在别的js文件里的,因为我想为express增加一些方法,又觉得写在express里不好。
比如给原型链写成的对象添加方法是Array.prototype.inArray = function(){};
,那给module.exports编写的模块编写方法呢?
要求是要写在别的js文件里的,因为我想为express增加一些方法,又觉得写在express里不好。
如上讨论的,用middleware应该可以解决,只接受post的请求,你可以用req.method来判断:
app.use(function(req, res, next) {
if (req.method === 'POST') {
next()
} esle {
// do whatever
}
});
// Define your router here
10 回答11.7k 阅读
2 回答3.2k 阅读✓ 已解决
4 回答2.2k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
3 回答859 阅读✓ 已解决
2 回答2.1k 阅读✓ 已解决
5 回答2.3k 阅读
我问着问着,突然想到以前利用
module.exports
做全局变量的原理,利用这个原理,似乎也能给module.exports
的对象添加新的方法!以下是解决方案,不确定是否成功,有待晚上回去测试a.js
//需求是:在其他js文件里给这个a,添加新的方法b.js
//解决方法page_index.js
//某个路由js在app.js引用过一次b之后,也许就可以了!晚上回去试试看!
=========================================
试过之后,发现可用,但是我想添加方法的对象是
express.Router
,因为express.Router
居然是一个可实例化的对象,而且post/get
等,是在这个对象的原型链中的,所以我写的对象也最好在其原型链中,所以实际中这样用还是不行的,b.js
应该这样:这样新增的方法就能使用
this
,可以轻松地访问express.Router
的属性和方法了。然后在使用这个方法之前require
一次这个js,之后就可以用了,用法跟get/post
毫无区别,当环境不为development
时,则不会处理get请求,蛮方便的。