使用 Node 進(jìn)行 Web 開發(fā) 加載 http模塊
-
瀏覽器機(jī)制
- (1) 用戶通過瀏覽器發(fā)送一個(gè)http請(qǐng)求指定的主機(jī)
- (2) 服務(wù)器接收到請(qǐng)求后,對(duì)該請(qǐng)求進(jìn)行分析和處理
- (3) 服務(wù)器處理完成后,返回對(duì)應(yīng)的數(shù)據(jù)到用戶的機(jī)器
- (4) 瀏覽器接受服務(wù)器返回的數(shù)據(jù),并根據(jù)接收的數(shù)據(jù)進(jìn)行分析和處理
總結(jié):由客戶端發(fā)送一個(gè)HTTP請(qǐng)求到指定的服務(wù)器->服務(wù)端接收并處理請(qǐng)求->返回?cái)?shù)據(jù)給客戶端
http模塊 - require('http')
-
首先第一步必須要 var http = require('http');
-
第二步創(chuàng)建對(duì)象: var server = http.createServer([requestListener]);
- 創(chuàng)建并返回一個(gè)HTTP服務(wù)器對(duì)象
- requestListener : 監(jiān)聽到客戶端連接的回調(diào)函數(shù)
-
server.listen(port,[hostname],[backlog],[callback])
- 監(jiān)聽客戶端連接請(qǐng)求:只有當(dāng)調(diào)用了listen方法后,服務(wù)器才開始工作
- port:監(jiān)聽端口
- hostname:主機(jī)名(IP/域名)
- backlog:允許的最大并發(fā)數(shù),一般情況不填
- callback: 調(diào)用listen方法并成功開啟監(jiān)聽以后,會(huì)觸發(fā)一個(gè)listening事件。callback將作為該事件的執(zhí)行函數(shù)。
var http = require('http');
var server = http.createServer();
server.listen(8888,'localhost',function(){
// console.log('開始監(jiān)聽'); //要是不寫回調(diào)函數(shù)的話可以直接用listening
})
server.on('listening',function(){
console.log('開始監(jiān)聽中');
})
-
server.on('listening',function(){}) 等價(jià)于listen后面的回調(diào)函數(shù)
server.on('listening',function(){
console.log('開始監(jiān)聽中');
})
-
server.on('error',function(err){console.log(err)}) 當(dāng)服務(wù)器開啟失敗的時(shí)候觸發(fā)事件
- 參數(shù) err: 具體的錯(cuò)誤對(duì)象
server.on('error',function(err){
console.log(err);
})
-
request事件 :當(dāng)有客戶端發(fā)送請(qǐng)求到該主機(jī)和端口的請(qǐng)求時(shí)觸發(fā)
- 參數(shù) request : 獲取這次請(qǐng)求的用戶信息
- 參數(shù) reponse : 通過它向請(qǐng)求的客戶端返回信息
var http = require('http');
var server = http.createServer();
server.listen(8888,'127.0.0.1',function(){ //監(jiān)聽端口號(hào)和,主機(jī)name
});
server.on('request',function(req,rep){ //req表示用戶信息,res表示輸出信息
console.log(req.httpVersion); //獲取到http協(xié)議版本
console.log(req.url); //獲取到URL就是.com后面的/地址
console.log(req.method); //獲取到請(qǐng)求的方法
console.log(req.headers); //獲取到請(qǐng)求的頭信息
})
response開始
var http = require('http');
var server = http.createServer(function(req,res){
//req表示請(qǐng)求,接后續(xù)req.method和req.url
//res表示結(jié)果,接后續(xù)的res.write(),res.end()里面只能是字符串
});
server.listen(8888,'127.0.0.1',function(err){
console.log(err);
}) //必須要有監(jiān)聽
//要是createServer里面有回調(diào)函數(shù)了。此函數(shù)就不用寫了
server.on('request',function(req,res){
//設(shè)置頭信息??梢圆粚憽N疫@個(gè)就是表示解析成純文本
res.writeHead(200,{'content-type':'text/plain'});
//要是HTML可寫成:
res.writeHead(200, {'content-type': 'text/html;charset=utf-8'})
//輸出什么,后面加編碼不加默認(rèn)就是utf-8
res.write("<h1>技術(shù)在提高</h1>","utf-8");
//結(jié)束的時(shí)候語句
res.end();//最后必須寫end
})
- 方便記憶 第一步加載http模塊 var http = require('http');
- 第二部因?yàn)镠TTP復(fù)雜,所以需要var server = http.createServer();
- 監(jiān)聽端口 server.listen(端口號(hào),主機(jī)名,回調(diào)函數(shù)或者linstening方法)
- 捕獲到請(qǐng)求 server.on('request',function(rep,res){
- console.log(rep.headers);
- console.log(rep.method);
- console.log(rep.url);
- res.writeHead(200,頭信息)
- res.write('輸出內(nèi)容','utf-8');
- res.end(); //必須添加
- })
- 簡稱4-3-3步驟