Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
Skryptynieblokujące
FaktblokowaniaprzezJavaScriptprocesówwprzeglądarkach,zarównożądańHTP,jak
iaktualizacjiUI,jestpodstawowymproblememwydajności,zjakimmajądoczynienia
twórcyoprogramowania.OgraniczeniewielkościplikówJavaScriptorazliczbyżądań
HTPtotylkopierwszeetapytworzeniasprawniereagującychaplikacjiweb.Imwięcej
funkcjiwymagaaplikacja,tymwiększejilościkoduwymagaJavaScript,więcutrzymywa-
niemałychplikówźródłowychniezawszejestmożliwe.Ograniczaniesiędopobierania
jednegodużegoplikuJavaScriptspowodujezablokowanieprzeglądarkinadługiczas,
mimożemamydoczynieniaztylkojednymżądaniemhtp.Abyobejśćsytuację,trze-
baprzyrostowododawaćdostronycorazwięcejkoduJavaScripttak,abynieblokowało
toprzeglądarki.
Sekretskryptównieblokującychpoleganatym,żeplikźródłowypobieramypoza-
kończeniupobieraniastrony.Wkategoriachtechnicznychoznaczatopobieraniekodu
źródłowegoJavaScriptpouruchomieniuzdarzenia
window
’s
load
.Jestkilkatechnik,które
pozwalająuzyskaćtenefekt.
Skryptyodroczone
StandardHTML4definiujedodatkowyatrybutznacznika
<script>
onazwie
defer
.Atry-
but
defer
wskazuje,żeskryptzawartywelemencieniebędziemodyfikowałDOM,awięc
wykonaniemożnabezpiecznieodłożyćnaczaspóźniejszy.Atrybut
defer
jestobsługiwany
tylkoprzezInternetExplorer4+orazFirefox3.5+idlategoniejestnajlepszyjakona-
rzędziedoogólnegozastosowaniawróżnychprzeglądarkach.Winnychprzeglądarkach
atrybut
defer
jestpoprostuignorowany,awięcznacznik
<script>
jesttraktowanywsposób
domyślny(blokujący).Rozwiązanietojestjednakdobre,jeśliobsługująjeprzeglądarki
ustalonejakodocelowe.Poniżejpokazanoprzykładoweużycie:
<scripttype="text/javascript"src="file1.js"defer></script>
Znacznik
<script>
zatrybutem
defer
możnaumieścićwdowolnymmiejscudokumentu.
PlikJavaScriptzaczniebyćpobieranywpunkcie,wktórymznacznik
<script>
jestprze-
twarzany,alekodniebędziewykonywanydocałkowitegozaładowaniaDOM(domo-
mentuwywołaniaobsługizdarzenia
onload
).PobieranieodroczonegoplikuJavaScrip
nieblokujeinnychprocesówprzeglądarki,więcplikitemogąbyćpobieranerównolegle
zinnymielementamistrony.
Każdyelement
<script>
oznaczonyzapomocą
defer
niezostaniewykonanydomomen-
tucałkowitegozaładowaniaDOM;jesttoprawdazarównodlaskryptówwewnętrznych,
6
|
Rozdział1:Pobieranieiwykonanie