Definition from nodejs.org
Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient. Node.js' package ecosystem, npm, is the largest ecosystem of open source libraries in the world.
What NodeJS is not:
- Node is not a framework, it’s a server.
- Node wrappers over JavaScript V8 Runtime, are not made in JavaScript, but made in C.
- It’s not multi-threaded. It runs in a single thread with callback concept.
Why NodeJS is popular and a good choice:
- Easy to get started
Chrome's V8 JavaScript leads NodeJS to use Javascript which is most popular language on Github as official programming language
Full-stack experience on development application
Easy to jump start on development idea and easy to scale
I/O Non-blocking
Cross-platform
Lightweight and fast deployment
npm
This is not comparison between Node with other platforms, development projects is combination of many technologies and architecture. Every technologies have their pros and cons, so choose it based on your needs
Pros/Cons of NodeJS
Pros
Asynchronous event driven IO helps concurrent request handling.
Uses JavaScript, which is easy to learn.
npm, the Node packaged modules has already become huge, and still growing.
Active and vibrant community, with lots of code shared via github, etc.
Cons
Dealing with relational database
Callback hell
Node.js is not suited for CPU-intensive tasks. It is suited for I/O stuff only
NodeJS used for building diferrent type of applications:
Web application (with Jade/Pug) --- personal opinion: it's good but not competitive with other front-end technologies like React, Angular, VueJS, etc ...
Desktop application (with Electron, AppJS) --- tips: popular code editor VSCode is built on Electron
Webserver (like Nginx/ Apache)
Javascript libraries
Many other kinds of applications