ExpressJS 5.0: What’s New
Express is a minimal and flexible Node.js web application framework that provides robust web and mobile application features.
ExpressJS is one of the best frameworks for Node.js, and it is also a member of the MEAN Stack family, making it very popular.
There are many version of ExpressJS since the first released from version 0.0.1, which started the project in 2010–01–03 to 4.16.2 in 2017–10–09
Express 5.0 is still in the alpha release stage, but here is a preview of the changes that will be in the release.
Express 5 is not very different from Express 4: The changes to the API are not as significant as from 3.0 to 4.0. Although the basic API remains the same, there are still breaking changes; in other words, an existing Express 4 program might not work if you update it to use Express 5.
Installing ExpressJS 5.0
To install the latest alpha and to preview Express 5, enter the following command in your application root directory:
npm install express@5.0.0-alpha.8 — save
After installing the newest version, you can then run your automated test to see failures and fix the errors according to the updates listed below. After addressing test failures, run your app to see what errors occur. If your app uses any of the deprecated methods, Express will show the errors right away.
ExpressJS 5.0 Changelog
Here is the list of changes (as of the alpha 2 release) that will affect you as an Express user.
List of Deprecated Things Removed:
- app.del
app.del(‘/res’, (req, res) => res.send(‘deleted’));
//4: express deprecated app.del: Use app.delete instead
//5: TypeError: app.del is not a function
2. app.param(name)
// Old
app.get(‘/users/:name’, (req, res) => {
res.send(User.find(req.param(‘name’)));
});
//4: express deprecated req.param(name): Use req.params, req.body, or req.query instead
//5: TypeError: req.param is not a function// New
app.get(‘/user/:name’, (req, res) => {
res.send(User.find(req.params.name));
});
3. req.acceptsCharset
// The req.acceptsCharset() changes to req.acceptsCharsets) array
req.acceptsCharsets()
4. req.acceptsEncoding
// The req.acceptsEncoding() changes to req.acceptsEncodings() array
req.acceptsEncodings()
5. req.acceptsLanguage
// The req.acceptsLanguage() changes to req.acceptsLanguages() array
req.acceptsLanguages()
6. res.json(status, obj)
// The res.json(status, obj) changes to res.status(status).json(obj)
7. res.jsonp(status, obj)
// The res.jsonp(status, obj) changes to res.status(status).jsonp(obj)
8. res.send(body, status)
The res.send(obj, status) changes to res.status(status).send(obj)
9. res.send(status)
// The res.send(status) changes to res.sendStatus(statusCode)
res.sendStatus(statusCode)
10. res.sendfile()
// res.sendfile() is change to a Camel-Case res.sendFile()
res.sendFile()
Improvements
The following are the list of improvements that ExpressJS 5.0 is coming with:
- Add support for Promises in all handlers
- Bring back
app.router
which is just generally useful for directly calling the router. - Make sure 3.x-style
app.use(app.router)
does not explode. - Fix views to resolve paths async.
- Make query parser option default to ‘simple’.
- Make
req.host
actually, return the host. - Make
req.query
a getter instead of added by middleware. - Make
res.render
always async callback to hide sync view engines. - Make
res.sendFile
use the “ETag” application setting. - Make
res.status
throw on invalid argument type. - Make
express.static
use the “ETag” application setting. - New path matching syntax.
- Provide separate locals and options to view the engine.
- Remove Express 3.x middleware error stubs.
- Support Node.js core HTTP/2 implementation.
- Support non-core HTTP prototypes (e.g. http2, shot and others).
- Use mime-types instead of mime.
- Use path-is-absolute module for absolute path detection
Conclusion
Express 5 is still in alpha, so there are bound to change. Take a look at this [pull request](https://github.com/expressjs/express/pull/2237) if you want to see an updated list of changes for the release.
Thank you for reading my article.
Here at my blog or medium, I regularly write about backend development, digital marketing and content management system. To read my future posts, join my publication or click ‘Follow’ Also, feel free to connect with me via Twitter, Facebook, Instagram.
If you are interested in backend development (or you’re an internet enthusiast) both (Mobile | Web | Desktop) videos, subscribe to my Youtube channel, we will be posting a collection of help full tutorials and guides like this one for artisans.
If you enjoy this post, make sure to let us know and share it with your friends and subscribe to my growing channel.
Sharing is caring.