搭建一個簡單的服務器html
經過下面的代碼能夠搭建一個簡單的服務器:前端
var http = require("http"); http.createServer(function(request,response){ response.writeHead(200,{"Content-Type":"text/plain"}); response.write("hello my first demo"); response.end(); }).listen("8080"); console.log("server start");
搭建一個簡單的服務器須要依賴http模塊,經過http.createServer()來生成一個服務器實例經過listen()來啓動這個實例。node
http.createServer()參數是一個函數,這個函數的兩個參數分別爲request和response,request記錄着從前端到服務器的各類信息,response記錄從服務器端到前端的各類信息。服務器
request有三個重要的屬性:request.url:表示請求的地址,request.method:表示請求的方式,request.headers:表示全部的請求頭信息。函數
另外咱們能夠經過request.setEncoding()來設置請求的編碼。post
咱們也能夠經過on()來爲request的事件來註冊處理函數,request.on()有兩個事件分別爲data和end,data表示正在接收數據,end表示數據接收完成,咱們從前臺向服務器發送數據經常使用的方式就是get和post,對於get請求咱們能夠直接從url中提取出傳輸的數據,而post的數據通常是放在請求體中的此時咱們就須要data這個事件來獲取前臺的發送數據,使用方式爲:ui
var postData = ""; request.on("data",function(data){ postData +=data; }); request.on("end",function(){ console.log(postData); });
在開始的例子中response.writeHead用來設置http返回的頭信息,write()的參數表示要寫入的內容,end()用來將write()的內容寫入到response對象中。this
listen()函數表示啓動當前的http實例,listen()函數能夠接收兩個參數,第一個參數表示要監聽的端口,第二個參數表示要監聽的地址,也就是隻有請求地址符合listen()的設置,http.createServer()裏面的函數纔會執行,listen()的默認地址爲localhost。編碼
處理不一樣的請求url
上面的例子對於全部的請求執行的操做都是同樣的,在實際開發中這個狀況是不存在,咱們須要針對不一樣的URL來作不一樣的處理,此時咱們就須要對request對象的url屬性進行判斷了:
var http = require("http"); var demo = http.createServer(function(request,response){ var path = request.url; console.log(path); switch(path){ case "/homepage": response.writeHead(200,{"Content-Type":"text/plain"}); response.write("hello this is homepage"); response.end(); break; case "/details": response.writeHead(200,{"Content-Type":"text/plain"}); response.write("hello this is details"); response.end(); break; default: response.writeHead(404,{"Content-Type":"text/plain"}); response.write("sorry"); response.end(); break; } }).listen("8080"); console.log("server start");
返回一個html頁面
上面的這些咱們只是返回幾個字而已,正常狀況下咱們返回的一般是一個完整的頁面,若是咱們在response.write()中拼一個html頁面出來,就會很麻煩並且很容易出錯,此時咱們就能夠利用fs模塊來簡化這個操做:
var http = require("http"); var fs = require("fs"); var demo = http.createServer(function(request,response){ var path = request.url; if(path=="/register"){ fs.readFile("register.html",function(err,data){ response.writeHead(200,{"Content-Type":"text/html; charset=utf-8"}); response.write(data); response.end(); }); }else{ response.writeHead(200,{"Content-Type":"text/plain"}); response.write("hello node"); response.end(); } }).listen("8080"); console.log("server start");