nodejs EventEmitter
原创
©著作权归作者所有:来自51CTO博客作者朋克版小红帽的原创作品,请联系作者获取转载授权,否则将追究法律责任
用法的话就是
引用 eventEmitter
实例 event
注册 on
触发 emit
var $event = require('events');
var myEvent = new $event.EventEmitter();
myEvent.on('getData',function(data)
{
console.log('事件触发');
console.log(data);
});
myEvent.emit('getData','事件参数')
高级用法 这块看代码能明白 具体项目怎么使用 还有点朦胧 在这做个记录 以后 有机会在来查阅
首先得知道
exports和module.exports的区别
终于讲清楚了nodejs中exports和module.exports的区别_慕课手记
**exports **返回的是模块函数
**module.exports **返回的是模块对象本身,返回的是一个类
好我们写一个自定义事件
_base.js
var events=require('events');
var util=require('util');
function _base(){
this.emitter=new events.EventEmitter(this);
};
util.inherits(_base,events.EventEmitter); //继承
_base.prototype.onEvent=function(eventName,callback){
this.emitter.on(eventName,callback);
}
_base.prototype.emitEvent=function(eventName,arg){
this.emitter.emit(eventName,arg);
}
module.exports=_base;
blogInfo.js
var _base=require('./base_');
var util=require('util');
function blogInfo(){
this.base=new _base();
}
util.inherits(blogInfo,_base);
blogInfo.prototype.onSave=function(blog){
this.base.onEvent('saveStart',function(blog){
console.log('saveStart',blog);
});
this.base.onEvent('blogCount',function(blog){
console.log('blogCount',blog);
});
this.base.onEvent('userInfoCount',function(blog){
console.log('count',blog);
});
this.base.onEvent('saveEnd',function(blog){
console.log('saveEnd',blog);
});
};
blogInfo.prototype.emitEvent=function(blog){
this.base.emitEvent('saveStart',blog);
this.base.emitEvent('blogCount',blog);
this.base.emitEvent('userInfoCount',blog);
this.base.emitEvent('saveEnd',blog);
};
module.exports=blogInfo;
blog.js
var BlogInfo=require('./blogInfo');
exports.blog_save=function(newblog){
var blogInfo=new BlogInfo();
blogInfo.onSave(newblog);
blogInfo.emitEvent(newblog);
};
app.js
var http = require('http');
var blog= require('./blog');
var webServer = function (req, res){
if(req.url!='/favicon.ico'){
var newblog={title:"标题",content:"内容"};
blog.blog_save(newblog);
res.writeHead(200, {'Content-Type': 'text/html;charset=utf-8'});
res.write('<html><body>');
res.write('<h1>*** save blog ***</h1>');
res.write('<h2>Hello!</h2>');
res.end('</body></html>');
}
};
var createWebServer=http.createServer(webServer);
createWebServer.listen(8888);
console.log('listen 8000');
具体内容意思 看一下 布衣大神的文章
node.js 如何继承 events 自定义事件及触发函数 一介布衣
就到这了 站在大神的肩膀上写代码