有话说在前面
我们之前讲过了,nodejs跟es6差不多就是一个模子刻出来的。
所以它加载文件的方法跟es6是一模一样的。require加载,exports往外暴露接口。
如何加载
我们可以在一个js中加载另一个js中的变量,因为我们知道,在模块中,是不会互相通信的。
所以要借助exports对象来实现。等于是把你的模块中的内容,放到全局对象exports上,然后在到别的模块里调用。
引用模块的关键字是require。
require.js
var jieshou=require("./exports.js");
var jieshou2=require("./exports.js");
jieshou.myfun();
jieshou2.myfun();
exports.js
var myvar="我是党云龙";
exports.myvar=myvar;
var myfun=function myfun(){
console.log("我就是燕十三!")
}
exports.myfun=myfun;
这里就有一个问题,因为你多次require出来的内容是不会重复运行的,如果你想要两个一样的模块,但是输出不一样的内容,你就需要给他定义成一个方法,
然后require以后再执行就可以了。
事件绑定
nodejs通过addListener或者on来绑定事件,他俩一样。
在nodejs中有一个EventEmitter类,你所有绑定的内容,实际上都是走这个类。
绑定事件的方法除了addListener,on以外,还有once,removeListener,removeAllListener,
setMaxListener(设置最大的绑定数量,node默认只能绑定10个事件),listeners(获取所有的绑定的事件),emit(手动触发指定的事件)
listenerCount(获取绑定的事件数量)
var http=require("http"); //引用http模块
var server=http.createServer(); //创建http服务器并将该服务器赋值给变量server
server.on("request",function(req,res){
if(req.url!=="/favicon.ico"){
console.log("接收到客户请求")
}
});
// 绑定多个事件
server.on("request",function(req,res){
if(req.url!=="/favicon.ico"){
console.log("req.url")
}
res.end();
});
server.on("request",function(req,res){
if(req.url!=="/favicon.ico"){
console.log("req.url")
}
res.end();
});
server.listen(1337,"127.0.0.1");
移除事件使用removeListener方法。
var http=require("http"); //引用http模块
var server=http.createServer(); //创建http服务器并将该服务器赋值给变量server
var myfun=function(req,res){
if(req.url!=="/favicon.ico"){
console.log("接收到客户请求")
}
};
server.on("request",myfun);
server.removeListener("request",myfun);
server.listen(1337,"127.0.0.1");
要主意的是,evenEmitter对象本身是具有两个事件的,一个是绑定事件的时候触发的事件,另一个是移除的。
var http=require("http"); //引用http模块
var server=http.createServer(); //创建http服务器并将该服务器赋值给变量server
server.on("removeListener",function(e,f){
console.log("对"+e+"事件取消事件处理函数");
console.log(f);
})
server.on("newListener",function(e,f){
console.log("对"+e+"事件添加事件处理函数");
console.log(f);
})
var myfun=function(req,res){
if(req.url!=="/favicon.ico"){
console.log("接收到客户请求")
}
};
server.on("request",myfun);
server.removeListener("request",myfun);
server.listen(1337,"127.0.0.1");