Express做爲Nodejs最經常使用的輕量級框架,版本更新很快,2.x -> 3.x過程當中也有不少改動,這裏對經常使用的,基礎的API進行一次彙總,初學者能夠學習,做者本人權當複習之用. html
建立一個express應用,其中express()方法返回的app其實是一個Function對象,它被設計爲傳給node的http server做爲處理請求的回掉函數. node
var express = require('express'); var app = express(); //這裏3.x版本與2.x有明顯區別 app.get('/',function(req,res){ res.send("Hello world!"); }); app.listen(3000);
1. app的set()和get()一般用來存儲一些服務器設置: express
app.set('name','張三'); app.get('name'); //張三
2. app.configure([env],callback);這個函數在2.x版本中還能看到,可是到了3.x官方已經不推薦使用,它的主要做用是當env和app.get('env')匹配時,也就是preocess.env.NODE_ENV,則執行callback方法..官方文檔推薦你們使用if判斷的方式,看代碼可知: 數組
app.configure(function(){ app.set('name','xiaoshi'); }); //上面代碼等價於下面代碼 app.set('name','xiaoshi'); //--------------------------------- app.configure('development',function(){ app.set('name','xiaoshi'); }); //上面代碼等價於下面代碼 if('development' == app.get('env')){ app.set('name','xiaoshi'); }
3. app.use([paht],function); app.use不是用來處理請求,而是加載處理請求的模塊的參數.一般是處理中間件,可選參數的默認值是'/'. 服務器
app.use(function(req,res,next){ res.send("hello world"); });
path路徑對於function不可見,這意味着req.path是找不到值的,這麼設計爲了讓中間件能夠不須要修改代碼就在任意前綴路徑下執行.常見定義靜態文件服務的就是如此.app.use()定義的中間件順序會被嚴格執行. app
4. app.render(view,[option],callback);渲染view,callback中處理返回的渲染後的字符串.以下: 框架
app.render('email',function(err,html){ //... });
5. req.params 這是一個存放鍵值對形式的數組對象.好比路由/user/:name,"name"屬性會在req.params.nam中,你能夠經過這種方式獲取值. 函數
6. req.query 這是一個通過解析的url請求參數的對象. 學習
7.req.body 這個是咱們比較常見的,由bodyParser()提供的解析過的請求體,默認是{}.看一下例子: ui
//POST請求,user[name]=xiaoshi req.body.user.name // => "xiaoshi" //POST {"name":"xiaoshi"} req.body.name // => "xiaoshi"
8. req.param(name);也是一個查詢參數值的方法,對比以前相似的方式,它們優先級以下:
req.params > req.body > req.query
9. req.path 返回請求的URL路徑名(不包括參數); req.host 返回主機名(不包括端口號)
10. res.redirect([status],url); 使用可選狀態碼,跳轉url
res.redirect('http://example.com');
11. res.send([body|status],[body]); 發送一個響應,該方法做爲主要的響應函數,它會自動設置Content-Length,同事設置Content-Type,除非以前已經設置過
res.set('Content-Type', 'text/html');
這裏僅列出最多見,最經常使用的,更多的仍是在官方API文檔上.