1. 程式人生 > >node.js建立伺服器,並解析不同資料

node.js建立伺服器,並解析不同資料

要點:

1.通過引入核心模組,來進行檔案的讀取和伺服器的建立,並呼叫相應模組的API,進行想要的操作。

2.不同的檔案型別進行不同的解析,主要通過Content-Type(多用途網際網路郵件拓展)進行不同的定義,如html對應text/html,注意編碼方式的宣告,伺服器預設是utf-8,但是瀏覽器編碼方式是跟當前作業系統是一致的,win10中文作業系統是gbk編碼方式,所以會造成亂碼。

3.通過node啟動伺服器後,修改了被讀取的檔案,不需要重啟伺服器,因為他是動態讀取檔案的,通過之前建立的聯絡。

程式碼:

var http = require('http');
var fs = require('fs');
// 引入兩個核心庫

var server = http.createServer();

server.on('request',function(req,res){
	var url = req.url;
    // 獲取輸入的請求字串url

    if(url === '/'){
    	//‘/’後是請求的路徑

    	fs.readFile('./reource/halloword.html',function(err,data){
    		if(err){
    			res.setHeader('Content-Type','text/plain; charset=utf-8');
    			res.end('老哥,沒讀出來,是不是路徑或者檔名寫錯了啊');
    		}else{
    			//data存取的是讀取到的內容,是二進位制的資料,通過toString轉為字串
    			//res.end()支援兩種格式,二進位制格式和字串型別
    			res.setHeader('Content-Type','text/html; charset=utf-8');
    			// 注意和上面個text/plain的區別,通過text/html宣告html型別檔案
    			res.end(data);
    		}
    	});
    }else if(url === '/pushu'){
	    	fs.readFile('./reource/pushu.jpeg',function(err,data){
    		if(err){
    			res.setHeader('Content-Type','text/plain; charset=utf-8');
    			res.end('老哥,沒讀出來,是不是路徑或者檔名寫錯了啊');
    		}else{
    			//data存取的是讀取到的內容,是二進位制的資料,通過toString轉為字串
    			//res.end()支援兩種格式,二進位制格式和字串型別
    			res.setHeader('Content-Type','image/jpeg');
    			// 圖片反而不能宣告utf-8編碼格式他有特定的編碼格式
    			res.end(data);
    		}
    	});
	 }
});

server.listen(3000,function(){
	console.log('老哥,安排好了');
});

啟動伺服器;

在瀏覽器中請求效果: