前言 繼續上一節的探討,今天我們來聊聊Node中怎麼搭建一個簡單的web伺服器。平時大家在擼碼的過程中,經常需要向伺服器發送請求,然後伺服器接受請求,響應數據。今天我們就來自己手寫一個簡單伺服器,根據前端請求,我們來響應相關數據。 開始 開啟一個本地伺服器需要Node.js中 核心模塊,至於核心模塊 ...
前言
繼續上一節的探討,今天我們來聊聊Node中怎麼搭建一個簡單的web伺服器。平時大家在擼碼的過程中,經常需要向伺服器發送請求,然後伺服器接受請求,響應數據。今天我們就來自己手寫一個簡單伺服器,根據前端請求,我們來響應相關數據。
開始
開啟一個本地伺服器需要Node.js中http
核心模塊,至於核心模塊是什麼,我會在接下來的章節中和大家解釋,也歡迎大家持續關註我的前端Node.js的學習之旅。
- http--模塊提供了搭建本地伺服器的API,首先我們在項目中引入;
let http = require('http')
引入之後我們利用http.createServer()方法得到一個伺服器實例。
let server = http.createServer() // createServer()方法返回一個server實例,所以我們需要一個變數來接收
- 經過以上兩步,我們已經搭建好了一個伺服器實例,然後我們給伺服器實例綁定接收
request
的事情處理函數,代碼如下:
server.on('request', (req, res) => {
console.log(req.url) // 獲取到請求的路徑(請求路徑永遠以“/”開頭)
})
// 給伺服器綁定接收請求的處理事件,當伺服器接收到客戶端發送的請求後,會調用後面的處理函數,處理函數接收兩個參數:請求信息對象,響應信息對象。
- 綁定監聽埠號,開啟伺服器。代碼如下:
server.listen(3000, () => {
console.log('伺服器開啟成功,可以通過訪問http://127.0.0.1:3000/來獲取數據~~')
})
// server.listen()用來綁定監聽的埠號,可以傳入第二個參數,當伺服器開啟成功後,觸發後面的回調函數
- 最後看到的效果如下圖所示:
我們看到請求路徑被列印在了CMD視窗中。
好了,經過這簡單的操作是不是已經完成了一個伺服器的簡單搭建,接下來我們來實現一個需求:
當我們訪問“http://127.0.0.1:3000/login”, 伺服器返回 “login page”
當我們訪問“http://127.0.0.1:3000/register”, 伺服器返回 “register page”
當我們訪問“http://127.0.0.1:3000/”, 伺服器返回 “index page”
當我們訪問“http://127.0.0.1:3000/product”, 伺服器返回 產品信息列表
我們實現這個需求,只需要在綁定伺服器監聽的事件處理函數中獲取到用戶的請求路徑,然後根據不同路徑返回不同數據即可,這個也不難。詳情代碼看下:
let http = require('http')
let server = http.createServer()
server.on('request', (req, res) => {
let url = req.url //得到請求的路徑 (請求的路徑永遠以‘/’開頭)
if (url === '/') {
res.end('index page')
} else if (url === '/login') {
res.end('login page')
} else if (url === '/register') {
res.end('register page')
} else if (url === '/product'){
let arr = [
{
name: 'iphone X',
price: 8888
},
{
name: 'iphone 7',
price: 4320
}
]
// 響應的數據類型必須是字元串或者二進位數據
res.end(JSON.stringify(arr))
} else {
res.end('404 NOT found')
}
})
server.listen(3000, () => {
console.log('伺服器啟動成功了,,可以訪問http://127.0.0.1:3000/啦')
})
最後實現的效果圖如下:
我們看到我們請求不同的路徑,伺服器給我們返回了不同的內容,並且顯示在了網頁中。
說明
本倉庫是自己Node.js學習過程的真實記錄,以後會每天更新一些新的知識點,希望可以對想要學Node.js的同學有一些幫助,歡迎star,你們的點贊是我更新的持久動力。同時如果你覺得本倉庫中的一些知識點有錯誤也可以issue我,方便後期我訂正!
本倉庫同時在博客園和掘金更新,歡迎寫博客的朋友一起學習交流。
博客園
掘金
GitHub