1. 程式人生 > >菜鳥小白使用node.js搭建簡單伺服器(可請求圖片,html,js,css,json等檔案)

菜鳥小白使用node.js搭建簡單伺服器(可請求圖片,html,js,css,json等檔案)

使用node.js搭建簡單伺服器

前言:以下步驟在安裝好node的環境前提下進行,未安裝者請先安裝好node,再嘗試
注:如若以下程式碼存在錯誤,歡迎讀者指出
搭建步驟如下:

一、建立server.js(主要用於搭建伺服器的檔案)

const http = require('http');
const fs = require('fs');
const path = require('path');
const url = require('url');
var mime = require('./mime'); // 載入我們的mime.js
var config = require
('./config'); const server = http.createServer(function(req,res){ var pathName = url.parse(req.url).pathname; // 獲取檔名"/xxx" // 對中文進行解碼,防止亂碼 pathName = decodeURI(pathName); // 獲取資源的絕對路徑 var realFilePath = path.resolve(__dirname+ pathName); console.log(realFilePath); // 獲取對應檔案的文件型別
var ext = path.extname(pathName); // 獲取字尾名,如'.html' ext = ext?ext.slice(1): 'notKnow'; // 取掉.符號 //通過和mine.js裡面設定好的正則進行匹配,判斷當前請求的圖片是否為圖片 if (ext.match(config.Expires.fileMatch)) { var expires = new Date(); expires.setTime(expires.getTime() + config.Expires.maxAge * 1000
); // 設定響應頭 res.setHeader("Expires", expires.toUTCString()); res.setHeader("Cache-Control", "max-age=" + config.Expires.maxAge); } // 定義未知文件的型別MIME var contentType = mime[ext] || "text/plain"; // 字尾名存在就進行對映,不存在就是'text/plain' //從檔案系統中都去請求的檔案內容 fs.readFile(pathName.substr(1),function(err, data) { if(err) { console.log(err); //HTTP 狀態碼 404 : NOT FOUND //Content Type:text/plain res.writeHead(404,{'Content-Type': contentType}); } else { //HTTP 狀態碼 200 : OK //Content Type:text/plain res.writeHead(200,{'Content-Type': contentType}); var content = fs.readFileSync(realFilePath,"binary"); //解釋圖片時,格式必須為 binary 否則會出錯 //寫會相應內容 res.write(content,"binary"); //解釋圖片時,格式必須為 binary,否則會出錯 } //傳送響應資料 res.end(); }); }).listen(8081); console.log('Server running at http://127.0.0.1:8081/');

二、相關require檔案
1、config.js程式碼如下:

exports.Expires = {
    fileMatch: /^(jpeg|gif|png|jpg)$/ig, // 這只是個例項
    maxAge: 60 * 60 * 24 * 365
};

2、mime.js(儲存用到的mime型別)程式碼如下:

module.exports = {
    "css": "text/css",
    "gif": "image/gif",
    "html": "text/html",
    "ico": "image/x-icon",
    "jpeg": "image/jpeg",
    "jpg": "image/jpeg",
    "js": "text/javascript",
    "json": "application/json",
    "pdf": "application/pdf",
    "png": "image/png",
    "svg": "image/svg+xml",
    "swf": "application/x-shockwave-flash",
    "tiff": "image/tiff",
    "txt": "text/plain",
    "wav": "audio/x-wav",
    "wma": "audio/x-ms-wma",
    "wmv": "video/x-ms-wmv",
    "xml": "text/xml"
};

三、執行
(1)通過cmd命令跳轉到對應的專案檔案目錄下,執行命令node server.js
(2) 在瀏覽器進行訪問,在url欄中輸入http://127.0.0.1:8081/index.html(資料夾下要有index.html檔案)