Podstawowy szablon aplikacji Express.js
| Robert | komentarze | ExpressJSDzisiaj 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.