Segui su:
Programmazione Web Italia

Articoli JavaScript

Scopri i JSON Web Token (JWT) - autenticazione stateless per le tue applicazioni web

Scopri i JSON Web Token (JWT) - autenticazione stateless per le tue applicazioni web

In termini di sicurezza e scalabilità, i JSON Web Token (JWT) emergono come la chiave per garantire un’autenticazione sicura, efficiente e senza soluzione di continuità. Scopri come questa tecnologia può rivoluzionare il modo in cui gestisci l’accesso alle tue risorse online!

Introduzione

Cos’è e a cosa serve un JWT

Nel mondo dello sviluppo web, la sicurezza e la gestione dell’autenticazione sono aspetti fondamentali: uno degli strumenti più utilizzati per garantire un accesso sicuro e scalabile nelle applicazioni moderne è rappresentato dal JWT (JSON Web Token).

Un JWT è un token che permette di scambiare informazioni in modo sicuro tra due parti (tipicamente un client ed un server). Grazie alla sua struttura basata su JSON e alla possibilità di essere firmato digitalmente, i JWT vengono spesso utilizzati per autenticazione e autorizzazione in applicazioni web e API.

Rispetto ai tradizionali metodi basati sulle sessioni, i JSON Web Token offrono un approccio stateless, riducendo il carico sui server, che non dovranno più salvare i dati di sessione, e migliorando la scalabilità delle applicazioni. I JWT, leggeri e compatti, sono una soluzione particolarmente adatta per architetture moderne e distribuite, come le applicazioni single-page e i sistemi microservices. [Continua]

Pubblicato il

Throttle e debounce in javascript: cosa sono e come usarli (con esempi)

Throttle e debounce in javascript: cosa sono e come usarli (con esempi)

Quando il nostro codice deve rimanere in ascolto di eventi che vengono generati troppo frequentemente, è possibile un notevole calo delle prestazioni e conseguente deterioramento dell'esperienza utente. Uno sviluppatore deve saper agire di conseguenza togliendo dal suo cappello virtuale due degli strumenti più utili in questi casi: il debouncing e il throttling!

Introduzione

Nella programmazione JavaScript, capita spesso di dover gestire eventi che accadono o si susseguono ad intervalli di tempo molto frequenti; per esempio lo scoll del mouse, il resize della finestra o la digitazione di alcuni caratteri all'interno di un campo di testo. Nel primo caso in elenco, lo scroll della rotellina del mouse per visualizzare il contenuto below-the-fold può generare decine se non centinaia (dipende dalla velocità di scoll) di eventi. Se il nostro compito, come programmatori, è quello di mettersi all'ascolto di questi eventi e lanciare l'esecuzione di un metodo ad ognuno di essi, potremmo incorrere in seri problemi di performance con rallentamenti visibili nelle applicazioni e conseguente degradazione della user experience.

Qui entrano in gioco due tecniche fondamentali: throttle e debounce. Entrambe servono a limitare il numero di volte in cui una funzione viene eseguita, ma lo fanno in modi diversi e con scopi differenti. In questo articolo vedremo ciascuna di queste tecniche, quando usarle e come implementarle... [Continua]

Pubblicato il

JavaScript Promise: impara a gestire eventi asincroni! (con aggiornamento al metodo "Promise.withResolvers")

Impara a gestire efficacemente eventi asincroni con le JavaScript Promise!

Ogni promessa è debito... Ma quanto è romantico il termine Promise in JavaScript? Sapere, poi, che dietro a questa parola si nasconde il fatto di non fermare l'esecuzione single-thread del JavaScript Engine mentre si attende l'esito di una operazione asincrona rende tutto più commovente! ;)

Cos'è una operazione asincrona?

Le funzioni generatrici in JavaScript

Iniziamo prima definendo che cos'è la programmazione sincrona: in tale contesto il programma esegue tutte le istruzioni che lo compongono in maniera lineare una dopo l'altra. In altri termini, l'esecuzione attende di aver portato a termine una istruzione prima di passare a quella immediatamente successiva. Un esempio banale è il seguente, dove ogni log viene stampato a console esattamente come ce lo aspettiamo: "1", "2", "3"

La programmazione asincrona, invece, non è lineare e prevede che una istruzione venga eseguita dopo un'altra anche se definita precedentemente all'interno del codice. Questo è necessario quando vengono eseguiti compiti che prevedono un certo lasso di tempo per essere eseguiti (per esempio: una richiesta HTTP per ottenere delle risorse remote, una query ad un database o una operazione di I/O verso il disco rigido...). In questo caso è preferibile che l'esecuzione continui con il resto del codice senza dover attendere il risultato della prima operazione. Appena il risultato è pronto (per esempio: la richiesta HTTP ha restituito un JSON) sarà possibile riprendere...[Continua]

Pubblicato il

Cosa sono i Generator in JavaScript? Scopri tutte le potenzialità dei Generatori!

Cosa sono i Generator in JavaScript? Scopri tutte le potenzialità dei Generatori!

I generatori JavaScript sono poco conosciuti all'interno del panorama degli sviluppatori Web, ma, una volta compreso il loro funzionamento, offrono un notevole vantaggio nella gestione del codice e del flusso di dati. Dai concetti di base ai casi più specifici, in questo articolo si descriveranno le caratteristiche salienti e si proporranno differenti esempi pratici questo particolare strumento.

Introduzione

Le funzioni generatrici in JavaScript

Le funzioni generatrici (generators) sono state introdotte con ECMAScript 6 (ES6), la loro particolarità principale è riferita al fatto che l'esecuzione del loro codice può essere interrotta e ripresa più volte generando e restituendo valori "intermedi" al metodo chiamante. Grazie alla loro capacità di sospendere e riprendere l'esecuzione, sono una scelta ottimale nel caso di iterazioni complesse, flussi di dati, implementazioni asincrone o quando si lavora con sequenze di valori o calcoli "on demand".

Differenza tra una funzione ordinaria e una funzione generatrice

A differenza di una normale funzione, che restituisce un solo valore al termine della sua esecuzione, i generatori JavaScript restituiscono molteplici valori mano a mano che il loro codice viene eseguito.... [Continua]

Pubblicato il

Le Closure in JavaScript

Le Closure in JavaScript

Tutte le volte che ho dovuto affrontare il discorso CLOSURE in JS finivo per avere una impressione riassumibile nella frase: "Tutto molto bello, ma... QUINDI?"

Cosa sono le closure in JavaScript?

Una closure è la capacità di una funzione, definita all'interno di un'altra funzione contenitrice, di accedere allo scope della funzione esterna, anche dopo che questa ha cessato la sua esecuzione. Attraverso le closure (ed ad un apposito handler), insomma, posso accedere allo scope (metodi e attributi) di una funzione (quella contenitrice) da un qualsiasi ambito esterno.

Ecco un esempio di closure. Continua...

Pubblicato il