javascript – 如何使用node.js执行AOP?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 如何使用node.js执行AOP?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2950字,纯文字阅读大概需要5分钟。
内容图文
![javascript – 如何使用node.js执行AOP?](/upload/InfoBanner/zyjiaocheng/725/06594ee4d0d24cf48b6c09c31f21f2d4.jpg)
使用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
它可以工作,但正如您所看到的,存在一些代码入侵.我想摆脱它.有谁有想法吗?
解决方法:
I think it is due to the nature of the Javascript language – implies a
lot of code intrusion.
请不要:'(
AOP是OOP的扩展,没有OOP没有AOP.
1º:npm install kaop –save
2º:定义监控方法的建议:
var Advices = require("kaop").Advices;
Advices.add(
function log(){
//meta.args contains the arguments {array}
console.log(meta.methodName + " called");
console.log("with arguments: " + meta.args);
console.log("returned: " + meta.result);
}
)
3º您必须按照OOP指南组织代码:
Controller = Class({
constructor: function(app){
app.get('/', this.home);
app.get('/login', this.login);
app.use(this.notFound);
},
login: [function(req, res){
//what ever
}, "log"],
home: [function(req, res){
res.setHeader('Content-Type', 'text/plain');
res.end('Home');
}, "log"],
notFound: [function(req, res){
res.setHeader('Content-Type', 'text/plain');
res.send(404, 'Page introuvable !');
}, "log"]
})
Here is an example without using express
我还在javascript中写了一篇关于AOP的文章
内容总结
以上是互联网集市为您收集整理的javascript – 如何使用node.js执行AOP?全部内容,希望文章能够帮你解决javascript – 如何使用node.js执行AOP?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。