Nodejs 101
Tags: node, javascript, codenewbie, 100daysofcode
Published: 2020-05-30 18:44:37

Welcome to the fourth article of my series **'The Learning's 101'**. At the time of writing this article, I am on Day 97 of the #100DaysOfCode challenge.

In this article, I am not going to start with the basic answer to **' What is Nodejs?'** as we generally do. I am starting with giving you reasons to love Nodejs.

### **Why do I love Nodejs ?** 

* First things first, I love Javascript! Even though there were times when I was literally banging my against a wall while understanding DOM manipulation. 

**The fact that we can have javascript at frontend(React, Angular or Vue) as well as backend(Node) along with a javascript based data storing format(JSON). All this makes life easier for a developer**.  

*#JavascriptEverywhere*

![We love Javascript](https://media1.tenor.com/images/a22b7cd8dc2855aa29f41e53219e98d9/tenor.gif?itemid=14779645)

* When Nodejs walks into the room it also brings along the largest package repository(npm) with it. **npm** has a collection of about 350,000 packages to make your life easier.

**npm ecosystem is open to all, and anyone can publish their own module that can be listed in the npm repository.Some of the most useful npm modules are *express, socket.io, connect, router, mongoose, etc*.**

* Javascript gives power to your Nodejs app to be asychronous and of non-blocking nature which is very satisying for everyone. 

**I can send a request to an API which will not sent result back instantly, but even during the wait, I can work on a separate task without being blocked by the API.**


### **Where does NodeJS shines, and where it doesn't ?**

Like every other programming langauge,there are some bright side and some gray areas as well. Not all kind of application can be made using Nodejs as it does have some drawbacks.

Here are few types of application which shine out when using Nodejs for developement.

* **Non-blocking**

* **Event driven**

* **Data Intensive**

* **I/O Intensive**

![Node will help you](https://media2.giphy.com/media/3o7TKNjg8dxB5ysRnW/giphy.gif)

If your application focuses majorly on Data retrival, I/O operation, API call in an eventful manner and  run in a non-blocking manner with an asychronous approach then Nodejs is your go to techstack.

But if you are dealing with an application which wants you to do any of the following :

* **Data Calculation**

* **Processor Intensive**

* **Blocking Operation**

![Node no help](https://media1.tenor.com/images/644d026b6eaf517a72cb94653f6ec027/tenor.gif?itemid=13730615)

In these senarios, Nodejs isn't the best solution.

### **Your Ideal Built with Nodejs are...**

If you are planning to build:

*  **[Web Server](https://www.tutorialsteacher.com/nodejs/create-nodejs-web-server)**  

* **[Real time server](https://www.freecodecamp.org/news/simple-chat-application-in-node-js-using-express-mongoose-and-socket-io-ee62d94f5804/)** 

* **[RESTful API's](https://www.tutorialspoint.com/nodejs/nodejs_restful_api.htm)**

* **[Command Line Utilities](https://www.sitepoint.com/javascript-command-line-interface-cli-node-js/)**

* **[Build Tools](https://brainhub.eu/blog/15-best-node-js-tools-developers/)**