上一次講到了怎么解決 HTML 顯示亂碼的問題。
這是上次內(nèi)容的鏈接:Node.js 服務(wù)器編碼問題
今天我們添加一個新功能站叼,可以根據(jù)不同的鏈接地址返回不同的頁面響應(yīng)。
啟動上次的代碼澈蟆,代碼如下:
// 創(chuàng)建一個簡單的的 http 服務(wù)器程序
// 加載 http 模塊
var http = require('http');
// 創(chuàng)建 http 服務(wù)對象
var server = http.createServer();
// 監(jiān)聽用戶請求事件( request 事件)
// request 對象包含了用戶請求報文中的所有內(nèi)容 翔忽,通過 request 對象可以獲取所有用戶提交過來后的數(shù)據(jù)
// response 對象用來向用戶響應(yīng)一些數(shù)據(jù),當(dāng)服務(wù)器要向客戶端響應(yīng)數(shù)據(jù)的時候必須使用 response 對象
server.on('request', function (request, response) {
// 設(shè)置 response 返回數(shù)據(jù)類型與編碼格式铃彰,否則瀏覽器會報錯
// Content-Type 設(shè)置數(shù)據(jù)類型
response.setHeader('Content-Type', 'text/plain; charset=utf-8');
// 向客戶端(瀏覽器)返回數(shù)據(jù)
response.write('Hello Word绍豁,你好!');
// 返回數(shù)據(jù)的時候要結(jié)束牙捉,不然就會一直請求
response.end();
})
// 啟動服務(wù)
server.listen(8080, function () {
console.log('OK,訪問:localhost:8080');
})
會發(fā)現(xiàn)竹揍,無論在鏈接后面添加什么參數(shù),頁面也總是只顯示 Hello Word,你好邪铲!
芬位。
怎樣才能實現(xiàn)修改地址訪問不同的頁面呢?在監(jiān)聽用戶請求事件中带到,我們有一個參數(shù) request
晶衷。
// 監(jiān)聽用戶請求事件( request 事件)
// request 對象包含了用戶請求報文中的所有內(nèi)容 ,通過 request 對象可以獲取所有用戶提交過來后的數(shù)據(jù)
// response 對象用來向用戶響應(yīng)一些數(shù)據(jù),當(dāng)服務(wù)器要向客戶端響應(yīng)數(shù)據(jù)的時候必須使用 response 對象
server.on('request', function (request, response) {
...
})
就是上面代碼中的第一個參數(shù)晌纫,它有一個特別的方法可以得到我們輸入瀏覽器中的地址 --- request.url
税迷。可以通過判斷地址的不同設(shè)置不同的結(jié)果锹漱。
我們先把監(jiān)聽用戶請求事件里面的代碼全部刪掉箭养,寫上新的代碼,如下:
server.on('request', function (request, response) {
// 設(shè)置 response 返回數(shù)據(jù)類型與編碼格式哥牍,否則瀏覽器會報錯
// Content-Type 設(shè)置數(shù)據(jù)類型
response.setHeader('Content-Type', 'text/plain; charset=utf-8');
// 如果鏈接的路徑是 / 或者 /index 時毕泌,返回的頁面的 index 頁面
if (request.url === '/' || request.url === '/index') {
// response.write('這是 index 頁面');
// response.end();
// response.end('這是 index 頁面'); 上面兩句的簡寫
response.end('這是 index 頁面');
}
// 如果鏈接的路徑是 /login 時嗅辣,返回的頁面的 login 頁面
else if (request.url === '/login') {
response.end('這是 login 頁面');
}
// 如果鏈接的路徑是 /register 時撼泛,返回的頁面的 register 頁面
else if (request.url === '/register') {
response.end('這是 register 頁面');
}
// 如果鏈接的路徑都不是上面定義的路徑,返回 404 沒有此頁面
else {
response.end('404,沒有找到此頁面澡谭。');
}
})
這樣我們就可以通過不同的路徑訪問不同的頁面了愿题。
當(dāng)我們訪問 localhost:8080/
和 localhost:8080/index
的時候,是這樣的:
訪問 localhost:8080/login
就會返回 login
頁面:
這是 register
頁面:
沒有找到對應(yīng)的頁面蛙奖,就會返回我們剛剛設(shè)置好的 404 頁面: