Optimizare automată cu construirea de platformă HTML5

Șablonul HTML5 Boilerplate este recunoscut pe scară largă ca o bază solidă pentru construirea de noi site-uri web și aplicații. Acestea fiind spuse, puțini știu că instrumentul oferă mai mult decât pur și simplu configurare mediul de dezvoltare. De asemenea, vă ajută să vă "încheiați" lucrarea prin furnizarea unui proces minunat de construire pe mai multe platforme.


Scriptul Build, cu Paul Irish


Prezentare generală

Deci, de ce ai nevoie de acest instrument de construire? Deoarece este cuprinsă în Boilerplate HTML5 și vă poate ajuta să automatizați optimizarea performanțelor web. Am ales să mergem cu Apache Ant pentru a face față volumului de muncă. Cum se face?

Toate celelalte instrumente au limitări pe care autorul inițial lui Ant nu le putea trăi atunci când dezvoltă software pe mai multe platforme.

Mulți dezvoltatori nu sunt familiarizați cu procesul de construire. Dar nu vă faceți griji; un instrument de construcție nu este un monstru înfricoșător. Totul poate fi configurat printr-un fișier XML relativ simplu. Acest articol vă va ajuta să înțelegeți cum să configurați instrumentul de construire, să personalizați procesul de construire și, în final, să modificați variabilele și să executați construcția.


Structura directorului

Scriptul de construire face unele ipoteze despre modul în care fișierele sunt sortate și structurate. Aici este structura folderului HTML5 Boilerplate:

  • / js / libs / - conține biblioteci de script comune: Modernizr, jQuery și pngfix pentru IE6
  • / Js / mylibs / - conține script-uri personalizate pentru site-ul bibliotecii
  • /plugins.js - toate pluginurile jQuery
  • /script.js - JavaScript specific site-ului / paginii

Structura structurii folderului

construi/ dosarul conține următoarele elemente:

build.xml

Apache Ant build-urile sunt scrise în XML. Acest fișier conține proiectul nostru (Boilerplate Build) și obiectivele. Obiectivele conțin elemente de activitate. Fiecare element de sarcină al fișierului de construcție poate avea un id atribut și ulterior poate fi referit la valoarea furnizată, care trebuie să fie unică.

default.properties

default.properties conține opțiunile de construire implicite, structura proiectului și opțiunile de construire hardcore, pe care le vom examina în scurt timp.

build.properties

Acest fișier definește suprascrierile pentru default.properties. Acest lucru ar trebui să fie creat de un utilizator atunci când el sau ea trebuie să suprascrie anumite valori. În consecință, nu ar trebui să fie plasat sub controlul versiunii.

unelte

Instrumentele sunt un set de pachete, care includ opyipng, compresor JPEGTran, YUI și Compresor HTML.


Configurați Instrumentul de construire

Deoarece obiectivul instrumentului de construire este de a fi agnostic pe platformă, vom examina pașii necesari pentru configurarea acestuia, în funcție de sistemul de operare ales.

  • ferestre - Luați și instalați WinAnt.
  • Mac OS X - Folosind homebrew, instalați următoarele pachete: brew instalați libjpeg optipng. Cu MacPorts, utilizați următoarea comandă de instalare: instalarea portului jpeg optipng
  • Ubuntu (Linux) - Utilizând apt, instalați următoarele pachete: apt-get instalează libjpeg-progs optipng

Învârtirea fișierului de construcție

Instrumentul de construire nu este altceva decât un fișier XML care se bazează pe Apache Ant. Mai jos este o plimbare prin procesul de construire predefinit. Aceste elemente pot fi configurate prin editarea build.xml fişier.

Concatenarea / minimizarea JavaScript

   ?     
  • / js / libs / fișierele sunt minificate, dar nu sunt concatenate. Modernizr ar trebui să fie singur în cap a documentului. jQuery ar putea fi tras de pe un CDN, iar pngfixul va fi inclus doar pentru IE6.
  • / Js / mylibs / conține și alte diverse biblioteci și pluginuri JavaScript. Toate fișierele stocate aici vor fi minificate (dacă nu se termină cu .min.js), apoi concatenate împreună.
  • plugins.js și script.js, în / Js / dosar, sunt toate ale tale. Acestea vor fi, de asemenea, minificate și concatenate cu mylibs / fișiere.

Reducerea CSS

     ? 

Toate fișierele CSS sunt minificate folosind compresorul YUI. Scriptul de mai sus Ant va rula style.css prin compresorul YUI pentru minificare.

Optimizarea imaginilor

        ? 

În HTML5 Boilerplate, am ales să folosim OptiPng și jpegtran pentru optimizarea imaginilor pentru imaginile PNG și JPG, respectiv. Acestea fiind spuse, există o mulțime de instrumente de optimizare a imaginilor. Dacă doriți să faceți acest lucru, aveți libertatea de a înlocui instrumentele cu propriile instrumente de optimizare a imaginii preferate.

