Formazione di Express e Node.js da StrongLoop

Questa traduzione fornita da StrongLoop / IBM.

È possibile che questo documento non sia aggiornato poiché la documentazione è in inglese. Per gli ultimi aggiornamenti, fare riferimento alla documentazione in inglese.

Passaggio a Express 5

Panoramica

Express 5.0 si trova ancora nella fase di release alfa, ma di seguito vengono mostrate le modifiche che verranno riportate nel release e come migrare l’applicazione Express 4 a Express 5.

Express 5 non è molto differente da Express 4: le modifiche all’API non sono così importanti come quelle che sono state effettuate nel passaggio dalla 3.0 alla 4.0. Anche se le API di base sono le stesse, ci sono comunque delle modifiche importanti; in altre parole, un programma Express 4 esistente potrebbe non funzionare se lo si aggiorna per utilizzare Express 5.

Per installare l’ultima alfa e per vedere in anteprima Express 5, immettere il seguente comando nella directory root dell’applicazione:


$ npm install express@5.0.0-alpha.2 --save

È quindi possibile eseguire i test automatizzati per trovare errori e correggere i problemi in base agli aggiornamenti elencati di seguito. Dopo aver gestito gli errori del test, avviare l’applicazione per verificare gli errori. Si noterà subito se l’applicazione utilizza qualsiasi metodo o proprietà non supportati.

Modifiche in Express 5

Di seguito viene riportato l’elenco di modifiche (a partire dal release alfa) che influenzeranno gli utenti di Express. Consultare pull request per un elenco di funzioni pianificate.

Proprietà e metodi rimossi

Modificato

Miglioramenti

Proprietà e metodi rimossi

Se si utilizza uno dei seguenti metodi o proprietà nell’applicazione, quest’ultima si chiuderà in modo anomalo. Quindi, sarà necessario modificare l’applicazione dopo aver effettuato l’aggiornamento alla versione 5.

app.del()

Express 5 non supporta più la funzione app.del(). Se si utilizza questa funzione verrà generato un errore. Per registrare le route HTTP DELETE, utilizzare al contrario la funzione app.delete().

Inizialmente era stato utilizzato il comando del al posto di delete, perché delete è una parola chiave riservata in JavaScript. Tuttavia, a partire da ECMAScript 6, delete e altre parole chiave riservate possono essere utilizzate liberamente come nomi di proprietà. È possibile leggere la documentazione in cui viene descritto come si è arrivati alla deprecazione della funzione app.del qui.

app.param(fn)

La firma app.param(fn) è stata utilizzata per modificare la funzionalità della funzione app.param(name, fn). È stata considerata obsoleta a partire dalla v4.11.0 e non è più supportata in Express 5.

Nomi di metodi al plurale

I seguenti nomi di metodi sono stati messi al plurale. In Express 4, l’utilizzo di vecchi metodi ha dato origine ad avvisi di deprecazione. Express 5 non li supporta più in alcun modo:

req.acceptsCharset() è stato sostituito con req.acceptsCharsets().

req.acceptsEncoding() è stato sostituito con req.acceptsEncodings().

req.acceptsLanguage() è stato sostituito con req.acceptsLanguages().

Due punti (:) nel nome per app.param(name, fn)

I due punti (:) nel nome della funzione app.param(name, fn) è una eredità di Express 3 e per il bene della compatibilità con le versioni precedenti, Express 4 supporta questa condizione ma comunque fornendo un messaggio di avviso di deprecazione. Express 5 lo ignorerà senza avvisi e utilizzerà il parametro nome senza inserire i due punti.

Questa procedura non dovrebbe influenzare il codice se si segue correttamente la documentazione di Express 4 di app.param, poiché non si parla dei due punti.

req.param(name)

Questo metodo poco chiaro e molto pericoloso che si utilizzava per richiamare i dati del modulo è stato rimosso. Ora sarà necessario ricercare il nome del parametro inviato nell’oggetto req.params, req.body o req.query.

res.json(obj, status)

Express 5 non supporta più la firma res.json(obj, status). Al contrario, impostare lo stato e successivamente associarlo al metodo res.json() come segue: res.status(status).json(obj).

res.jsonp(obj, status)

Express 5 non supporta più la firma res.jsonp(obj, status). Al contrario, impostare lo stato e successivamente associarlo al metodo res.jsonp() come segue: res.status(status).jsonp(obj).

res.send(body, status)

Express 5 non supporta più la firma res.send(obj, status). Al contrario, impostare lo stato e successivamente associarlo al metodo res.send() come segue: res.status(status).send(obj).

res.send(status)

Express 5 non supporta più la firma res.send(status), dove status è un numero. Al contrario, utilizzare la funzione res.sendStatus(statusCode), la quale imposta il codice di stato dell’intestazione della risposta HTTP e invia la versione di testo del codice: “Non trovato”, “Errore interno del server” e così via. Se è necessario inviare un numero utilizzando la funzione res.send(), citare il numero per convertirlo in una stringa, in modo tale che Express non lo interpreti come un tentativo di utilizzo di una firma vecchia non supportata.

res.sendfile()

La funzione res.sendfile() è stata sostituita da una versione in cui ogni frase composta inizia con una lettera maiuscola che utilizza ad esempio res.sendFile() in Express 5.

Modificato

app.router

L’oggetto app.router, che era stato rimosso in Express 4, è ritornato in Express 5. Nella nuova versione, questo oggetto è solo un riferimento al router Express di base, diversamente da Express 3, in cui un’applicazione aveva il compito esplicito di caricarlo.

req.host

In Express 4, la funzione req.host andava a rimuovere in modo non corretto il numero porta nel caso fosse stato presente. In Express 5 il numero porta viene conservato.

req.query

In Express 4.7 e da Express 5 in avanti, l’opzione parser query può accettare false per disabilitare l’analisi della stringa query quando si desidera utilizzare la propria funzione per la logica di analisi della stringa query.

Miglioramenti

res.render()

Questo metodo ora potenzia i funzionamenti asincroni per tutti i motori di visualizzazione, evitando i bug causati dai motori di visualizzazione con un’implementazione sincrona e che violavano l’interfaccia consigliata.