node.js建立伺服器,並解析不同資料
阿新 • • 發佈:2018-12-09
要點:
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('老哥,安排好了'); });
啟動伺服器;
在瀏覽器中請求效果: