express自動生成的app.js中有一段代碼用app.set
和app.use
對express進行配置,但這些配置都是什麼意思,以及都能作哪些配置並無展開。這一節就專門來說express的配置。上節已經介紹了幾個設置,接下來先介紹剩下的幾個:node
app.use(express.favicon()); app.use(express.bodyParser()); app.use(express.methodOverride()); app.use(express.cookieParser('your secret here')); app.use(express.session()); app.use(app.router);
express.favicon(iconPath)
:用來設置網站的圖標,參數爲圖標的路徑。若是不指明,則用默認的express圖標。能夠修改成:git
app.use(express.favicon(path.join(__dirname, '../public/img/favicon.ico')))
express.bodyParser()
: 對請求內容進行解析,支持json、 application/x-www-form-urlencoded、multipart/form-data 格式數據的解析。也就是說ajax和form發送請求時,都會通過它的處理,方便在req中獲取相應的請求值。在express中處理文件上傳也是用它,能夠給出參數指明上傳文件存放的路徑,好比:github
app.use(express.bodyParser({uploadDir:'./uploads'}))
express.methodOverride()
:爲了支持put、delete等HTTP方法,不過要客戶端配合,包含相應的_method
參數,好比:ajax
<form action='/users/1'> ... <input type="hidden" name="_method" value="put" /> </form>
能夠對應到:數據庫
app.put('/users/:id', users.put)
app.use(express.cookieParser('your secret here'));
和app.use(express.session());
:是爲了支持session,在這樣的設置中,session會被加密保存在客戶端的cookie,但這樣程序重啓後session就不起做用了,不過express.session支持session的持久化保存,由於express用的最多的數據庫就是mongo,因此下面給出用mongo保存session的配置。首先要在package.json里加上依賴項connect-mongo
:express
"connect-mongo": "0.3.3"
而後在config/express.coffee中引入connect-mongo,並修改express.session的設置:json
mongoStore = require('connect-mongo')(express) app.use express.session secret: '1234567890' store: new mongoStore url: config.db, collection : 'sessions'
app.router
是connect router的增強版,用來處理app.get
,app.post
等請求處理設置,在瀏覽器訪問這些設置中對應的url時,express.router
會調用相應的function。若是不顯式調用app.use(app.router)
,express會在第一次碰到app.get(...)
之類的設置時隱含調用,因此這個能夠不用出如今配置項裏,但.use
的順序很關鍵,因此顯式調用比較好。好比在use
中出現app.use(express.static(path.join(__dirname, 'public')));
時,若是router沒有出現,或被放在了它後面,那服務器每次遇到請求就會到硬盤上找有沒有對應的靜態文件,會形成性能降低。瀏覽器
這些是express最基本的配置項,其餘經常使用的配置項,好比壓縮、數據校驗、認證和受權等均可以放在這裏,下節繼續介紹。服務器
轉載自:圖靈社區cookie