Node.js 學習第十九天
………….略。
如果在看的過程中有任何錯誤歡迎寫 E-MAIL: pp840405@gmail.com 提醒我錯誤。
middleware (完)
如下程式碼,如果在輸入網址時候沒有進入首頁直接到別的路徑 127.0.0.1:3000/dgewqsdc 像這樣進入後你看 node 執行會給你 會員登入的 console 資料,但我們並沒有設計這個路徑為什麼它會顯示 console 資料呢? 原因在於在撈資料時後會一行一行往下看沒有設攔截點就會跑完可以使用的函式。1
2
3
4
5
6
7
8
9
10
11
12
13var express = require('express');
var app = express();
app.get('/',function(req,res){
res.send('<html><head></head><body><h1>登入</h1></body></html>')
});
app.use(function(req,res,next){
consloe.log('會員登入')
//下一步
next();
});
//監聽 port
var port = process.env.PORT || 3000;
app.listen(port);
正確的方法,也可以用來 debug 。
HTTP狀態碼1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21var express = require('express');
var app = express();
app.get('/',function(req,res){
res.send('<html><head></head><body><h1>登入</h1></body></html>')
});
app.use(function(req,res,next){
consloe.log('會員登入')
//下一步
next();
});
app.use(function(req,res,next){
//請求失敗,請求所希望得到的資源未被在伺服器上發現,但允許用戶的後續請求。
res.status(404).send('抱歉,此頁面並不存在');
});
app.use(function(req,res,next){
//通用錯誤訊息,伺服器遇到了一個未曾預料的狀況,導致了它無法完成對請求的處理。
res.status(500).send('抱歉,程式出現錯誤');
});
//監聽 port
var port = process.env.PORT || 3000;
app.listen(port);
可以把 middleware 獨立出來作使用。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15var express = require('express');
var app = express();
var login =function(req,res,next){
consloe.log('會員登入')
//下一步
next();
};
app.use(login)
app.get('/',function(req,res){
res.send('<html><head></head><body><h1>登入</h1></body></html>')
});
//監聽 port
var port = process.env.PORT || 3000;
app.listen(port);放在 get 上面也是可以
1
2
3
4
5
6
7
8
9var login =function(req,res,next){
consloe.log('會員登入')
//下一步
next();
};
//先取得網頁在經過 login 的判斷在到執行函式 由左至右
app.get('/',login,function(req,res){
res.send('<html><head></head><body><h1>登入</h1></body></html>')
});也可以在這邊作判斷設定
1
2
3
4
5
6
7
8
9
10
11
12var login =function(req,res,next){
var _url = req.url;
if(_url == '/'){
nexy()
}else{
res.send('資料錯誤無法登入')
}
};
//先取得網頁在經過 login 的判斷在到執行函式 由左至右
app.get('/',login,function(req,res){
res.send('<html><head></head><body><h1>登入</h1></body></html>')
});
static - 載入靜態檔案
如果再傳送資料那邊些入靜態檔案是沒辦法的,雖然你指定首頁了但是它不知道你首頁在哪個路徑上,所以就要用到 static 的方法。
錯誤示範
1 | var express = require('express'); |
原本 project 資料夾裡面有 images 資料夾放了 logo.png 檔,增加這段程式碼後就要在 project 資料夾內新增一個 public 資料夾,然後把擁有靜態檔案的資料夾( images )放進去,這樣就可以知道你的檔案在哪了。
正確示範
1 | var express = require('express'); |
結語
…….,有任何問題歡迎寫 MAIL: pp840405@gmail.com 一起共同討論。