前沿:
Express框架是一個簡潔而靈活的 node.js Web應用框架,其也屬於一個模塊,安裝方式和之前相同,通過npm install express即可安裝,框架的安裝目錄默認都是在應用目錄下的node_modules目錄下,通過Express框架可以快速地搭建一個完整功能的網站。
Express 框架核心特性:
-
可以設置中間件來響應 HTTP 請求。
-
定義了路由表用於執行不同的 HTTP 請求動作。
-
可以通過向模板傳遞參數來動態渲染 HTML 頁面。
利用Expess框架搭建一個服務:
var express = require("express");
var app = express();
var server = app.listen(8888, "127.0.0.1", function() {
console.log("listen host:" + server.address().address + "\nport:" + server.address().port);
});
代碼解析:
- 首先申請使用express模塊
- 調用express()會返回一個function(),賦值給app後其會處理所有的請求
- 通過app.listen()建立一個server,指定host、port
app.get
app.get(path, function()) 根據匹配的path執行相應的function;path需要指定;app.get和app.use的區別:
- app.get只可以指定回調函數;
- app.use可以指定回調函數和路由規則。
app.use
app.use用來註冊函數,根據請求的path執行不同的回調函數或者路由;
var express = require("express")
var app = express();
app.use("/h", function(req, res, next) {
console.log("step2");
next();
});
app.use(function(req, res, next) {
console.log("step1");
next();
});
app.use("/h/hello/",function(req, res, next) {
console.log("step3");
next();
});
var server = app.listen(8888, "127.0.0.1", function() {
console.log("listen host:" + server.address().address + "\nport:" + server.address().port);
})
代碼解析:
app.use(path, function()); 根據匹配的path執行相應的function;如果path未指定,則默認爲'/'
如果function中沒有next()方法,即表示如果匹配成功,則不再接着往下進行匹配,如果匹配失敗會往下接着匹配直到匹配成功或者結束,因爲匹配是子上往下的順序。
測試結果:
- 如果在瀏覽器輸入:http://127.0.0.1:8888/
cmd輸出:step1
- 如果在瀏覽器輸入:http://127.0.0.1:8888/h
cmd輸出:step2 step1
- 如果在瀏覽器輸入:http://127.0.0.1:8888/hello
cmd輸出:step1
- 如果在瀏覽器輸入:http://127.0.0.1:8888/h/hello
cmd輸出:step2 step1 step3
- 如果在瀏覽器輸入:http://127.0.0.1:8888/hello/h
cmd輸出:step1
個人認爲匹配規則可以歸結爲將瀏覽器輸入req.url和匹配規則對照,將匹配規則和url path的postion=0位置開始進行一一比對,'/'作爲一個分隔符,如果從postion = 0開始到'/'之間都可以匹配上則執行相應的回調函數。