- 創建服務器
var app=require('express').createServer();
app.get('/',function(req,res){
res.send('hello, world from csseer.cml');
});
app.listen(3000); - 創建Https服務器
var app=require('express').createServer({key:...}); 需要傳遞一個對象作為配置參數,該對象接收
key,cert和其他在nodejs https文檔參數
3.生產環境 (有待學習)
4.______dirname是node.js里面的全局變量,即取得執行的js所在的路徑 ,
__filename是目前執行的js文件名
5.bodyParser用于解析客戶端請求的body中的內容,內部使用JSON編碼處理,url編碼處理以及對于文件的上傳處理.
6.中間件, 可以通過connect 傳入express。createServer();
var express =require('express');
var app= express.createServer(
express.logger(),
express.bodyParser()
);
7.路由中間件
這里路徑映射可以理解為路由的意思,路由通過傳入一個或者多個附加的回調函數到方法中。
多重路由中間件可以被按照順序來執行,從而可以實現更復雜的邏輯。
function andRestrictToSellf(req,res,next){
req.authenticatedUser.id==req.user.id?next():next(new Error('無權限'));
}
app.get('/user/:id/edit',loadUser,andREstrictToSelf,function(req,res){
res.send('開始編輯用戶'+req.user.name);
})
請記住中間件是簡單的函數,返回中間件的函數
function andRestrictToSellf(role){
return function(req,res,next){ req.authenticatedUser.role==role?next():next(new Error('無權限
'))};
}
app.del('/user/:id/edit',loadUser,andREstrictToSelf('admin'),function(req,res){
res.send('已經刪除'+req.user.name);
})
//app.del的第三個參數之所以可以這樣寫,是因為其返回的是一個函數,而該函數可以訪問’admin’的值,這里涉及到閉包的概念,
8.session support
可以在Express中通過增加Connect的session中間件來開啟Session支持,當然前提是需要在這之前使用cookieParser中間件,用于分析和處理req.cookies的cookie數據(我們知道session會利用cookie進行通信保持的)。
app.use(express.cookieParser());
app.use(express.session({ secret: "keyboard cat" }));
默認session中間件使用Connect綁定的內存存儲,但也有另外的實現方式。比如connect-redis就提供了一個Redis的session存儲方案:
var RedisStore = require('connect-redis');
app.use(express.cookieParser());
app.use(express.session({ secret: "CSSer加密字符串", store: new RedisStore }))
req.session 和 req.sessionStore屬性就可以被所有路由及下級中間件所訪問,req.session的屬性會伴隨著每次響應發送給客戶端,