亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

Node.js中HTTP模塊與事件模塊詳解

2019-11-20 13:55:34
字體:
來源:轉載
供稿:網友

Node.js的http服務器

通過使用HTTP模塊的低級API,Node.js允許我們創建服務器和客戶端。剛開始學node的時候,我們都會遇到如下代碼:

復制代碼 代碼如下:

var http = require('http');
http.createServer(function (req,res) {
    res.end('Hello World/n');
}).listen(3000,"127.0.0.1");
console.log("Server funning at

這段代碼的包括了http模塊的信息,意思是:

1.從`Node.js`的核心請求HTTP模塊并賦予一個變量,以便在以后的腳本中使用。
于是腳本就可以訪問一些方法來通過`Node.js`使用`HTTP`。

2.使用`createServer`創建新的web服務器對象

3.腳本將一個匿名函數傳遞給服務器,告訴web服務器對象每當其接收到請求時會發生的是什么

4.腳本第4行定義了web服務器的端口和主機,這意味著可以使用`http://127.0.0.1:3000`
來訪問服務器

Http頭

對于每個HTTP請求和響應,都會發送HTTP頭,HTTP頭發送的是附加的信息,包括內容類型、服務器發送響應的日期以及HTTP狀態碼

http頭包含了許多信息,以下是我的百度首頁包含的http頭的信息:

由于我的百度首頁添加了較多的網站,所以這里的數據和讀者們的可能不一樣。從中我們可以看出百度是web服務器是BWS/1.1

下面是剛才上面那段代碼的http頭部信息:

Node.js中的重定向

在node中,我們可以很容易地創建一個簡單的服務器將訪問者重定向到另外一個Web頁面上,其準則如下:

1.給客戶發送301響應代碼,告訴客戶,資源已經移到另一個位置了;
2.發送一個位置頭告訴客戶重定向到哪里。

相關代碼如下:

復制代碼 代碼如下:

var http = require('http');
http.createServer(function (req,res) {
    res.writeHead(301,{
        'Location':'Http://example-2.com/web'
    });
    res.end();
}).listen(3000,'127.0.0.1');
console.log("Server funning at

打開瀏覽器訪問http://127.0.0.1:3000頁面會被重定向。

響應不同的請求

Node.js不單可以創建單一的響應,對于多種類型的請求,我們需要給應用程序加一些路由。Node通過使用URL模塊讓這一切直截了當。URL模塊使我們可以讀取URL、分析它然后對輸出做一些事情。

復制代碼 代碼如下:

var url = require('url');
var requestURL = "

現在,我們可以分析請求的URL并從中截取內容,例如,要想獲得主機名稱,我們可以輸入:

復制代碼 代碼如下:

url.parse(requestURL).hostname

這時,他將返回"example.com"

取得端口號可以輸入:

復制代碼 代碼如下:

url.parse(requestURL).port

他將返回“1234”

事件模塊

Node.js被認為是實現并發的最佳方法。Events(事件)模塊是Node.js的核心,許多其他模塊用它來圍繞著事件架構功能。由于Node.js運行于單一的線程中,任何同步代碼都是阻塞的。所以,在編寫Node.js代碼的時候我們要考慮一些簡單的規則:

1.別阻塞――`Node.js`是單線程的,如果代碼阻塞的話所有其他一切都停止了
2.快速返回――操作應當快速返回。如果不能快速返回,就應當將其遷移到另一個進程中
Events模塊讓開發人員可以為事件設置偵聽器和處理器。在客戶端js中,我們可以對單擊事件設置一個監聽器,然后在事件發生時執行一些事情:

復制代碼 代碼如下:

var tar = document.getElementById("target");
tar.addEventListener("click", function () {
   alert("click event fired,target was clicked");
},false);

當然,這是在不考慮IE兼容性的一個例子,Node.js重點事件更常見的是網絡事件,包括:

1.來自web服務器的響應
2.從文件讀取數據
3.從數據庫返回數據
使用Events模塊我們首先要創建一個新的EventEmitter實例:

復制代碼 代碼如下:

var EventEmitter= require('events').EventEmitter;
var test = new EventEmitter();

一旦在代碼中加入上述內容,就可以添加事件和偵聽器了,我們可以按如下方法發送事件,比如:

復制代碼 代碼如下:

test.emit('msg','the message send by node');

第一個參數是對事件進行描述的字符串,以便用于偵聽器的匹配

為了接收消息,就必須添加偵聽器,偵聽器在事件觸發時處理它,例如:

復制代碼 代碼如下:

test.on('message',function(data){
    console.log(data);
});

Events模塊addListener/on,once,removeListener,removeAllListeners,emit等基本的事件監聽模式的方法實現。它與前端DOM樹上的事件并不相同,因為它不存在冒泡,逐層捕獲等屬于DOM的事件行為,也沒有preventDefault()、stopPropagation()、 stopImmediatePropagation() 等處理事件傳遞的方法。

1.類: events.EventEmitter:通過 require('events').EventEmitter 獲取 EventEmitter 類。
2.emitter.on(event, listener):添加一個 listener 至特定事件的 listener 數組尾部。 返回 emitter,方便鏈式調用,下同。

3.emitter.removeListener(event, listener)從一個事件的 listener 數組中刪除一個 listener

4.emitter.listeners(event)返回指定事件的 listener 數組
更多詳情見:Node.js API 文檔

以下代碼展示了一條能在5秒內自我毀滅的機密消息:

復制代碼 代碼如下:

var EventEmitter = require('events').EventEmitter;
var secretMessage = new EventEmitter();

secretMessage.on('message', function (data) {
   console.log(data);
});

secretMessage.on('self destruct', function () {
    console.log('the msg is destroyed!');
});

secretMessage.emit('message','this is a secret message.It will self deatruct in 5s');

setTimeout(function () {
   secretMessage.emit('self destruct');
},5000);

在這段腳本中,發送了兩個事件,有兩個偵聽器。當腳本運行時,消息事件就發生,并由“message”處理器處理

在Node.js中到處都用EventEmitter,所以掌握它是很重要的。Node.js通過I/O操作獲得的數據并廣泛使用Events模塊來支持異步編程

常見問題解答:

問:對于一個事件是否有最大偵聽器數量的限制?
答:默認情況下,如果事件有操作10個偵聽器,它會發出警告。不過,可以使用emitter.setMaxListener(n)來更改這個數量

問:是否可以偵聽所有發送出來的事件?
答:不能。我們需要給每個想要響應的事件創建偵聽器

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久噜噜噜久久久| 欧美激情精品久久久久久黑人| 日本不卡高字幕在线2019| 亚洲美女av在线| 亚洲美女av网站| 久久久久久国产精品美女| 亚洲男人的天堂在线播放| 国产成+人+综合+亚洲欧美丁香花| 日本成熟性欧美| 国产亚洲精品美女久久久| 日韩激情av在线播放| 国模私拍一区二区三区| 91久久精品国产91久久| 在线视频欧美性高潮| 亚洲亚裔videos黑人hd| 国产精品午夜一区二区欲梦| 亚洲免费伊人电影在线观看av| 日韩精品视频在线播放| 亚洲精品99999| 国产精品∨欧美精品v日韩精品| 久久久999国产| 国产日韩精品电影| 亚洲第一页中文字幕| 成人免费大片黄在线播放| 欧美日韩亚洲一区二区三区| 国产va免费精品高清在线观看| 中文字幕国产精品久久| 精品人伦一区二区三区蜜桃网站| 亚洲在线www| 久久成人在线视频| 91九色国产视频| 欧美激情亚洲视频| 欧美激情三级免费| 欧美性猛交视频| 亚洲福利视频久久| 美女av一区二区| 久久国产精品亚洲| 中文字幕久久久| 欧美日韩亚洲天堂| 91视频-88av| 在线观看亚洲视频| 日本午夜人人精品| 欧美午夜片在线免费观看| 日韩在线国产精品| 国产亚洲精品高潮| 亚洲精品黄网在线观看| 久久综合电影一区| 欧美亚洲伦理www| 欧美日韩中文字幕综合视频| 久久成人这里只有精品| 日韩a**中文字幕| 亚洲福利影片在线| 亚洲国产精品嫩草影院久久| 日韩大陆毛片av| 日韩黄色高清视频| 国产精品美腿一区在线看| 91sao在线观看国产| 91免费人成网站在线观看18| 国产丝袜高跟一区| 97在线精品视频| 久久久久久网址| 久久亚洲精品视频| 亚洲女人被黑人巨大进入| 久久精品在线播放| 欧美激情亚洲自拍| 日韩视频在线免费观看| 国内自拍欧美激情| 久久久久久久久国产精品| 热久久视久久精品18亚洲精品| 91超碰中文字幕久久精品| 久久久成人精品| 国产精品免费看久久久香蕉| 久久夜色精品国产亚洲aⅴ| 日韩性生活视频| 色av中文字幕一区| 91精品国产自产在线老师啪| 欧美一区亚洲一区| 色中色综合影院手机版在线观看| 亚洲va电影大全| xvideos国产精品| 久青草国产97香蕉在线视频| 国产一区玩具在线观看| 51久久精品夜色国产麻豆| 91久久精品在线| 国产欧美精品一区二区三区-老狼| 国产成人av在线播放| 中文字幕精品—区二区| 俺也去精品视频在线观看| 91亚洲精品一区二区| 日韩电影免费在线观看| 久久中文字幕一区| 国产精品扒开腿做爽爽爽的视频| 川上优av一区二区线观看| 久久影视电视剧免费网站| 美女999久久久精品视频| 欧美性猛交视频| 久久精彩免费视频| 日韩中文字幕在线视频播放| 国产亚洲成av人片在线观看桃| 亚洲综合视频1区| 国产午夜精品免费一区二区三区| 精品成人国产在线观看男人呻吟| 精品久久久久久亚洲精品| 国产亚洲精品美女久久久| 成人黄色网免费| 亚洲精品免费网站| 亚洲开心激情网| 久久久爽爽爽美女图片| 97国产suv精品一区二区62| 成人久久久久爱| 国产91精品高潮白浆喷水| 日韩在线高清视频| 国产精品一区二区三区久久久| 久久激情视频久久| 日韩视频在线免费观看| 亚洲精品美女在线| 国产精品男人爽免费视频1| 欧美在线精品免播放器视频| 国产精品在线看| 日韩电影免费观看中文字幕| 久久亚洲一区二区三区四区五区高| 欧美国产极速在线| 国产精品一久久香蕉国产线看观看| 亚洲欧美一区二区三区在线| 日韩中文字幕网站| 日韩久久免费电影| 26uuu久久噜噜噜噜| 国产在线一区二区三区| 中文字幕亚洲一区二区三区| 亚洲欧洲xxxx| 国产欧美日韩视频| 色多多国产成人永久免费网站| 日产精品99久久久久久| 日本欧美中文字幕| 欧美日韩第一页| 91午夜理伦私人影院| 亚洲成人久久电影| 中文字幕在线视频日韩| 亚洲欧美国产一本综合首页| 欧美一区二区三区图| 欧美精品激情在线观看| 91热精品视频| 黑人巨大精品欧美一区二区| 狠狠躁18三区二区一区| 国产精品国产三级国产aⅴ浪潮| 久久免费少妇高潮久久精品99| 日韩欧美999| 伊人青青综合网站| 亚洲激情视频在线| 久久精品国产久精国产思思| 九九热99久久久国产盗摄| 亚洲www永久成人夜色| 国产精品久久久久aaaa九色| 欧美夫妻性生活视频| 成人字幕网zmw| 久久青草精品视频免费观看| 久久精品视频免费播放| 欧美激情视频在线观看| 在线看国产精品| 97超视频免费观看| 综合欧美国产视频二区| 欧美日韩国产精品一区| 欧美精品第一页在线播放| 欧美激情在线一区|