Ottimizzazione automatica con HTML5 Boilerplate Build

HTML5 Boilerplate è ampiamente riconosciuto come una solida base per la costruzione di nuovi siti e applicazioni basati sul web. Detto questo, pochi sanno che lo strumento offre molto più che semplicemente impostare il tuo ambiente di sviluppo. Ti aiuta anche a "concludere" il tuo lavoro fornendo un fantastico processo di compilazione multipiattaforma.


The Build Script, con Paul Irish


Panoramica

Quindi perché potrebbe essere necessario questo strumento di costruzione? Perché è cotto in HTML5 Boilerplate e può aiutarti ad automatizzare l'ottimizzazione delle prestazioni web. Abbiamo scelto di utilizzare Apache Ant per gestire il carico di lavoro. Come mai?

Tutti gli altri strumenti hanno limitazioni che l'autore originale di Ant non potrebbe vivere con lo sviluppo di software su più piattaforme.

Molti sviluppatori non hanno familiarità con il processo di compilazione. Ma non preoccuparti; uno strumento di costruzione non è un mostro spaventoso. Tutto può essere configurato tramite un file XML relativamente semplice. Questo articolo ti aiuterà a capire come configurare lo strumento di costruzione, personalizzare il processo di compilazione e infine modificare le variabili ed eseguire la compilazione.


La struttura della directory

Lo script di build fa alcune ipotesi su come i tuoi file sono ordinati e strutturati. Ecco la struttura delle cartelle di HTML5 Boilerplate:

  • / js / libs / - contiene librerie di script comuni: Modernizr, jQuery e un pngfix per IE6
  • / Js / mylibs / - contiene script di librerie personalizzate specifiche del sito
  • /plugins.js - tutti i plugin jQuery
  • /script.js - JavaScript specifico per sito / pagina

La struttura della cartella di build

Il costruire/ cartella contiene i seguenti elementi:

build.xml

I file di build di Apache Ant sono scritti in XML. Questo file contiene il nostro progetto (Boilerplate Build) e obiettivi. Le destinazioni contengono elementi di attività. Ogni elemento dell'attività del file di build può avere un id attributo e in seguito può essere indicato dal valore fornito, che deve essere univoco.

default.properties

default.properties contiene le opzioni di compilazione predefinite, la struttura del progetto e le opzioni di creazione hardcore, che esamineremo a breve.

build.properties

Questo file definisce le sostituzioni per default.properties. Questo dovrebbe essere creato da un utente quando lui o lei ha bisogno di sovrascrivere determinati valori. Di conseguenza, non dovrebbe essere posto sotto il controllo della versione.

utensili

Gli strumenti sono un insieme di pacchetti, che includono opyipng, JPEGTran, compressore YUI e Compressore HTML.


Imposta lo strumento di costruzione

Poiché l'obiettivo dello strumento di creazione è di essere indipendente dalla piattaforma, esamineremo i passaggi necessari per configurarlo, in base al tuo OS scelto.

  • finestre - Prendi e installa WinAnt.
  • Mac OSX - Utilizzando homebrew, installa i seguenti pacchetti: brew install libjpeg optipng. Con MacPorts, utilizzare il seguente comando di installazione: porta installa jpeg optipng
  • Ubuntu (Linux) - Usando apt, installa i seguenti pacchetti: apt-get install libjpeg-progs optipng

Procedura dettagliata del file di build

Lo strumento di compilazione non è altro che un file XML basato su Apache Ant. Di seguito è riportato un passaggio del processo di generazione predefinito. Questi elementi possono essere configurati modificando il build.xml file.

Concatenamento / Minimizzazione di JavaScript

   ?     
  • Il / js / libs / i file sono miniati, ma non concatenati. Modernizr dovrebbe essere solo nel capo del documento. jQuery potrebbe essere estratto da un CDN e il pngfix sarà incluso solo per IE6.
  • / Js / mylibs / contiene le tue altre varie librerie e plugin JavaScript. Tutti i file memorizzati qui qui saranno ridotti (a meno che non finiscano con .min.js), e quindi concatenato insieme.
  • plugins.js e script.js, nel / Js / cartella, sono tutti tuoi. Questi saranno anche miniati e concatenati con il mylibs / File.

Minificazione CSS

     ? 

Tutti i file CSS vengono minimizzati usando il compressore YUI. Il precedente script Ant verrà eseguito style.css attraverso il compressore YUI per la minificazione.

Ottimizzazione dell'immagine

        ? 

In HTML5 Boilerplate, abbiamo scelto di utilizzare optipng e jpegtran per l'ottimizzazione dell'immagine rispettivamente per immagini PNG e JPG. Detto questo, ci sono molti strumenti per l'ottimizzazione delle immagini. Se desideri farlo, sei libero di sostituire gli strumenti con i tuoi strumenti di ottimizzazione delle immagini preferiti.

