更多的例子和完整的API文档,请参见Express 4.x 的文档。你可能对这篇文章也有兴趣 从3.x 迁移到 4.x版。html
Express 中再也不捆绑 Connect 提供的中间件(或者说显示在 “express” 模块中)。你要使用的任何中间件应额外安装并在你的应用的 package.json 中列出。这方便了中间件的功能修复和快速更新,同时避免影响 express 的核心功能。git
参见中间件模块,这张列表完整的列出了旧的 connect 中间件。github
express 如今提供了一个更好的“ Router ”功能以及路由 API ,来解决重复性的路由命名状况,而且更容易将路由分解到多个文件,方便项目组织和管理。express
全部的路由功能都将按照它们出现的顺序被添加。你 不用 再使用app.use(app.router)
。这解决了 Express 最多见的问题。json
换句话说,混合的app.use()
和app[VERB]()
将 确切地 按照它们的调用顺序工做。c#
app.get('/', home); app.use('/public', require('st')(process.cwd())); app.get('/users', users.list); app.post('/users', users.create);
取代了本来的app.get()
,app.post()
等方式(但这些依然可使用),提供了一个新的route()
功能,它会返回一个可被使用的Route
实例。而后,你能够在这个实例中调用全部的 HTTP 动做,甚至能够添加具体的中间件到这个路由中。api
app.route('/users') .get(function(req, res, next) {}) .post(function(req, res, next) {})
route()
须要一个path
路径参数,这个参数和你建立一个路由时传递给.get()
或者.post()
的参数相同。app
此外,返回的路由有一个.all()
方法,若是你想添加中间件到这个路由中,或处理全部的动做,这会颇有帮助。post
另外一项新增功能是 express 的Router
的公共API。一个Router就像是一个小型的 express 应用。它不包含任何 view 或者 setting,可是确实提供了典型的路由API(.use
,.get
,.param
,.route
)。ui
应用和路由也能够经过.use()
方法使用其它路由,这容许你经过多个文件来创建路由,以更好地组织你的应用。
想象一下,在你的项目的一个例子routes/people.js
。
var people = express.Router(); people.use(function(req, res, next) { }); people.get('/', function(req, res, next) { }); module.exports.people = people;
您能够将其安装在/people
路径下,这样的话,向/people/*
的任何请求都将被发送到 people 路由。
app.use('/people', require('./routes/people').people);
更多的例子参见路由器文档。