Create your first Node.js backend with Express
Tags: javascript, codenewbie, beginners, node
Published: 2021-03-05 12:37:11

In the [last lecture](https://js.coderslang.com/sign-in), you saw the server-side analogy of the `Hello, world` that you wrote as your first task in VSCode. Our program was able to process the request and return a response, which was displayed by the browser.

Today, you are implementing your first Node.js backend!

## Express.js and npm modules

When talking about backend development in Node.js, in most cases we mean working with `Express.js`. It is an open-source framework that is distributed using `npm`.

If you don't know how to work with npm packages yet, I recommend reading these two articles:

- [Find and install npm modules](https://learn.coderslang.com/0011-how-to-use-open-source-npm-packages/)
- [Importing and using npm modules](https://learn.coderslang.com/0014-how-to-import-and-use-npm-modules/)

To add `Express.js` to your project,  you must first install it:

```bash
npm install --save express
```

The `--save` flag means that express will be added to the `dependencies` section in the `package.json` file, where the dependencies of your Node.js project are stored.

After installation, add import:

```javascript
import express from 'express';
const server = express();
```

Express.js and Node.js hide from us a lot of complexities associated with handling HTTP requests and all the low-level networking.

To add a handler for `GET` requests, we need to call the function `server.get(route, handler)`, where `route` is a string describing the path to the resource, and `handler` is a function that will be executed when the `GET` request hits the  `route`.

```javascript
server.get('/', (req, res) => {
  return res.send('Hello, Express.js!');
})
```

We use `/` as the path, but it could be something else, like `/about`, `/blog`, or  `/profile`.

The handler function takes two parameters `req` and `res`. They are very important, but for now, remember that you can send the response using the `res.send()` function. If you don't call `res.send()` but just write `return 'hello world';` then the server will not be able to respond.

Next, we need to start the server.

Let's use the `listen(port, callback)` function. It expects 2 parameters. You can choose any free port in your system as a `port` param, and `callback` is a function that will be executed after the server is started. Usually, it displays information that the server is running on the specific port and everything is fine.

```javascript
const port = 8080;

server.listen(port, () => {
  console.log(`Server is running on port ${port}`);
});
```

If you follow the instructions, save the javascript code to the file `index.js` and write `node index.js`, then you will start your first server written using the framework `Express.js`.

While it will not yet be available to the outside world, if you try to navigate to `localhost:8080` in your browser, you will see that the server responds with `Hello, Express.js!`.

## Questions?

*— How to understand which port in the system is free?*  
— To keep things simple, just choose ports between 3000 and 9000.

*— What is `localhost`?*  
— This is your computer's abbreviated address. Also, you can use the full IP address `127.0.0.1`. It is reserved and always points to the local computer. A "self-reference" of a sort.

*— What happens if I try to navigate to `localhost:8080/about` but don't implement that route in `server.get`?*  
— The server will return an error `404`, which means that the requested resource was not found.

[Learn Full-Stack JavaScript](https://js.coderslang.com)