http/fs/url
1 導(dǎo)入模塊
var http = require('http'),
fs = require('fs'),
url = require('url');
2 創(chuàng)建一個(gè)服務(wù)(有一個(gè)服務(wù)員)
var server = http.createServer(function(request,response){
//當(dāng)客戶端向服務(wù)器端的當(dāng)前服務(wù)(端口號(hào)是80的這個(gè)服務(wù))發(fā)送一個(gè)請(qǐng)求,并且當(dāng)前服務(wù)已經(jīng)成功接收到這個(gè)請(qǐng)求后,執(zhí)行這個(gè)回調(diào)函數(shù)
//服務(wù)創(chuàng)建成功后如何向服務(wù)器發(fā)送請(qǐng)求?
1) 在瀏覽器中輸入:http://localhost:端口號(hào)/
2)在瀏覽器中輸入:http://本機(jī)ip地址:端口號(hào)/
3)webstome默認(rèn)端口號(hào):63342
2.1 參數(shù)
1) request (請(qǐng)求):存放的是所有客戶端的請(qǐng)求信息,包含客戶端通過(guò)問(wèn)號(hào)傳參的方式傳遞給服務(wù)器的數(shù)據(jù)內(nèi)容
//request的使用方法
①request.url(存放的是客戶端請(qǐng)求的文件資源目錄的名稱以及傳遞給服務(wù)器的參數(shù))-->
例如:
客戶端請(qǐng)求的地址是:http://127.0.0.1:80/index.html?name=jk&age=20
服務(wù)器端通過(guò)request.url得到/index.html?name=jk&age=20
此時(shí)需要應(yīng)用到下一節(jié)講的url方法進(jìn)行解析
var urlObj = url.parse(request.url,true)
//獲取常用值
var pathname = urlObj.pathname;
var query = urlObj.query
//根據(jù)請(qǐng)求的URL地址(具體的是根據(jù)地址中的pathname)獲取到對(duì)應(yīng)的資源文件中的源代碼(即I/O操作)
此時(shí)需要應(yīng)用fs模塊
//同步讀取指定文件中的內(nèi)容(文件中的內(nèi)容讀取不完,不執(zhí)行下面的操作)
fs.readFileSync([path+name],[encode])
var con = fs.readFileSync('../01.html','utf-8')
此時(shí)con即為讀取的內(nèi)容,將讀取的內(nèi)容返回給客戶端,需要用到參數(shù)response
2) response(響應(yīng)):提供了向客戶端返回內(nèi)容和數(shù)據(jù)的方法
①response.wirte(con);-->向客戶端返回內(nèi)容
//必須加上response.end
②response.end():-->告訴服務(wù)器響應(yīng)結(jié)束了
③以上兩種方法可以簡(jiǎn)寫 response.end(con);
});
3 為服務(wù)監(jiān)聽一個(gè)端口(發(fā)一個(gè)胸牌),監(jiān)聽的端口不能重復(fù)
server.listen(80,function(){
//當(dāng)服務(wù)創(chuàng)建成功,并且端口號(hào)監(jiān)聽成功之后執(zhí)行這個(gè)回調(diào)函數(shù)
console.log('server is success,listening on 80 port!');
});
URL模塊中提供了一個(gè)方法:url.parse(),用來(lái)解析URL地址的,詳情請(qǐng)看下一節(jié)