Podstawowy szablon aplikacji Express.js

|
Robert
| komentarze | ExpressJS

Dzisiaj zaprezentuję minimalną wymaganą ilość kodu do uruchomienia swojej usługi HTTP w ramach Node.js oraz Express.js. Node.js to otwartoźródłowe i wieloplatformowe środowisko uruchomieniowe dla języka JavaScript. Kiedyś, w czasach kiedy zaczynałem przygodę z JS, jedynym miejscem w którym język ten był interpretowany była przeglądarka internetowa. Node.js współpracuje również z systemem operacyjnym w którym zostanie uruchomiony, w związku z tym pozwala na tworzenie aplikacji serwerowych tak jak wspomniana już usługa HTTP czy jak ktoś woli - serwer WWW. Express.js to framework który ułatwia budowanie aplikacji webowych zarówno backendowych (REST Api), frontendowych (React.js) jak i fullstackowych. Czemu ułatwia? Express nie jest konieczny, aby stworzyć serwer HTTP, możliwe to jest natywnie w ramach Node.js:

// załącz moduł http
const http = require("http");

const hostname = "127.0.0.1";
const port = 8000;

// tworzymy serwer HTTP
const server = http.createServer((req, res) => {

   // Ustawiamy nagłówek 200 z typem textowym
   res.writeHead(200, {'Content-Type': 'text/plain'});

   // Wysyłamy odpowiedź
   res.end('Witaj świecie');
});

// Wyświetlamy komunikat w logu informujący o działaniu serwera
server.listen(port, hostname, () => {
   console.log(`Serwer działa pod adresem http://${hostname}:${port}/`);
})

Proste, prawda? Zobaczmy, jak to zostanie zrealizowane używając frameworka Express.

// Wczytujemy moduł express
const express = require('express');

const port = 3000;

//inicjujemy aplikację
const app = express();

// pod adresem "/" wyświetlony zostanie komunikat
app.get('/', function(req, res) {
  res.send('Witaj świecie!');
});

// uruchamiamy usługę 
app.listen(port, function() {
  console.log(`Serwer dostępny jest pod adresem https://localhost:${port}/`);
});

Jeśli wróciłeś już uwagę, Express ułatwia pracę, dzięki funcji app.get() definiując z góry ścieżkę która wywoła dany fragment kodu (request, req), w przeciwieństwie do natywnego rozwiązania w którym niezgrabnie za pomocą instrukcji warunkowych musieli byśmy zdefiniować ścieżki kosztem czytelności i elastyczności projektu. Ponadto, aby zwrócić (response, res) to, co zostanie wyświetlone w obrębie przeglądarki wystarczy jedna (nie dwie) linia kodu z pomocą funkcji res.send(). Express daje o wiele więcej możliwości, np. dla wysłania dnych w formacie JSON wystarczyło by res.json('{klucz:"wartosc"}');. W połączeniu z innymi modułami daje on duże możliwości, o czym przekonamy się w następnych wpisach.