Lotrèk
21 July 2020

#lovogliopiùveloce - Controlla la pesantezza dei file javascript sul tuo sito


Giulio  profile image
Human:
Giulio 
Tempo
di lettura
3'

Abbiamo impiegato svariati mesi per rendere il più veloce possibile Barco Reale, vi sveliamo come abbiamo tenuto sotto controllo il peso dei nostri file javascript

Controllare la pesantezza del javascript nel tuo sito

Torniamo a parlare di Barco Reale e del suo sviluppo.

Oggi il focus è sul bundle size.

Innanzitutto, cos’è il bundle?

Come visto nel precedente articolo sull’utilizzo di JQuery, il codice javascript che abbiamo scritto, suddividendolo in molti file, e tutte le dipendenze che abbiamo usato verranno unite in uno o più file: questi sono i bundle.

Esistono diverse configurazioni per ottenere questo risultato, noi abbiamo scelto di avere un file javascript per ogni pagina (alcune pagine condividono lo stesso file javascript poiché si pongono lo stesso obiettivo finale).

Ho prestato un’attenzione che definirei snervante al peso del bundle finale, questo perché un bundle molto pesante influisce in modo negativo su numerosi aspetti del sito, per esempio indicizzazione, velocità  di caricamento e tempo necessario affinché la pagina sia interattiva per l’utente.

Per tenere sotto controllo il peso di questi file ci vengono in aiuto alcuni tool: vediamo quelli che abbiamo usato e una loro veloce configurazione.

1) Webpack Bundle Analyzer

Il primo tool che vediamo è un plugin per webpack (per saperne di più consulta l’articolo precedente), questo plugin ci permette di capire quanto il nostro codice e  ogni dipendenza che abbiamo usato influiscano nel peso finale attraverso una pagina web interattiva (o un file json).

Utilizzarlo è semplicissimo:

Dobbiamo importare il plugin all’inizio del nostro file di configurazione per webpack

const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;

Successivamente, lo inseriamo nei plugin che utilizziamo

module.exports = {
  plugins: [
    new BundleAnalyzerPlugin()
  ]
}

 

Non ci rimane che eseguire webpack. Alla fine dell’esecuzione ci verrà aperta una nuova scheda sul nostro browser con una mappa simile a questa: 

 

Dall’immagine possiamo vedere subito che lodash impatta moltissimo sul nostro bundle, moment invece un po' meno.

Dai risultati ottenuti si può subito capire se alcune dipendenze impattano troppo e nel caso sostituirle con altre dal peso più contenuto.

Ad esempio su BarcoReale ho preferito utilizzare dayjs con un peso di 2.8kb (gzippato) invece di momentjs con un peso di 70.4kb (gzippato) (dati ottenuti attraverso bundlephobia).

L’uso di questo plugin mi ha segnalato anche che aggiornando una dipendenza  il suo peso era enormemente aumentato (a causa dei polyfill) e quindi mi ha permesso di sceglierne una versione più vecchia, ma comunque sicura e performante.

2) SizePlugin

Anche questo è un plugin per webpack (disponibile anche per altri bundlers) che ci fornisce indicazioni sul peso di ogni nostro bundle considerando la compressione gzip.

Come per il precedente plugin aggiungerlo a webpack è velocissimo.

Lo includiamo :

const SizePlugin = require('size-plugin')

E lo includiamo nei plugin che utilizziamo:

module.exports = {
  plugins: [
    new SizePlugin()
  ]
}

Eseguendo webpack avremo un output dettagliato sul peso dei nostri bundle. Ecco  un esempio applicato proprio a Barco Reale. 

In aggiunta SizePlugin ci segnala anche di quanto il nostro bundle è aumentato e ci mostra visivamente con dei colori se il peso del file è eccessivo, nella media o buono.

Questo plugin crea anche un file chiamato size-plugin.json che memorizza per ogni build il peso dei nostri file, diventando così un diario molto prezioso per ricostruire, magari dopo qualche giorno o mese, la storia dei nostri file.

3) Coverage (Chrome)

Il browser Chrome (ma tanti altri browser hanno una funzione similare) ci può dire quanto codice javascript nel bundle viene effettivamente utilizzato.

Accedere a questa funzione non è difficile: è necessario aprire gli strumenti per sviluppatori e successivamente navigando i tre puntini laterali scegliere i tool aggiuntivi e in fine la voce coverage.

A questo punto basta cliccare il pulsante di refresh su gli strumenti per sviluppatori e il gioco è fatto!

 

Questi sono alcuni tool che ho utilizzato per controllare passo passo i vari bundle, per questa seconda tappa è tutto!

Vuoi saperne di più?

Iscriviti e riceverai gratuitamente sulla tua mail news, insight e report mensili sui trend del momento.

Registrandoti confermi di accettare la nostra privacy policy.


Condividi

Mi sono avvicinato al mondo dell'informatica da piccolo, complice la mia timidezza e i pochi amici, mi son trovato talmente bene che ho deciso di continuare, quello doveva essere il mio futuro e ho cercato di migliorare dando sempre il 100%.

Articoli Correlati

 Invio email in corso, yeah!
Richiesta inviata
Il tuo indirizzo email risulta già iscritto
C'è stato un problema riprova più tardi