Ad esempio, Smush.it utilizza ImageMagick per identificare il tipo di immagine e convertire i file GIF in file PNG. Utilizza quindi gifsicle per ottimizzare le animazioni GIF eliminando i pixel ripetuti in diversi fotogrammi.

Rimozione della codifica solo per lo sviluppo

  ?  Commentando le linee di console.log       

File come console.log, non sono necessari file di profilazione e test unitari per il rilascio del sito.

Minimizzazione dell'HTML

       

Di seguito sono elencate alcune varie opzioni per la minimizzazione dei file HTML:

  • htmlbuildkit - Conserva commenti, spazi multipli e comprime JavaScript e CSS in linea.
  • htmlclean - Conserva più spazi, rimuove le quotazioni non necessarie e comprime JavaScript e CSS in linea
  • htmlcompress - Rimuove le quotazioni non necessarie e comprime JavaScript e CSS in linea.

Numerazione della linea di base automatizzata / busting della cache

HTML5 Boilerplate utilizza la stringa di query per il controllo delle versioni di JavaScript / CSS e il busting della cache.

HTML5 Boilerplate utilizza per impostazione predefinita la stringa di query per il controllo delle versioni di JavaScript / CSS e il busting della cache. Lo svantaggio di questo approccio è che alcuni proxy intermedi - e potenzialmente altri client - potrebbero non memorizzare nella cache le risorse che contengono stringhe di query. Ciò è dovuto all'euristica di base che contrassegna tali richieste come dati dinamici.

Lo strumento di generazione rimuoverà innanzitutto il controllo delle versioni della stringa di query e utilizzerà la numerazione della linea di base automatizzata per il controllo del rilascio e il busting della cache.

Configurazione esclusa

             

Non tutti i file dovranno essere pubblicati. Un perfetto esempio di ciò sarebbero i file generati dal sistema di controllo delle versioni come subversion e git.

Per impostazione predefinita, esiste un elenco di tipi di file e directory che verranno esclusi. Per aggiungere a questo elenco, è possibile cercare e trovare e aggiungi i tuoi exludes personalizzati ad esso.


Procedura dettagliata di default.properties

Le variabili all'interno del file di build sono definite in default.properties e build.properties.

Costruire opzioni

  • build.concat.scripts = true - Se impostato, più file di script verranno uniti insieme in un unico file coeso.
  • build.delete.unoptimized = true - Se impostato, i file non ottimizzati verranno eliminati.
  • file.exclude = nonexistentfile - Esclude il filtro file per la pubblicazione (non può essere vuoto).

Struttura del progetto

 dir.publish = pubblica dir.build = build dir.tools = $ dir.build / tools dir.test = test dir.demo = demo dir.js = js? 

La struttura del progetto contiene nomi di directory, come quelli mostrati sopra, così come la cartella JS principale, le librerie di utility JS e le cartelle che dovrebbero essere solo miniate ma non concatenate.

Altre opzioni di costruzione

  • build.info = buildinfo.properties - La creazione di versioni è definita
  • tool.yuicompressor = yuicompressor-2.4.2.jar - Compressore YUI è definito con yuicompressor-2.4.2.jar

Va bene - Ma come posso usare questo?

Infine, impareremo esattamente come è possibile utilizzare lo strumento di costruzione nei tuoi progetti! Fare riferimento ai seguenti passaggi per eseguire lo strumento di creazione.

  • Apri un'interfaccia a riga di comando e vai alla cartella del progetto.
  • Passare alla cartella di creazione: cd build /
  • Ci sono quattro modi diversi per costruire il tuo sito: il modo predefinito è: formica
  • Quando lo script di compilazione modifica il codice HTML per fare riferimento al nuovo script minificato (di solito denominato qualcosa di simile script-002.min.js), cerca alcuni commenti HTML che si riferiscono all'inizio e alla fine del blocco di script. Attualmente, cerca .

Opzioni di costruzione

Ecco una lista di varie opzioni di costruzione che puoi scegliere per soddisfare le tue particolari esigenze:

  • formica - ottimizzazioni html minori (virgolette extra rimosse). script in linea / stile minisito (predefinito)
  • formicaio della formica - tutto lo spazio bianco html mantenuto. script in linea / stile miniato
  • ant minify - sopra ottimizzazioni più pieno di minificazione HTML
  • testo della formica - come costruire ma senza l'ottimizzazione dell'immagine (png / jpg)

Conclusione

L'ottimizzazione delle prestazioni non deve essere costosa o richiedere molto tempo. Con alcune regole riutilizzabili, è possibile impostare lentamente un processo di costruzione per automatizzare gli aspetti ripetitivi del lavoro di ottimizzazione. Apache Ant fornisce un framework potente, ma facile da usare, mentre HTML5 Boilerplate fa leva su questo per rendere l'ottimizzazione del web il più semplice possibile per gli sviluppatori web front-end. Grazie mille per la lettura!