Getting Started with NodeJS
Tags: javascript, webdev, tutorial, node
Published: 2021-06-24 17:25:29

## Introduction
In this article, I am going to introduce NodeJS with Node Package Module (NPM), step-by-step basic implementation and explanation.

This article covers the following areas of NodeJS.

* Introduction of NodeJS
* Installation of NodeJS and NPM
* Node Package Module (NPM)
* Package.json
* Basic Example

## NodeJS
[NodeJS](https://nodejs.org/en/) is an open-source, cross-platform runtime environment for developing server-side web applications. NodeJS also has an event-driven architecture capable of [asynchronous I/O](https://en.wikipedia.org/wiki/Asynchronous_I/O).

NodeJS uses an event-driven, non-blocking I/O model that makes it lightweight and efficient

## Installation of NodeJS and NPM
Installation of NodeJS and NPM is straightforward using the installer package available at NodeJS official web site.

* Download the installer from [NodeJS WebSite.](https://nodejs.org/en/)
* Run the installer.
* Follow the installer steps, agree the license agreement and click the next button.
* Restart your system/machine.

Now, test NodeJS by printing its version using the following command in Command Prompt:
```
 1. > node -v
```
and test npm by printing its version using command
```
 1. > npm -v
```
Simple way to test nodeJS work in your system is to create a javascript file which print a message.

Lets create app.js file
```
/* app.js file */
console.log("Node is working");
```
Run the app.js file using Node command > node app.js in command prompt.
```
 E:\> node -v
 v14.16.0
 E:\> npm -v
 v6.14.11
 E:\> node app.js
 Node is working
 E:\> 

```
You are done with installation.

## Node Package Module
[NPM](https://www.npmjs.com/) is the package module which helps javascript developers load dependencies effectively. To load dependencies we just have to run a command in command prompt:
```
1 > npm install
```

This command is finding a json file named as `package.json` in root directory to install all dependencies defined in the file.

## Package.json
[Package.json](https://docs.npmjs.com/cli/v7/configuring-npm/package-json) looks like:
```
{
  "name": "ApplicationName",
  "version": "0.0.1",
  "description": "Application Description",
  "main": "app.js",
  "scripts": {
    "start": "node app.js"
  },
  "repository": {
    "type": "git",
    "url": "https://github.com/npm/npm.git"
  },
  "dependencies": {
    "express": "~3.0.1",
    "sequelize": "latest",
    "q": "latest",
    "tedious": "latest",
    "angular": "latest",
    "angular-ui-router": "~0.2.11",
    "path": "latest",
    "dat-gui": "latest"
  }
}
```
The most important things in your package.json are name and version. Those are actually required, and your package won't install without them. The name and version together form an identifier that is assumed to be completely unique. Changes to the package should come along with changes to the version.

Repository
```
{
  "repository": {
    "type": "git",
    "url": "https://github.com/npm/npm.git"
  }
}
```
Specify the place where your code lives. Through this repository, developers can reach out and contribute to your application. If the git repository is not GitHub, then the `npm docs` command will be able to find you.

## Scripts
```
{
 "scripts": {
    "start": "node app.js"
  }
}
```
NPM provide many useful [Scripts](https://docs.npmjs.com/cli/v7/using-npm/scripts) like `npm install`, `npm start`, `npm stop` etc.

Some default script values are based on package contents.
```
1 "start": "node app.js"
```
If there is a app.js file in the root of your package, then npm will default the start command to node app.js.

## Dependencies
```
{
"dependencies": {
    "express": "~3.0.1",
    "sequelize":"latest",
    "q":"latest",
    "tedious":"latest",
    "angular":"latest",
    "angular-ui-router": "~0.2.11",
    "path":"latest",
    "dat-gui":"latest"
  }
}
```
[Dependencies](https://docs.npmjs.com/cli/v7/configuring-npm/package-json#dependencies) are specified in a simple object that maps a package name to a version range. Version Name must be Version exactly.

If you want to install the `latest` version of a file, you just have to put latest in place of the version name.

Tilde(~) is used to tell "Approximately equivalent to version".

## Basic Example
Create a app.js javascript file with following code
```
/*app.js*/

const http = require('http');

const hostname = '127.0.0.1';
const port = 3000;

const server = http.createServer(function(req, res) {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end('Hello World\n');
});

server.listen(port, hostname, function() {
  console.log('Server running at http://'+ hostname + ':' + port + '/');
})
```
As we need `http` to create an http server we use `require('http')` and pass it to a variable named `http`
```
1 var http = require('http');
```
We also need to defined hostname and port number, here we use `localHost` i.e `127.0.0.1` and `port` number `3000` and assign this to the variables `hostname` and `port`, respectively.
```
var hostname = '127.0.0.1';
var port = 3000;
```
Next we create the http server using the `createServer` method.
```
var server = http.createServer(function(req, res){
    res.statusCode = 200;
    res.setHeader('Content-Type', 'text/plain');
    res.end('Hello World\n');
});
```
This created the server as well as a response having `statusCode: 200`, `Content-Type` header of plain text and and ends with the string `Hello World`. This is the response that the server can send to browser.

the function has two parameters `req` and `res` which is the `request` from and `response` to the server, respectively.

In our example we are creating responses.

We created the server, now we have to assign it a hostname and port number.
```
server.listen(port, hostname, function() {
  console.log('Server running at http://'+ hostname + ':' + port + '/');
});
```
Here, the server listens to localhost on port 3000 and prints "Server running at [http://127.0.0.1:3000/](http://127.0.0.1:3000/)" in command prompt.

Now Run app.js file un node using command
```
node app
```
Open a browser and enter url [http://127.0.0.1:3000/](http://127.0.0.1:3000/). The browser will display Hello World message on the screen.

Now Run app.js file in node using command
```
E:\ >node app.js
Server running at http://127.0.0.1:3000/
```
![Browser](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0xe7esph7qqe7d3g7jnv.png)

If you've reached this point, thank you very much. I hope that this tutorial has been helpful for you and I'll see you all in the next.


If you like my work, please consider
[![Buy me a coffee](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jm11knj7d8zwcvo150q2.png)](https://www.buymeacoffee.com/cglikpo)
so that I can bring more projects, more articles for you


If you  want to learn more about Web Development don't forget to to [follow me on Youtube!](https://www.youtube.com/c/ChristopherGlikpo/featured)