Ryan Dahl, One day he got inspired after seeing a file upload progress bar on Flick and got an understanding like browser did not know how much of the file had been uploaded and had to query the web-server. So he started working on such problem and created node.js which basically work asynchronous manner and doesn't wait for an API to return data.
The project was demonstrated at the inaugural European JSConf on November 8, 2009. Dahl presented Node.js, which combined Google's V8 JavaScript engine, an event loop, and a low-level I/O API. The project received a standing ovation.
Watch this presentation
What is Node.js
Node.js is a platform built on Chrome's JavaScript runtime for easily building fast and scalable network applications. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications that run across distributed devices.
Features of Node.js
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 And Very Fast - 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 which create limited threads to handle requests. Node.js uses a single threaded program and the same program can provide service to a much larger number of requests than traditional servers like Apache HTTP Server. Being built on Google Chrome's V8 JavaScript Engine, Node.js library is very fast in code execution.
No Buffering - Node.js applications never buffer any data. These applications simply output the data in chunks.
In 2011, a package manager was introduced for Node.js library, called npm. The package manager allows publishing and sharing of open-source Node.js libraries by the community, and is designed to simplify installation, updating and uninstallation of libraries.