Tutorial > Creare una Web App con Node.js e Jelastic Cloud

Creare una Web App con Node.js e Jelastic Cloud

Pubblicato il: 03 febbraio 2020

Jelastic Cloud Node.js Sviluppo

Nel seguente tutorial vedremo come è possibile realizzare una semplice Web App in Node.js e come pubblicarla online utilizzando Jelastic Cloud.

L'applicazione di esempio utilizzata in questa guida risponderà a delle chiamate REST, permettendo al client il salvataggio e la lettura di un archivio di libri.

Utilizzeremo Express come framework per la gestione delle richieste web e la libreria SQLite per il salvataggio delle informazioni.

Creare un'applicazione server

Per creare un’applicazione compatibile con gli standard previsti da Node.js, devi prima di tutto inizializzare una configurazione base di npm: crea quindi una cartella per il progetto: in questo esempio la chiameremo "books".

Avvia quindi il seguente comando da console, dentro la cartella appena creata:

 npm init

Si avvierà una procedura guidata per la creazione di un file package.json, che conterrà tutte le informazione di base sul progetto e le sue dipendenze.

Utilizza i valori suggeriti per andare avanti, come sotto indicato:

This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sensible defaults.

See `npm help json` for definitive documentation on these fields
and exactly what they do.

Use `npm install ` afterwards to install a package and
save it as a dependency in the package.json file.

Press ^C at any time to quit.
package name: (books)
version: (1.0.0)
description:
entry point: (index.js)
test command:
git repository:
keywords:
author:
license: (ISC)
About to write to package.json:

{
  "name": "books",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}


Is this OK? (yes) yes

Rispondi affermativamente per completare la procedura.

Prosegui quindi installando i due moduli principali:

npm install --save express sqlite3
  • express: un framework in grado di gestire le richieste HTTP in ingresso;
  • sqlite3: un modulo client che ti permette di gestire piccoli database, dove andremo a salvare i nostri libri.

Aggiungendo il parametro --save indichiamo a npm di aggiornare il nostro package.json, aggiungendo queste due dipendenze al progetto.

Puoi quindi procedere a creare il punto di ingresso per l'applicazione, creando il file index.js nella stessa directory di package.json.

Utilizza il tuo editor di testo preferito per incollare il seguente contenuto nel file appena creato:

/**
 * Per prima cosa, includiamo i due moduli installati 
 * precedentemente
 */
var express = require('express');

var sqlite3 = require('sqlite3').verbose();

/**
 * A questo punto creiamo un database in memoria ( Ovvero 
 * non salvandolo su disco ) dove andremo a salvare i 
 * nostri dati
 */
var db = new sqlite3.Database(':memory:');

/**
 * Quindi creiamo una nuova tabella con solo due campi:
 * - title : Il titolo del libro
 * - author : Il nome completo dell'autore
 */
db.run("CREATE TABLE books (title TEXT, author TEXT)");

/**
 * Inizializziamo una nuova applicazione express
 */
var app = express();

/**
 * Utilizziamo al root principale del server per
 * elencare tutti i libri presenti
 */
app.get('/', function (req, res) {

    db.all(`SELECT * FROM books` , (err,rows) => {

        /**
         * Inviamo tutte le righe trovate nella tabella "books"
         */
        res.send( rows );
    });

});

/**
 * Invece per il salvataggio utilizzeremo il percorso
 * /save/ seguito dal titolo e dall'autore
 */
app.get('/save/:title/:author', function (req, res) {

    /**
     * Prepariamo l'istruzione di INSERT nella nostra tabella
     */
    var stmt = db.prepare("INSERT INTO books VALUES (?, ?)");

    /**
     * Ed eseguiamo la query di sopra, passando i dati presenti
     * nell url 
     */
    stmt.run( req.params.title, req.params.author , (err,rows) =>{

        /**
         * Infine inviamo uno stato "true" per indicare che il
         * salvataggio è avvenuto correttamente
         */
        res.send(true);
    });

    stmt.finalize();

});

/**
 * Avviamo quindi il server in ascolto sulla porta 8001
 */

app.listen( 8001 , function () {
    console.log('Books server ready');
});

Creare un nuovo ambiente Jelastic

Entra nel pannello di gestione di Jelastic Cloud e successivamente premi il tasto "NEW ENVIRONMENT" posizionato in alto a sinistra.

Crea un Nuovo Ambiente

Si aprirà la scheda di configurazione del nuovo ambiente.
Ambiente Node.js

Seleziona “Node.js” dai Tab presenti in alto e prepara il tuo ambiente come indicato sopra.

Completa l’installazione cliccando sul pulsante “Create”.

Effettuare il deploy dell'applicazione Node.js

Prima di effettuare il deploy vero e proprio devi necessario creare un archivio zip o tar con i seguente file creati precedentemente:

  • index.js
  • package.json

Una volta creato l'archivio, per procedere con l’upload del pacchetto all’interno della tua istanza utilizza il Deployment Manager cliccando sul pulsante “Upload”.
Carica Archivio

Seleziona l’archivio creato prima e completa l’upload.

Una volta terminato, utilizza il pulsante “Deploy to” come mostrato in figura:
Deploy dell'archivio

Seleziona l’Enviroment creato per l’applicazione e clicca il pulsante “Deploy”:
Seleziona Ambiente per il Deploy

Quando la procedura sarà completata puoi accedere alla tua istanza cliccando sul pulsante “Open in browser”:
Apri nel Browser

Se tutto funziona correttamente la tua istanza ti risponderà con:

[]

Utilizza quindi il browser per salvare i primi 3 libri visitando i seguenti url e ricordandoti di sostituire l’indirizzo con quello della tua istanza:

http://books.it1.eur.aruba.jenv-aruba.cloud/save/Il%20Decamerone/Giovanni%20Boccaccio

http://books.it1.eur.aruba.jenv-aruba.cloud/save/Il%20fu%20Mattia%20Pascal/Luigi%20Pirandello

http://books.it1.eur.aruba.jenv-aruba.cloud/save/Il%20barone%20rampante/Italo%20Calvino

Assicurati quindi che i libri siano stati salvati navigando verso l'url principale della tua istanza:

http://books.it1.eur.aruba.jenv-aruba.cloud/

Il server dovrebbe risponderti con il seguente contenuto:

[{"title":"Il Decamerone","author":"Giovanni Boccaccio"},{"title":"Il fu Mattia Pascal","author":"Luigi Pirandello"},{"title":"Il barone rampante","author":"Italo Calvino"}]