Express Web Framework
官方定義:
Web Applications
Express is a minimal and flexible Node.js web application framework that provides a robust set of features for web and mobile applications.
主要幫忙解決許多node.js http server 所需要的基本服務,讓開發http service 變得更為容易,不需要像之前需要透過層層模組(module)才有辦法開始編寫自己的程式。
使用Express之後, 它包裝了大多數繁複的HTTP低階操作, 使得我們的程式碼更為精簡.
安裝:
要不要-g
(global)就看個人需求.
npm install -g express
Why use Express?
- Express helps you respond to request with route support so that you may write responses to specific URLs.
- Supports multiple templating engines to simplify generating HTML.
Explanation of Routes
- A router maps HTTP requests to a callback(針對從 Client 送來的 URL 做相對應的處理)
- HTTP requests can be sent as GET/POST/PUT/DELETE …
- URLs describe the location targeted.
- To a request handler(callback)
->app.<HTTP請求類型>(url,handler{});
app.get('/index', function(req, res){});
request: 連線要求的資訊和方法:
包含了瀏覽器傳來的各種信息,像是query ,body ,headers,都可以通過req對象訪問到。response: 回應連線的資訊和方法
我們一般不從裡面取信息,而是通過它來定制我們向瀏覽器輸出的信息,比如 header 信息,比如想要向瀏覽器輸出的內容。這裡我們調用了它的 #send 方法,向瀏覽器輸出一個字符串。
app.get 可以帶入兩個參數,第一個是路徑名稱設定,第二個為Call back function),這裡面就如同前一篇介紹的 createServer 方法,裡面包含 request跟response 兩個物件。使用者就可以透過瀏覽器,輸入不同的url 切換到不同的頁面,顯示不同的結果。
Example:
var express = require('express');
var app = express();
app.get('/', function(req, res){
res.send('This is GET method');
res.end;
});
app.listen(process.env.PORT || 12345);
Express middleware
Express在處理一個連線要求時, 利用了middleware的設計, 讓開發者隨時可以自訂或擴充處理的流程. 也可以在適當的時機安插執行一些程式.
為了載入middleware要使用.use
, 一個基本middleware長的樣子如下:
function logger(req, res, next){
console.log(new Date(), req.method, req.url);
next();
}
Middleware 會收到 3 個參數:
1. req 是 Request 物件,存放這此請求的所有資訊
2. res 是 Response 物件,用來回應該請求
3. next 用來控制流程
上面所寫的logger middleware會把每次request的時間, method還有url都列印在終端機上, 然後呼叫next()往下個middleware過去。Express.js的任務, 就是管理你所有middleware chain。
app.use 和 app.get
再來我們寫一個叫作hello的middleware:
function hello(req, res, next){
res.write('Hello! \n');
next();
}
將這個middleware加到我們的middlware chain中:
app.use(logger);
app.get('/hello', hello);
`app.use`表示 所有的request都會執行這個middleware
`app.get`表示 只有針對該URL 做 GET request的時候才會執行這個middleware
Reference:
1. http://expressjs.com
2. https://www.youtube.com/watch?v=czmulJ9NBP0
3. https://dca.gitbooks.io/nodejs-tw-wiki-book/content/book/node_express/node_express.html
4. https://stormpath.com/blog/how-to-write-middleware-for-express-apps
5. http://www.jollen.org/blog/2013/11/expressjs-middleware.html
沒有留言:
張貼留言