Node.js HTTP文件

2018-02-17 11:25 更新

服務(wù)基礎(chǔ)HTML

以下部分顯示了如何創(chuàng)建一個(gè)簡(jiǎn)單的Web服務(wù)器,從文件夾返回HTML文件。

創(chuàng)建一個(gè)簡(jiǎn)單的HTML文件,名為index.html,我們計(jì)劃返回在服務(wù)器上的每個(gè)請(qǐng)求GET'/'。

 

 
   You are looking lovely! 
 
 

以下代碼顯示如何向客戶端提供靜態(tài)html文件。

var http = require("http"); 
var fs = require("fs"); 
//from o2fo.com
function send404(response) { 
    response.writeHead(404, { "Content-Type": "text/plain" }); 
    response.write("Error 404: Resource not found."); 
    response.end(); 
} 

var server = http.createServer(function (req, res) { 
    if (req.method == "GET" && req.url == "/") { 
        res.writeHead(200, { "content-type": "text/html" }); 
        fs.createReadStream("./public/index.html").pipe(res); 
    } else { 
        send404(res); 
    } 
}).listen(3000); 

console.log("server running on port 3000"); 

如果啟動(dòng)服務(wù)器(運(yùn)行節(jié)點(diǎn)server.js)并在http://localhost:3000上打開(kāi)瀏覽器,你將看到我們之前創(chuàng)建的HTML頁(yè)面。

服務(wù)目錄

首先,創(chuàng)建一個(gè)簡(jiǎn)單的客戶端JavaScript文件,在HTML加載完成后附加到正文。

我們計(jì)劃從服務(wù)器請(qǐng)求此JavaScript文件。

window.onload = function () { 
    document.body.innerHTML += "Talk JavaScript with me"; 
}

通過(guò)在< head>中添加腳本標(biāo)記,加載客戶端JavaScript文件,以修改我們的簡(jiǎn)單HTML文件。 

 

為了支持這個(gè)JavaScript加載,我們需要使用path模塊來(lái)解析基于request.url屬性的文件系統(tǒng)上的文件的路徑。

我們還需要看看我們是否有為請(qǐng)求的文件類型注冊(cè)的MIME類型。

我們必須確保該文件存在,然后嘗試從文件系統(tǒng)讀取它。

這是向客戶端提供文件夾的源代碼。

var http = require("http"); 
var fs = require("fs"); 
var path = require("path"); 
//  o2fo.com
function send404(response) { 
    response.writeHead(404, { "Content-Type": "text/plain" }); 
    response.write("Error 404: Resource not found."); 
    response.end(); 
} 

var mimeLookup = { 
    ".js": "application/javascript", 
    ".html": "text/html" 
}; 

var server = http.createServer(function (req, res) {
    if (req.method == "GET") { 
         var fileurl; 
        if (req.url == "/") 
           fileurl = "/index.html"; 
        else 
           fileurl = req.url; 
        var filepath = path.resolve("./public" + fileurl); 

        var fileExt = path.extname(filepath); 
        var mimeType = mimeLookup[fileExt]; 
        if (!mimeType) { 
            send404(res); 
            return;
        }
        fs.exists(filepath, function (exists) {
            if (!exists) {
                send404(res); 
                return; 
            };
            res.writeHead(200, { "content-type": mimeType }); 
            fs.createReadStream(filepath).pipe(res);
         }); 
     } else {
         send404(res);
     } 
}).listen(3000); 

console.log("server running on port 3000"); 


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)