DEV Community ๐Ÿ‘ฉโ€๐Ÿ’ป๐Ÿ‘จโ€๐Ÿ’ป

Cover image for NestJS vs ExpressJS: Which is better for your project
Monika Ambrozowicz for Forest Admin

Posted on • Originally published at blog.forestadmin.com

NestJS vs ExpressJS: Which is better for your project

Rumour has it that ExpressJS has been slowly declining in popularity. Although the latest results of Stack Overflowโ€™s 2022 survey donโ€™t seem to prove it, itโ€™s true that Express has gained serious competitors. NestJS, Koa, Fastify, and other frameworks are becoming more popular, and product managers tend to debate whether to build their next project with ExpressJS, or rather give new (yet already mature) frameworks a chance.

Forest Admin is compatible with apps built with ExpressJS, NestJS, and soon it will also be available for Koa and Fastify developers. In this article, we compare ExpressJS with NestJS to help you choose the best framework for your application, as some of the differences between them are fundamental.

ExpressJS: Lightweight and the most widely-used

According to Stack Overflowโ€™s 2022 survey, ExpressJS is still among the most widely used web frameworks, and it is considered a very rational choice to build large-scale applications with. Express is a JavaScript framework, so both the frontend and the backend can be built using the same (extremely popular) language.

One of the biggest strengths of Express is its strong community and the number of available plugins. For example, storing sessions, cookies, parsing a payload, and so on, are available out-of-the-box, and it takes much less time and lines of code to build an application with this framework. Another big advantage of Express is that it is supported with the Google V8 engine, which ensures high performance without lags or errors in the processing.

NestJS: Reliable and scalable

Finally, ExpressJS is considered lightweight and straightforward. Its popularity and a strong community makes it easier not only to find resources but also support.

NestJS is a rapidly growing NodeJS framework, and it seems the growing number of developers prefers it over ExpressJS. It serves the same purpose โ€“ to build efficient, reliable and scalable server-side applications โ€“ but it does it in a very different way.

NestJS is inspired by Angular, which is a big advantage for developers who are already familiar with it. At the same time, everything supported in Express, for example Express functions, is also supported in Nest, which makes switching from one framework to another easier.

A big advantage of NestJS is that it is built with TypeScript, which makes the application reliable and less prone to bugs. It makes NestJS a particularly good choice for building large-scale applications. However, using JavaScript is also possible with Nest.

ExpressJS vs. NestJS

The biggest difference between these frameworks is that NestJS is opinionated, and ExpressJS is not. It means Express gives developers the freedom to make multiple possibilities and implement code as per the need, as it doesnโ€™t have a set of pre-defined rules to follow. Such a flexibility is appreciated by many developers, and itโ€™s beneficial for smaller flexible teams, but once team size and appโ€™s complexity grows, the lack of structure becomes a problem.

NestJS, on the other hand, uses the โ€œconvention over configurationโ€ paradigm that attempts to decrease the number of decisions developers need to make, and it is expected of them to write the repos, service, and controllers in a specific manner.

On top of that, NestJS follows the MVC architecture with components like modules, controllers, and providers, used to control logic, data, and implement the UI. ExpressJS doesnโ€™t follow MVC, which in some projects leads to ineffectiveness and inefficiency due to the lack of structure.

Despite these differences, both Express and Nest are suitable frameworks for building single-page applications, e-commerce websites, fintech, and streaming applications. Both are the most widely-used Node.js frameworks, and although Express is more popular (57k stars on Github compared to 48k given to NestJS), the popularity of Nest is growing faster.

Forest Admin for ExpressJS & NestJS

Admin panel built with Forest Admin
An example of an admin panel built with Forest Admin. Source: Live Demo, Forest Admin has no access to user data!

Whether you choose building your web application with ExpressJS or NestJS, you can still equip it with a powerful admin panel thanks to Forest Admin. However, the choice between Express and Nest will impact the way you integrate it with Forest Admin, as our brand new NestJS integration has been built in a recently developed way, with lots of new benefits, such as:

Low code customization. You will write less code, only when you really need to do it. Forest Admin magic will do the rest, without compromising on data security. It is also true if you choose Express, but requires a bit more coding.
Clearer concepts. We no longer distinguish between collections and smart collections, relationships and smart relationships, etc. Forest Admin for NestJS/SQL has collections, relationships, fields, and so on. Easier concepts means faster and hassle-free customization.
Always in sync with your database. Thanks to Forest Admin SQL integration, each time your server restarts, your admin panel UI is in-sync with your database.

We strongly recommend giving Forest Admin for NestJS a try, but our integration with Express is equally reliable and it has been tested by a thousand of users. Whether you need a robust and flexible admin panel for an Express, Nest, (and soon also Koa or Fastify) app, get started with Forest Admin for free.

Top comments (1)

Collapse
kostyatretyak profile image
ะšะพัั‚ั ะขั€ะตั‚ัะบ • Edited on

If you continue the topic of alternatives for ExpressJS, you can also try Ditsmod (I am the author of it). This framework is also inspired by Angular, but in my opinion it is easier to use then NestJS and better designed for modularity and scalability. In particular, Ditsmod has, in addition to modules with parameters, a system of extensions (aka plugins) that can depend on each other and initialize asynchronously. In addition, Ditsmod has such a concept as extensions groups, thanks to which you can have several extensions that do the same work (for example, there can be regular routes, and there can be routes for OpenAPI).

๐ŸŒš Life is too short to browse without dark mode