Dissecting the code

Let's take a closer look at our Express app:

const express = require("express");
const app = express();
const port = 5000;

app.get("/", (req, res) => {
  res.send("Hello Express!");
});

app.listen(port, () => {
  console.log(`Express app listening at http://localhost:${port}`);
});

We will explore it line by line:

  • The require("express") returns a function which we capture in the express variable.
  • This function returns an object which we capture in the app variable by invoking express().
  • The app object has methods for handling HTTP requests among other things.
  • The app.get() handles a HTTP Get request.
    • The first argument is a path, a string representing part of a URL that follows the domain name (see "Anatomy of a URL" for more information).
    • The second argument is a callback function. We'll talk about it shortly.
  • The app.listen() binds and listens for connections on the specified port. This method is identical to Node's http.Server.listen(). It optionally takes a second argument, a callback function, which I've used to simply print a message to the terminal.