There actually is an acronym for the types of applications Node is designed for: DIRT. It stands for data-intensive real-time applications. Because Node itself is very lightweight on I/O, it’s good at shuffling or proxying data from one pipe to another. It allows a server to hold a number of connections open while handling many requests and keeping a small memory footprint. It’s designed to be responsive, like the browser
Real-time applications are a new use case of the web. Many web applications now provide information virtually instantly, implementing things like online whiteboard collaboration, real-time pinpointing of approaching public transit buses, and multiplayer games. Whether it’s existing applications being enhanced with real-time components or completely new types of applications, the web is moving toward more responsive and collaborative environments. These new types of web applications, however, call for a platform that can respond almost instantly to a large number of concurrent users. Node is good at this, and not just for web applications, but also for other I/O-heavy applications
DIRTy by default
Node was built from the ground up to have an event-driven and asynchronous model.
JavaScript has never had standard I/O libraries, which are common to server-side languages. The “host” environment has always determined this for JavaScript. The most
common host environment for JavaScript—the one most developers are used to—is
the browser, which is event-driven and asynchronous
Node also includes a core set of modules for many types of network and file I/O. These include modules for HTTP, TLS, HTTPS, filesystem (POSIX), Datagram (UDP), and NET (TCP). The core is intentionally small, low-level, and uncomplicated, including just the building blocks for I/O-based applications. Third-party modules build upon these blocks to offer greater abstractions for common problems
Platform vs. framework
Node is a platform for JavaScript applications, and it’s not to be confused with a framework. It’s a common misconception to think of Node as Rails or Django for JavaScript, whereas it’s much lower level.