Node.js is an extremely powerful framework developed on Chrome’s V8 JavaScript engine that compiles the JavaScript directly into the native machine code and its open-source, cross-platform JavaScript runtime environment and library to run web applications outside the client’s browserIt is used to create server-side web applications.

Node.js is perfect for data-intensive applications as it uses an asynchronous, event-driven model. You can use  I/O intensive web applications like video streaming sites. You can also use it for developing: Real-time web applications, Network applications, General-purpose applications, and Distributed systems.

Node.js makes building scalable network programs easy. Some of its advantages include:

  • It is generally fast
  • It rarely blocks
  • It offers a unified programming language and data type
  • Everything is asynchronous 
  • It yields great concurrency

Node.js can be used to develop:

  • Real-Time Web Applications
  • Network Applications
  • Distributed Systems
  • General Purpose Applications

Node.js is a virtual machine that uses JavaScript as its scripting language and runs on a v8 environment. It works on a single-threaded event loop and a non-blocking I/O which provides a high rate as it can handle a higher number of concurrent requests. Also, by making use of the ‘HTTP’ module, Node.js can run on any stand-alone web server. 

A callback function is called after a given task. It allows other code to be run in the meantime and prevents any blocking.  Being an asynchronous platform, Node.js heavily relies on callback. All APIs of Node are written to support callbacks.

NPM stands for Node Package Manager, responsible for managing all the packages and modules for Node.js.

Node Package Manager provides two main functionalities:

  • Provides online repositories for node.js packages/modules, which are searchable on search.nodejs.org
  • Provides command-line utility to install Node.js packages and also manages Node.js versions and dependencies  

Some of the reasons why Node.js is preferred include:

  • Node.js is very fast
  • Node Package Manager has over 50,000 bundles available at the developer’s disposal
  • Perfect for data-intensive, real-time web applications, as Node.js never waits for an API to return data
  • Better synchronization of code between server and client due to same code base
  • Easy for web developers to start using Node.js in their projects as it is a JavaScript library

REPL in Node.js stands for Read, Eval, Print, and Loop. It represents a computer environment such as a window console or Unix/Linux shell where any command can be entered and then the system can respond with an output. Node.js comes bundled with a REPL environment by default. REPL can perform the below-listed tasks:

  • Read: Reads the user’s input, parses it into JavaScript data-structure and then stores it in the memory.
  • Eval: Receives and evaluates the data structure.
  • Print: Prints the final result.
  • Loop: Loops the provided command until CTRL+C is pressed twice.

Below is the list of the tasks which must be done asynchronously using the event loop:

  •  I/O operations
  • Heavy computation
  • Anything requiring blocking

Control flow functions enable us to do this in Node.js. A control flow function is a lightweight, generic piece of code which runs in between several asynchronous function calls and which take care of the necessary housekeeping to:

  1. control the order of execution,
  2. collect data,
  3. limit concurrency and
  4. call the next step in the program.