As per Wiki :
Node.js connection handling mechanism is super efficient compared to our existing classical thread based model. Thread-based networking is relatively inefficient and very difficult to use. Furthermore, users of Node.ja are free from worries of dead-locking the process, since there are no locks. Almost no function in Node directly performs I/O, so the process never blocks. Because nothing blocks, scalable systems are very reasonable to develop in Node.js
It’s an open source JIT(Just In Time) compiler written in C++ which has outperformed PHP, Ruby and Python performance wise.
This C++ library that handles Node’s asynchronous I/O operation and main event loop. There are thread pool reserve in Libuv which handles the thread allocation to individual I/O operations.
Other Low-Level Components c-ares, http parser, OpenSSL, zlib, and etc, mostly written in C/C++.
Binding Binding basically is a wrapper around a library written in one language and expose the library to codes written in another language so that codes written in different languages can communicate.
Following are some prominent highlights that make Node.js the first choice of software developers specially backend.
It is asynchronous and event driven All APIs of Node.js library are asynchronous, that is, non-blocking. It essentially means a Node.js based server never waits for an API to return data. The server moves to the next API after calling it and a notification mechanism of Events of Node.js helps the server to get a response from the previous API call.
Single Threaded but Highly Scalable Node.js uses a single threaded model with event looping. Event mechanism helps the server to respond in a non-blocking way and makes the server highly scalable as opposed to traditional servers like Apache which create limited threads to handle requests.
No Buffering Node.js applications never buffer any data. These applications simply output the data in chunks.
Node.js as a platform fits and is typically used when the requirements include