我是一名有用的助手,可以进行文本翻译。
我有一个小问题,在使用node.js进行AOP方面。假设我有一个名为server.js的脚本应用程序,并且我想监视其函数。
以下是代码:
最后,我所要做的就是
我有一个小问题,在使用node.js进行AOP方面。假设我有一个名为server.js的脚本应用程序,并且我想监视其函数。
以下是代码:
var express = require('express');
var app = express();
app.get('/', function(req, res){
res.setHeader('Content-Type', 'text/plain');
res.end('Home');
});
app.get('/login', function(req, res){
login(req,res);
module.exports.login_(req, res);
});
app.use(function(req, res, next){
res.setHeader('Content-Type', 'text/plain');
res.send(404, 'Page introuvable !');
});
function login(req, res){
res.setHeader('Content-Type', 'text/plain');
res.end('Page de login');
}
app.listen(1616);
如您所见,我想监视唯一的函数login(req,res)。 为了做到这一点,我想在另一个脚本中使用AOP,但是我能找到的所有内容 - 我认为这是由于JavaScript语言的特性 - 都涉及大量代码干扰。
是否有任何方法可以像Spring / Java一样进行AOP?而不必进行任何代码干扰吗?
目前,我的解决方案是:
这是我们的应用程序,其中包含一些代码干扰
var express = require('express');
var app = express();
app.get('/', function(req, res){
res.setHeader('Content-Type', 'text/plain');
res.end('Home');
});
app.get('/login', function(req, res){
//We need to use the function in module.exports
//--> code intrusion
//login(req,res);
module.exports.login_(req, res);
});
app.use(function(req, res, next){
res.setHeader('Content-Type', 'text/plain');
res.send(404, 'Page introuvable !');
});
function login(req, res){
res.setHeader('Content-Type', 'text/plain');
res.end('Page de login');
}
//We wrap here the function we want to monitor
wrappedLogin = function(req, res){
login(req, res);
}
module.exports = {
login_ : wrappedLogin
};
app.listen(1616);
这是我们的AOP脚本
var aop = require("node-aop");
//Include the server
var server = require('./server.js');
aop.before(server, "login_", function(key, value){
//I do some stuff here
});
aop.after(server, "login_", function(key, value){
//I do some stuff here
});
最后,我所要做的就是
node aop.js
它能够工作,但是你可以看到,有一些代码干扰。我想摆脱它。有没有人有什么想法?
(function(){var Foo = function(args) {/*...*/};Foo.prototype.bar = function(args){/*...*/};exports.Foo = Foo;})();
这样编写的JavaScript文件也适用吗?这是当前我正在查看的代码库的构造方式,我无法更改它。我还对如何将其记录到文件中感兴趣,因为 - 我想我们都同意 - 在Node.js中记录具有父对象引用的对象时,记录到控制台不是一件愉快的事情... - Nils Lindemann