Node.js 搭建 web 程序 之 路由配置

前一篇博客裏我們說到了 Node.jsfs 模塊的使用,主要是安裝配置 Node.jsHTTP web模塊,不瞭解的可以去看下我的前一篇博客 Node.js 搭建 web 程序 之 使用基礎 ,本篇我們將Node.js和模塊模塊實現路由配置。

fs文件系統模塊

fs模塊是 Node.js 主要用於讀文件。

引用模塊

var http = require('HTTP')

讀取文件分爲同步和異步讀取。

異步讀文件

fs.readFile('index.html', function(err, data) {
    console.log(data)
})

同步讀文件

var data = fs.readFileSync("index.html","utf8");
console.log(data);

當我讀取創建的 index.html 文件,執行後來看一下,我們發現得到的是一串 Buffer 碼。在這裏插入圖片描述
將 Buffer 碼處理一下。

fs.readFile('index.html', function(err, data) {
    console.log(data.toString())
})

此時輸出的是 HTML 的文件內容。
在這裏插入圖片描述
在上篇博客中,我們簡單的說到了 HTTP 模塊搭建 web 服務,響應結束後返回的內容會在頁面中顯示,我們來簡單的讀取一個文件通過服務端訪問。

// 引用HTTP模塊
var http = require("http");
// 引用fs模塊
var fs = require('fs')
    // 創建服務
var server = http.createServer();
// 監聽request事件
server.on("request", function(req, res) {
        // 異步讀文件
        fs.readFile('index.html', function(err, data) {
            // 響應結束
            res.end(data.toString())
        })
    })
// 開啓服務 端口號3000
server.listen(3000)

在這裏插入圖片描述
當我們通過 localhost:3000 訪問就可以顯示讀取的文件內容了,但是我們如果訪問其他頁面的時候也是這個頁面,可以一個服務器不可能就是一個頁面,這就需要我們就需要 HTTP 模塊的路由的配置了
在這裏插入圖片描述

HTTP模塊

路由的配置

在我們監聽 request 事件的時候得到兩個參數,request請求 和 response響應。

server.on("request", function(request, response) {
	console.log(request)
}

通過輸出 request 請求,我們得到了一大堆參數,在這一大堆參數中,url 記錄 request 請求的地址,method 記錄 request 請求的類型,所有web文件的請求都是GET請求。

server.on("request", function(request, response) {
	console.log(request.url)
}

在這裏插入圖片描述
我們可以根據判斷請求的地址,響應不同的文件。

// 引用HTTP模塊
var http = require("http");
// 引用fs模塊
var fs = require('fs');
// 創建服務
var server = http.createServer();
// 監聽request事件
server.on("request", function(request, response) {
    if (request.url == '/index.html' && request.method == 'GET') {
        fs.readFile('index.html', function(err, data) {
            response.end(data.toString())
        })
    } else if (request.url == '/login.html' && request.method == 'GET') {
        fs.readFile('login.html', function(err, data) {
            response.end(data.toString())
        })
    }
});
// 開啓服務 端口號3000
server.listen(3000)

響應頭設置

我們都知道,一個網頁的資源是豐富多彩的,所以在請求的時候我們需要添加不同類型文件的響應頭。

文本的響應頭

response.writeHead(200,{"content-type" : "text/html;charset=utf8"})
response.writeHead(200,{"content-type" : "text/javascript;charset=utf8"})

圖片的響應頭

response.writeHead(200,{"content-type" : "image/jpeg"})
response.writeHead(200,{"content-type" : "image/png"})

簡單的HTTP路由配置就在下方了,下篇博客我們將 Node.jsMongoDB 數據庫一起使用

// 引用HTTP模塊
var http = require("http");
// 引用fs模塊
var fs = require('fs');
// 創建服務
var server = http.createServer();
// 監聽request事件
server.on("request", function(request, response) {
    if (request.url == '/index.html' && request.method == 'GET') {
        response.writeHead(200, { "content-type": "text/html;charset=utf8" })
        fs.readFile('index.html', function(err, data) {
            response.end(data.toString())
        })
    } else if (request.url == '/index.js' && request.method == 'GET') {
        response.writeHead(200, { "content-type": "text/javascript;charset=utf8" })
        fs.readFile('index.js', function(err, data) {
            response.end(data.toString())
        })
    } else if (request.url == '/img.png' && request.method == 'GET') {
        response.writeHead(200, { "content-type": "image/png" })
        fs.readFile('img.png', function(err, data) {
            response.end(data)
        })
    } else if (request.url == '/login.html' && request.method == 'GET') {
        response.writeHead(200, { "content-type": "text/html;charset=utf8" })
        fs.readFile('login.html', function(err, data) {
            response.end(data.toString())
        })
    }
});
// 開啓服務 端口號3000
server.listen(3000)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章