De exemplu, Smush.it utilizează ImageMagick pentru a identifica tipul de imagine și pentru a converti fișierele GIF în fișiere PNG. Apoi, folosește gificlul pentru a optimiza animațiile GIF prin eliminarea pixelilor repetate în diferite cadre.

Eliminarea codificării numai pentru dezvoltare

  ?  Comentând liniile console.log       

Fișiere cum ar fi console.log, profilări și fișiere de testare unitate nu sunt necesare pentru lansarea site-ului.

Minificarea HTML

       

Mai jos sunt prezentate cateva optiuni de modificare a fisierelor HTML:

  • htmlbuildkit - Păstrează comentarii, spații multiple și comprimă JavaScript și CSS în linie.
  • htmlclean - Păstrează mai multe spații, elimină ghilimele inutile și comprimă JavaScript și CSS inline
  • htmlcompress - Elimină citate și comprimări inutile în JavaScript și CSS.

Numerotarea inițială automată / Bustarea cache-ului

Șablonul HTML5 Boilerplate utilizează șirul de interogări pentru versiunea JavaScript / CSS și bustarea cache-ului.

Șablonul HTML5 Boilerplate implicit utilizează șir de interogări pentru versiunea JavaScript / CSS și bustarea cache-ului. Dezavantajul cu această abordare este că unele proxy-uri intermediare - și, eventual, alți clienți - nu pot să stocheze cache-urile care conțin șiruri de interogare. Acest lucru se datorează euristicii de bază care semnalează astfel de solicitări ca date dinamice.

Instrumentul de construire va elimina mai întâi versiunea șirului de interogare și va utiliza numerotarea automată a liniei de bază pentru controlul eliberării și bustarea cache-ului.

Configurarea exclude

             

Nu toate fișierele vor trebui publicate. Un exemplu perfect de acest lucru ar fi fișierele generate de sistemul de control al versiunilor, cum ar fi subversiunea și git.

În mod implicit, există o listă de tipuri de fișiere și directoare care vor fi excluse. Pentru a adăuga la această listă, puteți căuta și găsi și adăugați exludele dvs. personalizate la acesta.


Walkthrough de default.properties

Variabilele din fișierul de construcție sunt definite în default.properties și build.properties.

Construiți opțiunile

  • build.concat.scripts = true - Dacă este setat, mai multe fișiere de script vor fi împrăștiate împreună într-un singur fișier coeziv.
  • build.delete.unoptimized = adevărat - Dacă este setat, fișierele neoptimizate vor fi șterse.
  • file.exclude = nonexistentfile - Exclude filtrul de fișiere pentru publicare (nu poate fi gol).

Structura proiectului

 dir.publish = publicați dir.build = construiți dir.tools = $ dir.build / tools dir.test = test dir.demo = demo dir.js = js? 

Structura proiectului conține nume de directoare, cum ar fi cele prezentate mai sus, precum și folderul JS de bază, bibliotecile de utilități JS și folderele care ar trebui minificate, dar nu concatenate.

Alte opțiuni de construire

  • build.info = buildinfo.properties - Versiunea de construire este definită
  • tool.yuicompressor = yuicompressor-2.4.2.jar - Compresorul YUI este definit cu yuicompressor-2.4.2.jar

Bine - Dar cum folosesc asta?

În sfârșit, vom afla exact cum puteți utiliza instrumentul de construire în proiectele dvs.! Consultați pașii următori pentru a rula instrumentul de construire.

  • Deschideți o interfață de linie de comandă și navigați la dosarul proiectului.
  • Navigați în folderul de construire: cd build /
  • Există patru moduri diferite de a construi site-ul dvs.: modul implicit este: construcția ant
  • Când scriptul de construcție modifică codul HTML pentru a face referire la noul script miniaturizat (de obicei, se numește ceva de genul script-002.min.js), acesta caută câteva comentarii HTML care se referă la începutul și la sfârșitul blocului de script. În prezent, ea caută .

Opțiuni de construire

Iată o listă cu diferite opțiuni de construcție pe care le puteți alege pentru a se potrivi nevoilor dvs. specifice:

  • construcția ant - minore optimizări html (citate extra extrase). script inline / stil minified (implicit)
  • furnici constructivi - toate spațiile de html păstrate. inline script / stil minificat
  • ant minify - optimizări de mai sus plus minime completă html
  • furnică text - la fel ca și construirea, dar fără optimizarea imaginii (png / jpg)

Concluzie

Optimizarea performanței nu trebuie să fie costisitoare sau consumatoare de timp. Cu unele reguli reutilizabile, se poate configura încet un proces de construire pentru a automatiza aspectele repetitive ale lucrărilor de optimizare. Apache Ant oferă un cadru puternic, dar ușor de utilizat, în timp ce HTML5 Boilerplate utilizează pentru a face optimizarea web cât mai ușoară posibil pentru dezvoltatorii web de pe front-end. Vă mulțumesc foarte mult pentru lectură!

Cod