Node.js module.js中的app.js中的触发器函数
第一次海报-请原谅(并打电话给我)任何格式错误 假设我有app.js,它需要Node.js module.js中的app.js中的触发器函数,node.js,express,node-modules,Node.js,Express,Node Modules,第一次海报-请原谅(并打电话给我)任何格式错误 假设我有app.js,它需要module.js。在module.js中,我有一个运行的express服务器,可以接收简单的webrequests(GET/POST)。当我在module.js中收到请求时,是否有方法触发app.js中的函数 大致如下: var webModule = require('./module.js') webModule.on('GET', async function (req) { //do stuff wit
module.js
。在module.js中,我有一个运行的express服务器,可以接收简单的webrequests(GET/POST)。当我在module.js
中收到请求时,是否有方法触发app.js
中的函数
大致如下:
var webModule = require('./module.js')
webModule.on('GET', async function (req) {
//do stuff with the request
});
我之所以不把express服务器放在
app.js
中,是因为我想运行一定量的代码来验证请求是否合法,然后在单独的脚本中重复使用module.js
,以最大限度地减少代码量,并避免每次更新身份验证过程时都必须更新5-6个脚本。您可以使用Node.js中存在的事件系统。如果设置正确,则可以在每次调用时发出一个事件,并让侦听器响应该事件
示例来自:
在您的例子中,您可以创建一个类来扩展在每个请求中使用的EventEmitter。然后,当请求得到调用时,该类可以发出一个事件,然后通过设置侦听器在app.js文件中处理该调用。我可能有一个解决方案,需要一些时间来编写代码(因为我的问题显然非常简单) 在
module.js
中:
var functionActions={};
module.exports={
on:(异步函数(requestType,returnFunction){
functionActions[requestType].do=returnFunction;
});
}
//通用快递代码
app.get('*',函数(req,res){
如果(verifyRequest(req)=‘OK’{//身份验证
返回函数Actions['GET'].do();
}否则{//如果请求未经授权
res.status(403).send('停止尝试攻击我,你这个愚蠢的黑客ಠ╭╮ಠ');
}
})
这真是太聪明了(可能比我现在的想法好多了),我会试试的!非常感谢你!希望它能解决你想解决的问题:)@omgitsbxrt成功了吗?
const EventEmitter = require('events');
class MyEmitter extends EventEmitter {}
const myEmitter = new MyEmitter();
myEmitter.on('event', () => {
console.log('an event occurred!');
});
myEmitter.emit('event');