Node.js中HTTP模块和事件模块的详细说明
Node.js的Http服务器
通过使用HTTP模块的底层API,Node.js允许我们创建服务器和客户端。当我们第一次开始学习节点时,我们都遇到了以下代码:
复制代码如下: var http=require(' http ');函数(req,RES){ RES . end(' Hello World \ n ');}).听(3000,' 127 . 0 . 0 . 1 ');console . log(' http://127 . 0 . 0 . 1:3000处的服务器滑稽');
该代码包含http模块的信息,即:
1.从Node.js '的核心请求HTTP模块,并给出一个变量在以后的脚本中使用。然后脚本可以访问一些方法来使用HTTP '通过Node.js '。
2.使用“创建服务器”创建新的网络服务器对象
3.该脚本将一个匿名函数传递给服务器,告诉web服务器每当收到请求时会发生什么
4.脚本的第四行定义了web服务器的端口和主机,这意味着可以使用“http://127.0.0.133603000”来访问服务器
Http头
对于每个HTTP请求和响应,都会发送一个HTTP头,它会发送附加信息,包括内容类型、服务器发送响应的日期和HTTP状态代码
Http头包含了很多信息,以下是我百度主页中包含的http头的信息:
由于我的百度主页增加了更多的网站,这里的数据可能与读者的不同。由此我们可以看出,百度是一个web服务器还是BWS/1.1
下面是上面代码的http头信息:
Node.js中的重定向
在节点中,我们可以很容易地创建一个简单的服务器,将访问者重定向到另一个网页。标准如下:
1.向客户发送301响应代码,告知客户资源已移动到另一个位置;2.发送位置标题,告诉客户重定向到哪里。
相关代码如下:
复制代码如下: var http=require(' http ');http.createServer(函数(req,res) { res.writeHead(301,{ ' Location ' : ' Http :///example-2.com/web ' });RES . end();}).听(3000,' 127 . 0 . 0 . 1 ');console . log(' http://127 . 0 . 0 . 1:3000处的服务器滑稽');
打开浏览器访问http://127.0.0.1:3000页面将被重定向。
响应不同的请求
Node.js不仅可以创建单个响应,还可以为各种类型的请求向应用程序添加一些路由。Node通过使用URL模块使这变得简单明了。网址模块使我们能够读取网址,分析它,并对输出做一些事情。
复制代码如下: var URL=require(' URL ');var request URl=' http://example.com :1234/path?查询=字符串#hash '
现在,我们可以分析请求的网址并拦截它。例如,要获取主机名,我们可以输入:
复制代码如下:url。解析(requesturl)。主机名
此时,他将返回‘example.com’
获取端口号可以输入:
复制代码如下:url。解析(requesturl)。港口。他将返回“1234”
事件模块
Node.js被认为是实现并发的最佳方式。事件模块是Node.js的核心,许多其他模块使用它来围绕事件构建函数。由于Node.js在一个线程中运行,所以任何同步代码都会被阻塞。因此,在编写Node.js代码时,我们应该考虑一些简单的规则:
1.不要阻塞——`Node.js `是单线程的。如果代码阻塞,其他一切都将停止。2.快速返回——。手术应该会很快恢复。如果不能快速返回,应该将其迁移到另一个进程。事件模块允许开发人员为事件设置监听器和处理器。在客户端js中,我们可以为click事件设置一个监听器,然后在事件发生时执行一些操作:
复制代码如下: var tar=document . getelementbyid(' target ');tar.addEventListener('click ',function () { alert('click事件被激发,目标被单击');},false);
当然,这是一个没有考虑IE兼容性的例子。Node.js最常见的关键事件是网络事件,包括:
1.来自web服务器2的响应。从文件3读取数据。使用事件模块从数据库返回数据,我们必须首先创建一个新的事件发射器实例:
复制代码如下: var event emitter=require(' events ')。eventemittervar test=new event emitter();
一旦将上述内容添加到代码中,就可以添加事件和侦听器。我们可以发送如下事件,例如:
复制代码如下:test.emit ('msg ','节点发送的消息');
第一个参数是描述侦听器匹配事件的字符串
为了接收消息,您必须添加一个侦听器,该侦听器在事件被触发时处理该事件,例如:
复制代码如下:test.on ('message ',function(data){ console . log(data);});
事件模块addListener/on、one、removeListener、removeAllListeners、emit和其他基本事件监视模式。它不同于前面DOM树上的事件,因为它没有属于DOM的事件行为,比如冒泡和逐层抓取,也没有处理事件传输的方法,比如preventDefault()、stoppermipropagement()、stoppermipropagement()等。
1.类事件。EventEmitter:通过require(' events '). EventEmitter . 2 . emitter . on(event,listener)获取event emitter类:在特定事件的listener数组尾部添加一个listener。返回发射器,方便链调用,下同。
3.发射器。RemoveListener(事件,侦听器)从事件的侦听器数组中删除侦听器
4.emitter.listeners(event)返回指定事件的侦听器数组。有关更多详细信息,请参见Node.js API文档。
以下代码显示了一条可以在5秒钟内自毁的机密信息:
复制代码如下: var event emitter=require(' events ')。eventemittervar secretMessage=new发射器();
secretMessage.on('message ',function(data){ console . log(data);});
secretMessage.on('自毁',function () { console.log('消息被销毁!');});
secretMessage.emit('message ','这是一条机密消息。它将在5s '内自行卸载;
setTimeout(function(){ secretmessage . emit('自毁');},5000);
在这个脚本中,发送了两个事件,并且有两个侦听器。当脚本运行时,会发生一个消息事件,并由“消息”处理器处理
EventEmitter在Node.js中无处不在,所以掌握它非常重要。Node.js通过I/O操作获取数据,广泛使用Events模块支持异步编程
常见问题:
问:一个事件的最大听众数量有限制吗?答:默认情况下,如果一个事件有10个侦听器,它将发出警告。但是,这个数字可以通过使用emitter.setMaxListener(n)来更改
问:我可以听所有发出的事件吗?答:不。我们需要为每个我们想要响应的事件创建监听器
版权声明:Node.js中HTTP模块和事件模块的详细说明是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。