Express 是一個簡潔、靈活的 node.js Web 應用開發框架, 它提供一系列強大的特性,幫助你建立各類 Web 和移動設備應用。node
1.express組織結構express
app demojson
|---node_modules------用於安裝本地模塊。
|---public------------用於存放用戶能夠下載到的文件,好比圖片、腳本、樣式表等。
|---routes------------用於存放路由文件。
|---views-------------用於存放網頁的模板。
|---app.js------------應用程序的啓動腳本。
|---package.json------項目的配置文件。瀏覽器
2..建立express服務器服務器
1
2
3
4
5
6
7
8
9
10
11
|
//app.js文件
var
express = require(
'express'
);
var
app = express();
//指定更目錄顯示的內容
app.get(
'/'
,
function
(req, res){
res.send(
'Hello World'
);
});
//指定監聽端口
var
server = app.listen(3000,
function
() {
console.log(
'Listening on port %d'
, server.address().port);
});
|
運行nodejs應用程序app
/>node app.js框架
3.中間件ide
中間件(middleware)就是處理HTTP請求的函數.
當一個HTTP請求進入服務器,服務器實例會調用第一個中間件,完成後根據設置,決定是否再調用下一個中間件.函數
中間件的參數爲:post
.四個的時候---第一個爲錯誤處理,第二個爲客戶請求request,第三個爲服務器響應respond,第四個爲next中間件. 如function(error, request, response, next){}
.三個的時候---第一個客戶請求request,第二個爲服務器響應respond,第三個爲next中間件. 如function(request, response, next){}
.兩個的時候---第一個客戶請求request,第二個爲服務器響應respondfunction. 如function(request, response){}
4.使用中間件use
use是express調用中間件的方法,它返回一個函數.
1
2
3
4
|
app.use(
function
(request, response) {
response.writeHead(200, {
"Content-Type"
:
"text/plain"
});
response.end(
"Hello world!\n"
);
});
|
5.錯誤內容顯示
1
2
3
4
5
6
7
|
app.use(express.bodyParser());
//使用body參數
app.use(express.methodOverride());
//使用函數覆蓋
app.use(app.router);
//使用路由
app.use(
function
(err, req, res, next){
console.error(err.stack);
res.send(500,
'Something broke!'
);
});
//錯誤內容顯示
|
6.路由
express路由的方式有多種,這裏舉例經常使用的幾種:
.app.use('/', middleware);//get/post時,對於路徑/的處理
.app.get("/", middleware);//http中get時,對於路徑/的處理
.app.post("/", middleware);//http中post時,對於路徑/的處理
.app.put("/", middleware);//http中put時,對於路徑/的處理
.app.delete("/", middleware);//http中delete時,對於路徑/的處理
7.路徑通配符*
.*表示全部路徑
1
2
3
|
app.get(
"*"
,
function
(request, response) {
response.end(
"404!"
);
});
//全部路徑都返回404
|
.:捕獲路徑內容
1
2
3
|
app.get(
"/hello/:who"
,
function
(req, res) {
res.end(
"Hello, "
+ req.params.who +
"."
);
});
//如"/hello/alice」網址,網址中的alice將被捕獲,做爲req.params.who屬性的值
|
8.設置環境變量set
set用於指定變量的值.
app.set("view engine", "ejs");//使用ejs做爲模版
9.response對象方法
.重定向redirect
response.redirect("/hello/anime");//重定向到/hello/anime
.發送文件sendFile
response.sendFile("/path/to/anime.mp4");
.渲染網頁模板render,即把變換的內容加載到網頁.
response.render("index", { message: "Hello World" });//將message變量傳入index模板,值爲"Hello World"渲染成HTML網頁
10.requst對象方法
.獲取客戶ip地址:request.ip
.獲取上傳的文件:request.files
11.啓動腳本package.json
package.json用於指定app信息,nodejs版本號和其餘組件的依賴關係
1
2
3
4
5
6
7
8
|
{
"name"
:
"demo"
,
"description"
:
"My First Express App"
,
"version"
:
"0.0.1"
,
"dependencies"
: {
"express"
:
"3.x"
}
}
|
12.app入口app.js
app.js主要包含http的建立,基本路由,監聽端口號
13.動態網頁模板views
views文件夾,用於存放全部的放網頁模板.
1
2
3
4
5
6
|
//app.js
app.get(
'/'
,
function
(req, res) {
res.render(
'index'
,{title:
"最近文章"
});
});
//index.js
this
is <%=title%>!
|
14.指定靜態網頁目錄
//app.jsapp.use(express.static('public'));//指定靜態網頁目錄,當瀏覽器發出非HTML文件請求時,服務器端就到public目錄尋找這個文件