nodejs和express入门教程

从前端到后端,龙哥讲nodejs基础(三)

2020-12-03  本文已影响0人  党云龙

有话说在前面


我们之前讲过了,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");
上一篇 下一篇

猜你喜欢

热点阅读