The nature of web development has greatly changed because of the increasing popularity of JS. NodeJS is a JS runtime environment built on Chrome's JS engine. NodeJS employs push technology over websockets by which both the client and the server can start exchanging data liberally.
By Definition, Node.js uses non-blocking, event-driven I/O to remain lightweight and efficient in the face of data-intensive real-time applications across distributed devices.
This means that applications that are CPU-intensive or needs heavy computation SHOULD NOT use NodeJS.
Applications that need to handle large number of simultaneous connections, such as scalable Network applications SHOULD use NodeJS.
It operates on a single-thread using non-blocking I/O calls and hence it supports thousands of concurrent connections.The NPM - Node Package Manager:
- Every NodeJS installation comes with a built-in support for package management using the NPM tool.
- You can find a full list of packaged modules on the npm website - https://npmjs.com/ , or accessed using the npm CLI tool that automatically gets installed with Node.js.
- express?-? Express.js, a web development framework for Node.js, and the standard for the majority of Node.js applications.
- connect?-? Connect is an extensible HTTP server framework for Node.js, providing a collection of high performance “plugins” known as middleware; serves as a base foundation for Express.
- socket.io and sockjs?-? Server-side component of the two most common websockets components.
- pug (formerly Jade)?-? One of the popular templating engines, default in Express.js.
- mongodb and mongojs?-? MongoDB wrappers to provide the API for MongoDB object databases in Node.js.
- forever?-? Probably the most common utility for ensuring that a given node script runs continuously. Keeps your Node.js process up in production in the face of any unexpected failures.
Useful areas where NodeJS can be successfully used are Chat systems, APIs using ObjectDB like Mongo, Queued inputs, Data Streaming, Server-side Proxy, Application/System Monitoring Dashboards, server-side classic web applications.
NodeJS can be used in any use case that is not CPU intensive nor access any blocking resources as it was NOT created for solving compute scaling problem but to solve I/O scaling problem.