Need advice about which tool to choose?Ask the StackShare community!
FeathersJS vs NestJS: What are the differences?
Project Goals: FeathersJS is designed to be a minimalistic and flexible framework that enables developers to efficiently build scalable applications using JavaScript or TypeScript. On the other hand, NestJS focuses on providing a structured and opinionated approach to building server-side applications using TypeScript and follows the architectural patterns of Angular. While FeathersJS emphasizes flexibility, NestJS emphasizes structure and consistency in code development.
Architecture: FeathersJS follows a lightweight, service-oriented architecture where each service represents a resource or a logical component of the application. It allows developers to easily create services and interact with databases using a built-in Object-Document Mapping (ODM) or Object-Relational Mapping (ORM) system. In contrast, NestJS follows a layered architectural pattern with the use of modules, controllers, and providers, following a more traditional MVC (Model-View-Controller) structure. NestJS also leverages decorators for defining routes and dependency injection for efficient modular development.
Development Community: FeathersJS has a smaller but highly active development community. It is known for its simplicity and ease of integration with various libraries and databases, making it suitable for quick prototyping and small to medium-sized applications. On the other hand, NestJS has a larger community which benefits from its similarity and alignment with the Angular ecosystem. NestJS is often considered more suitable for enterprise-level applications where robustness and maintainability are crucial.
Code Style: FeathersJS encourages developers to have a more flexible and personal coding style, allowing them to choose between different patterns and approaches. This enables developers to build applications rapidly while having control over the codebase. NestJS, being built on TypeScript and following Angular's principles, enforces a more opinionated coding style and structure, making it easier for large teams to collaborate and develop maintainable code. The strictness of the code style can help improve code readability and consistency across large projects.
Modularity and Reusability: FeathersJS has a focus on creating modular applications by using services as isolated components. Developers can easily reuse these services in different parts of the application or even in other FeathersJS projects. NestJS, with its support for modules and dependency injection, enables developers to design highly modular and reusable applications. It encourages the separation of concerns and allows for easier code organization and sharing across projects or teams.
Testing and Debugging: FeathersJS provides a built-in testing framework and offers easy-to-use debugging tools. It allows developers to write unit tests for services and integrates well with popular testing libraries and tools. NestJS, being based on Angular, inherits its testing capabilities and integrates with the Angular testing ecosystem. It provides a comprehensive testing framework, including unit testing, end-to-end testing, and integration testing. The testing capabilities in NestJS are well-documented and widely used, making it easier for developers to write reliable and robust tests.
In Summary, FeathersJS focuses on flexibility and quick application prototyping while NestJS provides a more opinionated and structured approach, suitable for enterprise-level applications, with an emphasis on modularity and testing capabilities.
Hi there, I'm deciding the technology to use in my project.
I need to build software that has:
- Login
- Register
- Main View (access to a user account, News, General Info, Business hours, software, and parts section).
- Account Preferences.
- Web Shop for Parts (Support, Download Sections, Ticket System).
The most critical functionality is a WebSocket that connects between a car that sends real-time data through serial communication, and a server performs diagnosis on the car and sends the results back to the user.
You can use NestJs with microservice architecture.where you can also use socket.io for web socket. you can use MongoDB (For real-time data) & MySQL for customer management.if you don't want to implement websocket.you can use firebase.it gives realtime database & firestore.which can handle millions of connections and scale it up.
I would also go with NestJS. I would say Java is unnecessarily complicated and limited. And Python is not typed. TypeScript is powerful and typed and goes well with NestJS, especially using RxJS.
Django does not enforce backend-frontend separation, which probably was a good thing back in the days, but not anymore. But on the other hand enforces the project structure to you, which I don't like.
Just a simple Node.JS app with templating engine for UI can be sufficient for what you want to achieve.
Spring boot with Spring Security[JWT], Websocket, Thymeleaf or Mustache, and styling with Bootstrap.
I am currently planning to build a project from scratch. I will be using Angular as front-end framework, but for the back-end I am not sure which framework to use between Spring Boot and NestJS. I have worked with Spring Boot before, but my new project contains a lot of I/O operations, in fact it will show a daily report. I thought about the new Spring Web Reactive Framework but given the idea that Node.js is the most popular on handling non blocking I/O I am planning to start learning NestJS since it is based on Angular philosophy and TypeScript which I am familiar with. Looking forward to hear from you dear Community.
NestJS is an excellent framework (they both are). I would say the fact that you're working with Angular makes NestJS a great match, unless you're splitting front and back end between developers. But even in that case I would still go with NestJS for a new project.
Regarding the single threading point, take a look at PM2 which helps to run Node in multiple processes (we use it with NestJS) https://pm2.keymetrics.io/docs/usage/cluster-mode/
Also regarding web server performance in general this is an interesting post showing how Node with outperform Java in a web situation (be careful though, best to check a few posts to make sure these aren't totally biased benchmarks!): https://www.tandemseven.com/blog/performance-java-vs-node/
Node.js has only 1 real thread per process; Java JIT will mostly run faster than JS one; So if it happens to be not only I/O... Why do you need most popular, not simply popular? Does Node.js have tech advantages?
I'm planning with a small team to create an application which is a platform for restaurants. I'm on the backend almost alone currently. I'm going to use Node.js for that, and I'm very fond of TypeScript, and I worked before mostly with ExpressJS. The team may get bigger as the application becomes bigger and more successful, so I have the Scalability concern in mind now, and I was considering these options: 1) Use Node+Express+Typescript 2) Use Node+NestJs (which utilizes Typescript by default)
Option 2 is enticing to me because recently I came to love NestJS and it provides more scalability for the project and uses Typescript in the best way and uses Express under the hood. Also I come from an Angular 2 background, which I think is the best frontend framework (my opinion, and I know React quite well), which makes Nest feel familiar to me because of the similarity between Nest and Angular. Option 1 on the other hand uses Express which is a minimalist framework, very popular one, but it doesn't provide the same scalability and brings decision fatigue about what to combine with it and may not utilize Typescript in the best way. Yet, on the other hand, it is flexible and it may be easier to manipulate things in different ways with it. Another very important thing is that it would be easier in my view to hire Node developers with skills in Express than NestJs. The majority of Node developers are much more familiar with JavaScript and Express.
What is your advice and why? I would love to hear especially from developers who worked on both Express and Nest
I highly recommend NestJS because:
- It's a framework you already like;
- Typescript is growing fast, being increasingly adopted in the community;
- All layers are well defined, not needing to think much about the organization;
- Great documentation;
- Nest CLI increases the development speed and keep the pattern;
Only using express and knowing that project can grow, you'ill need to define the structure well so that it doesn't get out of control.
Hi Louai,
I am quite sure that you know the answer to your problem. And I am here to help you to follow your arrow. I have worked with the most popular Nodejs frameworks and I can sure you that there's no stack better than NestJS (at all). Typescript is the best thing that happened with Javascript, this is a fact. Ans NestJS make a such wonderful job using all the best Typescript tools. NestJS is the most mature and organized API manager. Its modular dependence injection, the use of DDD, the solid idea of single responsibility, it's unit a and e2e testing support, its documentation is the most incredible work in the world of Nodejs. You won't regret choosing this framework, even if your application grows a lot. If you follow the documentation tips you will be able to create an amazing and organized application.
ps: I am not part of the NestJS team, I am just a guy tired of wasting time with dumb and bad Frameworks and its bad documentations. I find relief in NestJS with all the time it's saved to me, it helped me to improve my job and let me create great things with Nodejs.
Hi, I'm in a similar position, but related to personal projects. After falling in love with few frameworks in the first day and rejecting them in day 2, I started learning nestJS last week. I currently develop personal side projects using cakephp, and I intend to migrate to nest + vue. This week I'm taking a nestJS course in order to be sure that this is what I want by praticing a little. If you didn't do it yet, I suggest you try to code a todo app or a similar example API using nest, so you can "feel" if this is indeed what you want to use in this larger-scale project.
Some of the characteristics that got my attention to nestJS are typescript, a lot of annotations/decorations, an oppinionated approach to organizing the project, nice documentation and discord, and it's evolution at npm trends shows me it's probably not going to vanish or get buggy anytime soon.
I would definitely suggest NestJs over other options because NestJs gives a lot of tooling. it would definitely suggest NestJs over other options because NestJs gives a lot of tooling & it gives a lot of functionality out of the box. If your team worked with angular 2+ then it will really easy to learn.
First of all, my experience using either Node.js with Express or NestJS is not wide. I liked NestJS due to it's similarity to Angular, so when you know Angluar and like TypeScript you are going to love NestJS, it will be instantly very familiar and easy to use, it's adds a good structure to the project out of the box and well, it uses TypeScript, which is a more structured language - it's good for scalability. As for performance concern s - NestJS is based on Node, it just brings Angular's modular structure to it, so the question is more about how is the additional layer influences the performance - I cannot answer that.
Have you checked out Hapi as an alternative? I'ts not Typescript by default though. If that doesn't seem too interesting, it sounds like you want to go with NestJS :)
We builded Duomly with: BE: Node.JS & Nest.JS & TypeScript & PostgreSQL and FE: React & Sass & Javascript.
The whole of the stack is JS related what helps us to keep development on a track. When building backend we decided to go go for TS & Nest.js because we had experience with Javascript and still wanted to have control over types.
Pros of FeathersJS
- Real-time12
- Choose any ORM7
- Datastore Agnostic7
- Flexible Plugins6
- Choose Socketio or Primus5
- Easy Rest4
- Isomorphic Services API4
- Open source4
- Scalable3
- Easy to use with Graphql3
- Documentation3
- Service-oriented architecture3
- Data-driven APIs3
- Uses express, will support other options soon3
- Advanced Composable Service Middleware called holds3
Pros of NestJS
- Powerful but super friendly to work with54
- Fast development42
- Easy to understand documentation40
- Angular style syntax for the backend36
- NodeJS ecosystem32
- Typescript31
- Its easy to understand since it follows angular syntax27
- Good architecture18
- Integrates with Narwhal Extensions13
- Typescript makes it well integrated in vscode12
- Graphql support easy8
- Agnosticism7
- Easily integrate with others external extensions5
- Official courses1
Sign up to add or upvote prosMake informed product decisions
Cons of FeathersJS
Cons of NestJS
- Difficult to debug10
- User base is small. Less help on Stackoverflow10
- Angular-like architecture5
- Updates with breaking changes3
- Javascript3
- Frontend in backend1
- Unstable1