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