Skip to content

New features in 4.x

Roman Shtylman edited this page Mar 2, 2014 · 13 revisions

removed bundled middleware

None of the middleware from connect is bundled with express (or exposed on the express module). Any middleware you want to use should be installed and listed in your apps package.json. This allows for feature fixes and faster updates to middleware without affecting express core.

See middleware modules for a list of modules for old connect middleware.

Router improvements

express now exposes a better Router and route api to curb many instanced of duplicating route naming and make it easier to split Routers into files for project organization.

app.route(path)

Instead of using app.get(), app.post(), etc... verb directly (still supported). There is a new route() method which returns an instance of a Route. You can then call all of the HTTP verbs on this instance and even add middleware specific to this route.

app.route('/users')
.get(function(req, res, next) {})
.post(function(req, res, next) {})

route() takes a path argument which is the same argument you pass to .get() or .post() when creating a route.

Additionally, the returned route has an .all() method which is helpful if you want to add "middleware" to the route or handle all VERBS.

Router

Another addition is the public API for express Routers. A Router is like a mini express app. It contains no views or settings but does provide the typical routing APIs (.use, .get, .param, .route).

Apps and Routers can also .use() other routers allowing you to create files that export a router to organize your apps better.

Image an example `routes/people.js' in your project.

var people = express.Router();

people.use(function(req, res, next) {
});

people.get('/', function(req, res, next) {
});

You can mount it under the '/people' path so that any request to /people/* will route to the people router.

app.use('/people', require('./routes/people'));

See the Router docs for more examples.

Clone this wiki locally