扫码关注官方订阅号
比如给原型链写成的对象添加方法是Array.prototype.inArray = function(){};,那给module.exports编写的模块编写方法呢?
Array.prototype.inArray = function(){};
要求是要写在别的js文件里的,因为我想为express增加一些方法,又觉得写在express里不好。
ringa_lee
我问着问着,突然想到以前利用module.exports做全局变量的原理,利用这个原理,似乎也能给module.exports的对象添加新的方法!以下是解决方案,不确定是否成功,有待晚上回去测试
module.exports
a.js//需求是:在其他js文件里给这个a,添加新的方法
a.js
module.exports={a:function(){console.('a')}}
b.js//解决方法
b.js
var a = require('./a'); a.b = function(){console.log('b')}
page_index.js//某个路由js
page_index.js
var a = require('./a'); a.b();
在app.js引用过一次b之后,也许就可以了!晚上回去试试看!
========================================= 试过之后,发现可用,但是我想添加方法的对象是express.Router,因为express.Router居然是一个可实例化的对象,而且post/get等,是在这个对象的原型链中的,所以我写的对象也最好在其原型链中,所以实际中这样用还是不行的,b.js应该这样:
express.Router
post/get
var express = require('express'); var router_proto = express.Router.__proto__; router_proto.ajax = function(){ var args = H.makeArray(arguments);//这个方法自己找吧,就是把arguments变成数组对象而已 if(args.length==0)throw '参数数量不足'; if(settings.env=='development'){ //settings是我用来全局保存当前设置的一个对象,自己根据自己的来改这里 this.get.apply(this,args); } this.post.apply(this,args); };
这样新增的方法就能使用this,可以轻松地访问express.Router的属性和方法了。然后在使用这个方法之前require一次这个js,之后就可以用了,用法跟get/post毫无区别,当环境不为development时,则不会处理get请求,蛮方便的。
this
require
get/post
development
如上讨论的,用middleware应该可以解决,只接受post的请求,你可以用req.method来判断:
app.use(function(req, res, next) { if (req.method === 'POST') { next() } esle { // do whatever } }); // Define your router here
你写的什么啊
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
扫描下载App
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
我问着问着,突然想到以前利用
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请求,蛮方便的。如上讨论的,用middleware应该可以解决,只接受post的请求,你可以用req.method来判断:
你写的什么啊