2. Agenda
JavaScript?
Zdrojov辿 k坦dy v JavaScriptu
Syntaxe, metody, vlastn鱈 funkce
Knihovny (frameworky)
Nejastj邸鱈 pou転it鱈 JavaScriptu
Internet, doporuen叩 literatura
2
3. JavaScript je interpretovateln箪 (neprob鱈h叩 kompilov叩n鱈!) programovac鱈 jazyk
se z叩kladn鱈mi objektov orientovan箪mi vlastnostmi
V polovin 90. let jej vytvoila firma Netscape a jeho interpret (bhov辿 prosted鱈)
je standardn鱈 sou叩st鱈 webov箪ch prohl鱈転e哲
Existuje norma ECMAScript pro pou転it鱈 JavaScriptu a jeho odvozenin (JScript od MS)
Aktu叩ln鱈 verze ECMAScript Edition 6 (6/2015)
JavaScript umo転uje vlo転it do webov辿 str叩nky provediteln箪 obsah, kter箪 na stran
klienta (prohl鱈転ee) m哲転e zv箪邸it interakci s u転ivatelem
JavaScript je oznaov叩n jako tzv. assembler webu
Kombinace HTML5 + CSS3 + JavaScript je aktu叩ln鱈m trendem pi n叩vrhu UI aplikac鱈
JavaScript je ale mo転n辿 vyu転鱈t i na stran webov辿ho serveru (Node.js apod.)!
http://cs.wikipedia.org/wiki/JavaScript
http://en.wikipedia.org/wiki/ECMAScript#Dialects
http://en.wikipedia.org/wiki/JavaScript_engine
Co je JavaScript? 3
5. Intern鱈 skript
Vlo転en鱈 JavaScriptu do zdrojov辿ho k坦du 5
<script type="text/javascript">
/* <![CDATA[ */
k坦d skriptu
/* ]]> */
</script>
Extern鱈 skript (knihovny)
<script type="text/javascript" src=/slideshow/tnpw2201603/58481617/"mujskript-1.2.js"></script>
Extern鱈 skripty je vhodn辿 verzovat, vyhnete se probl辿m哲m s HTTP cache!
http://jsfiddle.net/ zkou邸eka HTML + JavaScript
6. Rozs叩hlej邸鱈 aplikan鱈 logika se ukl叩d叩 do samostatn箪ch soubor哲 s p鱈ponou *.js mimo
zdrojov箪 (X)HTML k坦d str叩nky
Zdrojov箪 k坦d lze vizu叩ln strukturovat pro vt邸鱈 pehlednost, je mo転n辿 jej komprimovat
(tzv. minifikace) v okam転iku nasazen鱈 na produkn鱈m prosted鱈 webov辿ho serveru
http://dean.edwards.name/packer/
http://yui.2clics.net/
V ad p鱈pad哲 je vhodn辿 pou転it鱈 i tzv. bundlov叩n鱈 slouen鱈 (spojen鱈) zdrojov辿ho k坦du
z v鱈ce *.js soubor哲 do jednoho, kter箪 se na鱈t叩 v aplikaci
Debugov叩n鱈 zdrojov辿ho k坦du v JavaScriptu dnes nen鱈 probl辿m, existuje cel叩 ada
v箪vojov箪ch prosted鱈 a n叩stroj哲, kter辿 to umo転uj鱈
https://addons.mozilla.org/cs/firefox/addon/firebug/ (Firebug pro Mozilla Firefox)
http://code.google.com/p/jsdt/
AJAX debugging in MyEclipse (Plug-in do Eclipse)
Pr叩ce se zdrojov箪m k坦dem v JavaScriptu 6
7. V rozs叩hl箪ch zdrojov箪ch k坦dech pou転鱈vejte koment叩e!
PRO? Kv哲li srozumitelnosti
Mo転n辿 budouc鱈 opravy/炭pravy k坦du, vyu転it鱈 knihoven apod.
Pro form叩tov叩n鱈 koment叩哲 pro dokumentaci existuj鱈 pravidla, nap. JSDoc syntaxe
Dokumentov叩n鱈 zdrojov辿ho k坦du v JSDoc 7
<script type="text/javascript">
/* <![CDATA[ */
/**
* @tag_name description
*/
JavaScript Code
/* ]]> */
</script>
http://en.wikipedia.org/wiki/JSDoc
9. Jazyk JavaScript vych叩z鱈 ze syntaxe jazyka C (C++, Java, C#, PHP)
Jednotliv辿 p鱈kazy JavaScriptu se oddluj鱈 ";"
Hlavn鱈m rysem JavaScriptu je pou転鱈v叩n鱈 tzv. metod
Metoda je objektov orientovan箪 term鱈n pro funkci nebo proceduru 叩st zdrojov辿ho
k坦du prov叩dj鱈c鱈 uritou innost, nejastji 鱈zen鱈 obsahu webov箪ch str叩nek/formul叩哲
Metody jsou p鱈mo sou叩st鱈 JavaScriptu, dal邸鱈 je mo転n辿 podle poteby vytvoit
Syntaxe jazyka, metody, vl叩kna 9
document.write("Text... "); // peddefinovan叩 metoda
mojeFunkce(); // pou転it鱈 vytvoen辿 fce
Aktu叩ln podporuj鱈 webov辿 prohl鱈転ee JavaScript pouze v r叩mci jednoho vl叩kna.
V箪hledov bude implementov叩na podpora pro v鱈ce vl叩ken
http://html456.blogspot.com/2008/08/na-web-prijde-javascript-s-vice-vlakny.html
http://stackoverflow.com/questions/39879/why-doesnt-javascript-support-multithreading (vysvtlen鱈)
10. Funkce v JavaScriptu jsou pojmenovan辿 叩sti programov辿ho k坦du, kter辿 lze vyvol叩vat
podle poteby (i opakovan)
V箪stupem funkce je proveden鱈 naprogramovan辿 innost nebo vr叩cen鱈 hodnoty
Vlastn鱈 funkci je nutn辿 nadefinovat ped jej鱈m prvn鱈m pou転it鱈m!
Vlastn鱈 funkce 10
<script type="text/javascript">
/* <![CDATA[ */
/**
* @return {boolean} Is the browser IE?
*/
function IsMSIE() {
var isMSIE = /*@cc_on!@*/false;
return isMSIE;
}
/* ]]> */
</script>
http://blog.root.cz/met/nejkratsi-detekce-internet-exploreru-na-svete/
12. Existuje cel叩 ada nejr哲znj邸鱈ch JavaScript knihoven, kter辿 umo転uj鱈 v箪voj叩哲m velmi
efektivn鱈m zp哲sobem roz邸鱈it funkcionalitu webov箪ch str叩nek (i pro mobiln鱈 web!)
K nab鱈zen辿 funkcionalit tchto knihoven pat鱈 nap. proch叩zen鱈 a manipulace s DOM
str叩nky, zpracov叩n鱈 ud叩lost鱈 v prohl鱈転ei, pr叩ce s obr叩zky, na鱈t叩n鱈 dat ze serveru,
podpora drag&drop, pr叩ce s cookies apod.
Mezi nejpou転鱈vanj邸鱈 knihovny pat鱈 nap. JQuery, Prototype, script.aculo.us, mootools,
Yahoo! UI (YUI), Dojo a dal邸鱈
http://jquery.com/
http://prototypejs.org/
http://script.aculo.us/
http://dojotoolkit.org/
http://developer.yahoo.com/yui/
http://www.mootools.net/
http://en.wikipedia.org/wiki/AngularJS (MVC pro JS)
http://code.google.com/intl/cs/apis/libraries/
Knihovny (frameworky) 12
13. Velikost鱈 mal叩 (jeden soubor, tzv. minified verze 1.12.x/2.2.x m叩 cca 30 KB!) a pitom
velmi kompaktn鱈 JavaScript knihovna poskytuj鱈c鱈 interaktivitu mezi JavaScriptem
a (X)HTML v okn webov辿ho prohl鱈転ee
P哲vodn鱈m autorem je John Resig (akce BarCamp, 2006)
Jde o svobodn箪 software pod licenc鱈 MIT a GPL
Je nap. sou叩st鱈 framework哲 Microsoft ASP.NET AJAX, Spring na platform Java nebo
Nokia jQuery na mobilech
Z叩kladn鱈 knihovnu jQuery je mo転n辿 roz邸鱈it pomoc鱈 plugin哲
http://jquery.com/
http://citron.blueboard.cz/clanek-331-jquery-pro-zacatecniky-zaklady.html
http://jquery.jslab.net/zkousecka/
Pou転it鱈 jQuery je rychl辿, snadn辿 a velmi efektivn鱈
Nic v叩m nebr叩n鱈 v naps叩n鱈 vlastn鱈ho pluginu/knihovny
jQuery 13
14. asto je vybran叩 knihovna ulo転ena na stejn辿m webov辿m serveru jako webov辿 str叩nky
Je doporueno vyu転it鱈 existuj鱈c鱈ch soubor哲 z CDN (Content Delivery Network)
nap. jQuery z Google API serveru nebo jQuery CDN
http://code.jquery.com/jquery-1.12.0.min.js (aktu叩ln鱈 verze, 炭nor 2016)
PRO? Proto転e cache a datov箪 traffic
Naten鱈 jQuery ve zdrojov辿m k坦du webov辿 str叩nky 14
<script src=/slideshow/tnpw2201603/58481617/"http:/code.jquery.com/jquery-1.12.0.min.js"
type="text/javascript"></script>
<script type="text/javascript">
/* <![CDATA[ */
$(document).ready(function(){
// k坦d bude iniciov叩n a転 po naten鱈 cel辿 str叩nky
});
/* ]]> */
</script>
Je vhodn辿 iniciovat aplikan鱈 k坦d a転 po naten鱈 cel辿 str叩nky a v邸ech prvk哲!
15. PIPOMNKA! JavaScript je tzv. assembler webu
Nkter辿 nov辿 programovac鱈 jazyky se pokou邸ej鱈 odstranit nedostatky JavaScriptu
V箪hodou je, 転e se umj鱈 se do zdrojov辿ho JS k坦du zkompilovat
Oznauj鱈 se jako source-to-source compiler, transcompiler nebo transpiler
TypeScript (Open source, Microsoft)
http://en.wikipedia.org/wiki/TypeScript
http://devblog.cz/2012/10/typescript-jazyk-na-ktery-jsem-cekal/
Dart (Google)
http://en.wikipedia.org/wiki/Dart_(programming_language)
Tady byla ta kompilace trochu divoej邸鱈
Coffee Script
Nejstar邸鱈 a nejroz邸鱈enj邸鱈, pid叩v叩 t鱈dy
http://en.wikipedia.org/wiki/CoffeeScript
http://www.zdrojak.cz/clanky/coffeescript-radne-oslazeny-javascript/
Programovac鱈 jazyky vyu転鱈vaj鱈c鱈 JavaScript 15
17. Pr叩ce s DOM, selektory, zpracov叩n鱈 ud叩lost鱈
Ovlivnn鱈 v箪stupu v prohl鱈転ei
Zobrazov叩n鱈 dialogov箪ch oken
鱈zen鱈 prohl鱈転ee (nap. pohyb v historii, naten鱈 dokumentu, refresh)
Spolupr叩ce s CSS
Validace a zpracov叩n鱈 formul叩哲
Pr叩ce s obr叩zky preloading obr叩zk哲, obr叩zkov辿 galerie
Pr叩ce s okny
T鱈dn鱈 dat podle sloupc哲 v tabulk叩ch, datov辿 filtry
Grafy
Bookmarklety
Dynamick箪 web (zmna obsahu skriptem, AJAX)
Na stran serveru (Node.js)
Nejastj邸鱈 pou転it鱈 JavaScriptu 17
18. V箪br prvk哲 (DOM objekt哲) na str叩nce, zpracov叩n鱈 ud叩lost鱈 a manipulace s vlastnostmi
DOM str叩nky lze v JavaScriptu upravovat i po jej鱈m naten鱈!
Frameworky manipulaci s DOM v箪razn vylep邸uj鱈 proti z叩kladn鱈mu JavaScriptu!
Pr叩ce s DOM, selektory 18
// v箪br prvku podle ID v JavaScriptu, na validn鱈 str叩nce je 1!
document.getElementById('id_prvku')
// v箪br prvk哲 podle typu elementu v JavaScriptu
document.getElementsByTagName('nazev_tagu')
// v箪br prvk哲 dan辿 t鱈dy v JavaScriptu
document.getElementsByClassName('nazev_tridy') A転 vy邸邸鱈 verze JS!
// v箪br prvku podle ID v jQuery
$('#id_prvku')
// v箪br prvk哲 podle typu elementu v jQuery
$('nazev_tagu')
// v箪br prvk哲 dan辿 t鱈dy v jQuery
$('.nazev_tridy')
03-01-dom.html
19. Pro manipulaci s vlastnostmi a ud叩lostmi prvk哲 se pou転鱈v叩 tekov叩 konvence!
Nkter辿 ud叩losti detekovan辿 v prohl鱈転ei: kliknut鱈 na prvek, fokus, submit (odesl叩n鱈
formul叩e), aktu叩ln鱈 hodnota
Zpracov叩n鱈 ud叩lost鱈 na str叩nce, vlastnosti prvk哲 19
// pou転it鱈 metody onmouseover u obr叩zku
<img src=/slideshow/tnpw2201603/58481617/"img_01.gif" id="o1" onmouseover=
"document.getElementById('o1').src='img_02.gif'" />
03-02-udalosti.html
jQuery vyu転鱈v叩 pi v箪bru prvk哲 s njak箪m stavem selektory s dvojtekou (nap. :first,
:last, :selected, :checked)
Pro naten鱈 n叩vratov辿 hodnoty nalezen辿ho prvku v jQuery se pou転鱈v叩 metoda .val()
// pou転it鱈 metody val() pro naten鱈 vybran辿 hodnoty z combo prvku
var hodnota = $("#combo1 option:selected").val();
20. Obsah webov辿 str叩nky je mo転n辿 ovlivnit na stran klienta (v prohl鱈転ei)
Pi na鱈t叩n鱈 str叩nky metodou write() objektu Document,
Kdykoliv zmnou vlastnosti innerHTML u vybran辿ho elementu, nebo html()
a text() v jQuery.
Oba zp哲soby umo転uj鱈 doplnit na str叩nku libovoln箪 obsah, kter箪 se m哲転e podle poteby
mnit, nap. datum, text v odstavci, nov辿 elementy apod.
Ovlivnn鱈 v箪stupu v prohl鱈転ei 20
// v箪pis etzce, promnn辿, hodnoty funkce v z叩kladn鱈m JavaScriptu
document.write("njak箪 text... ");
document.write(mojePromenna);
document.write(Date());
var zmena = document.getElementById("myID");
zmena.innerHTML = "<strong>njak箪 text</strong> s html elementy";
// jQuery
$("#myID").html("<strong>dal邸鱈 text</strong> s html elementy");
$("#myID").text("prost箪 text bez html element哲");
03-03-vystup.html
21. Generov叩n鱈 (X)HTML k坦du z vizu叩ln鱈ch komponent v箪vojov辿ho prosted鱈 je trend!
Bohu転el, tento dynamicky generovan箪 k坦d je velmi asto nevalidn鱈! Je to chyba!
Berte v 炭vahu, 転e pro v箪stup generovan箪 v JavaScriptu plat鱈 stejn叩 pravidla jako pro
zdrojov箪 k坦d, kter箪 m叩te pipraven箪 na webov辿m serveru pedem
Nezapomete na p鱈stupnost a pou転itelnost v箪stupu!
JavaScript byl z tohoto hlediska doned叩vna zatracovanou technologi鱈, ale p鱈stup
odborn鱈k哲 se za鱈n叩 mnit
http://zdrojak.root.cz/clanky/tak-nam-zpristupnili-javascript/
http://www.w3.org/TR/WCAG20/
Generovan箪 v箪stup v JS, webov辿 standardy, p鱈stupnost 21
22. K zobrazen鱈 dialogov辿ho okna s urenou zpr叩vou nebo k zad叩n鱈 vstupu od u転ivatele
se v z叩kladn鱈m JS pou転鱈vaj鱈 funkce alert() resp. prompt()
Jedn叩 se o metody z叩kladn鱈ho objektu Window
Dialogov叩 okna 22
// pou転it鱈 metody window.alert()
<input type="button" value="Otevi dialogov辿 okno"
onclick="window.alert('Ahoj...')" />
// pou転it鱈 metody window.prompt()
x = window.prompt("Zadej svoje jm辿no", "");
document.write("Tvoje jm辿no je " + x);
Nebo pou転鱈t framework (nap. jQuery), kter箪 nab鱈z鱈 mnohem vt邸鱈 mo転nosti!
http://docs.jquery.com/UI/Dialog
Souasn箪m trendem jsou tzv. Single Page Apps
23. Objekt History umo転uje pohyb vped a zpt u転ivatelskou histori鱈 prohl鱈転ee
Pozor na AJAX aplikace a pr叩ci s histori鱈! Pou転鱈vaj鱈 se tzv. #hashtag a pluginy, nap.
http://benalman.com/projects/jquery-bbq-plugin/
https://github.com/Panmind/jquery-ajax-nav
鱈zen鱈 prohl鱈転ee (History, Location) 23
history.back(); // pohyb v historii zpt
history.forward(); // pohyb v historii vped
history.go(-3); // pohyb v historii o dan箪 poet krok哲
Objekt Location reprezentuje URL v dan辿m okn aktu叩ln zobrazen辿ho dokumentu
// naten鱈 dokumentu z dan辿 adresy
location.href = "url";
// optovn辿 nahr叩n鱈 aktu叩ln鱈ho dokumentu
location.reload();
24. JavaScript nab鱈z鱈 pomrn slu邸nou podporu pro p鱈stup k jednotliv箪m element哲m
str叩nky a umo転uje nastavovat jejich CSS vlastnosti
Nezapomete! K jednotliv箪m element哲m na str叩nce se nejl辿pe pistupuje pes jejich id!
V z叩kladn鱈m JS je manipulace s CSS vlastnostmi ponkud nepehledn叩 , JS frameworky
(nap. jQuery) jsou na tom mnohem l辿pe
Spolupr叩ce s CSS 24
// Zmna CSS vlastnosti v z叩kladn鱈m JavaScriptu
document.getElementById(#id).style.backgroundColor='red';
jQuery pou転鱈v叩 pro pr叩ci s CSS vlastnost .css()
$('#test').css("color","blue");
03-04-css.html
25. CSS3 m叩 problematickou implementaci (zlep邸uje se) v aktu叩ln pou転鱈van箪ch prohl鱈転e鱈ch
Nepodporu nkter箪ch CSS3 (a HTML5) vlastnost鱈 ve star邸鱈ch prohl鱈転e鱈ch lze obej鱈t
pomoc鱈 tzv. polyfill knihoven, nap. Modernizr (detekce 150+), HTML5 Shiv (podpora)
http://zdrojak.root.cz/clanky/javascriptareni-shim-fallback-polyfill/
https://github.com/Modernizr/Modernizr/wiki/HTML5-Cross-browser-Polyfills
CSS3 v JavaScriptu 25
26. Pi pou転it鱈 (X)HTML formul叩e na str叩nce je vhodn辿 ped odesl叩n鱈m dat prov辿st kontrolu
spr叩vnosti vyplnn鱈 jednotliv箪ch polo転ek formul叩e u転ivatelem
Identifikace jednotliv箪ch prvk哲 formul叩e se nejastji prov叩d鱈 pomoc鱈 jejich id, je
mo転n辿 pou転鱈t i pole formul叩哲 a prvk哲
Validace a zpracov叩n鱈 formul叩哲 26
document.getElementById('id_elementu').vlastnost
document.forms[0].elements[2].vlastnost
document.forms[0].id_elementu.vlastnost
Pro jQuery existuje velmi propracovan箪 plugin Validation, kter箪 krom b転n箪ch
validan鱈ch funkc鱈 nab鱈z鱈 i podporu lokalizovan箪ch chybov箪ch hl叩邸ek
jQuery Validation Plugin
Jednoduch箪 esk箪 n叩vod
03-05-formular.html
27. V JavaScriptu je mo転n辿 pracovat s jednotliv箪mi obr叩zky na str叩nce a nkter辿 vlastnosti
obr叩zk哲 mnit za chodu skriptu
Nkdy (nap. pi pou転it鱈 animovan辿ho obr叩zkov辿ho menu) je vhodn辿 pedem (nejl辿pe
v okam転iku na鱈t叩n鱈 str叩nky) na鱈st obr叩zky do cache prohl鱈転ee, ale zobrazit je a転
pozdji, kdy転 jsou poteba (z cache prohl鱈転ee se pak rychleji na鱈taj鱈)
Pr叩ce s obr叩zky preloading obr叩zk哲 (trocha historie) 27
// preload obr叩zku JavaScriptem, obvykle fce v ud叩losti onload
elementu body
var obr1 = new Image();
obr1.src = /slideshow/tnpw2201603/58481617/"flag1.jpg";
Existuje alternativn鱈 e邸en鱈 bez nutnosti preloadu obr叩zk哲
http://www.wellstyled.com/css-nopreload-rollovers.html
28. B転n辿 e邸en鱈 >> po kliknut鱈 na n叩hled vybran辿ho obr叩zku na webov辿 str叩nce je tento
zobrazen ve sv辿 origin叩ln鱈 (tj. vt邸鱈) velikosti ve st叩vaj鱈c鱈m nebo nov辿m okn prohl鱈転ee
Alternativn鱈 e邸en鱈 >> velmi elegantn鱈 je zobrazov叩n鱈 obr叩zk哲 ve st叩vaj鱈c鱈 str叩nce
s vyu転it鱈m knihoven JavaScriptu
http://plugins.jquery.com/tag/lightbox/
http://webdeveloperplus.com/jquery/21-brilliant-jquery-image-galleryslideshow-plugins/
Pr叩ce s obr叩zky obr叩zkov辿 galerie 28
29. V nkter箪ch p鱈padech je poteba otev鱈rat str叩nky v nov辿m okn (nedoporuuje se*)
Vzhledem k tomu, 転e v XHTML 1.0 Strict nen鱈 povolen atribut target, prov叩d鱈 se to
pomoc鱈 JavaScriptu
Pi pou転it鱈 JavaScriptu je teba br叩t v 炭vahu mo転nost vypnut辿ho skriptov叩n鱈 na stran
klienta a tuto mo転nost o邸etit (negativn鱈/pozitivn鱈 politika)!
Pr叩ce s okny 29
JavaScript: function winopen(url){
var win = window.open(url,'okno1','width=400,height=340');
return false;}
HTML: <a href="http://www.uhk.cz" onclick="return winopen(this.href)">okno</a>
jQuery: $(document).ready(function(){ $('a[rel="external"]').click( function() {
window.open( $(this).attr('href') ); return false; }); });
jQuery: $(document).ready(function() { $('a[rel="external"]').attr('target',
'_blank'); });
HTML: <a href="http://www.google.com" rel="external">Google</a>
03-06-odkazy.html
30. Pomoc鱈 JavaScriptu lze data v tabulce na stran klienta (prohl鱈転ee) jednodu邸e t鱈dit
nebo filtrovat, a to bez nutnosti jejich opakovan辿ho na鱈t叩n鱈 ze serveru (datab叩ze)
pi aktualizaci zobrazen鱈
T鱈dit nebo filtrovat lze data podle jednoduch箪ch datov箪ch typ哲 鱈slo, etzec, datum,
mna apod.
Existuj鱈 hotov叩 e邸en鱈 (knihovny), kter辿 m哲転ete pou転鱈t!
http://tablesorter.com/docs/ (jQuery Tablesorter)
http://www.datatables.net/ (jQuery DataTables)
http://www.webdesignbooth.com/15-great-jquery-plugins-for-better-table-manipulation/
T鱈dn鱈 tabulkov箪ch dat, datov辿 filtry 30
03-07-trideni.html pomoc鱈 jQuery DataTables
31. Pro vkl叩d叩n鱈 graf哲 na webov辿 str叩nky se obvykle pou転鱈vaj鱈 obr叩zky generovan辿 na
stran serveru, m辿n astji potom Flash nebo JavaScript na stran klienta
Pro vytv叩en鱈 graf哲 v JavaScriptu existuje nkolik knihoven, obvykle pou転鱈vaj鱈 canvas
Funguj鱈 ve v邸ech nejroz邸鱈enj邸鱈ch prohl鱈転e鱈ch!
http://www.flotcharts.org/ ( Flot plugin pro jQuery)
http://bluff.jcoglan.com/ (Bluff je port Ruby knihovny Gruff)
Grafy 31
32. Bookmarklet je k坦d v JavaScriptu ulo転en箪 v obl鱈ben辿 z叩lo転ce (bookmark)
M鱈sto b転n辿 URL adresy obsahuje jeden nebo v鱈ce p鱈kaz哲 JavaScriptu, kter辿 vykon叩vaj鱈
njakou konkr辿tn鱈 innost, kter叩 p哲vodn na str叩nce nebyla (zvt邸en鱈 p鱈sma, podtr転en鱈
odkaz哲 apod.) funkcionalitu si dopluje u転ivatel, nikoliv vyv箪voj叩!
Na Internetu je voln k dispozici velk辿 mno転stv鱈 bookmarklet哲
Bookmarklety 32
javascript:p鱈kaz;
javascript:resizeTo(800,600) // zmna velikosti okna
http://bookmarklets.com/tools/categor.html
33. Reakce na ud叩losti vyvolan辿 u転ivatelem na stran klienta se pos鱈laj鱈 pes protokol HTTP
ke zpracov叩n鱈 na server a str叩nka obdr転鱈 odpov
Tato odpov ze serveru n叩sledn m哲転e zmnit stav njak辿ho prvku na str叩nce nebo se
dynamicky vytvo鱈 nov箪 element
Ve v箪sledku se tedy (vt邸inou) nekon叩 reload cel辿 str叩nky
Pro vzd叩len辿 vol叩n鱈 metod formou v箪mny XML dat s pevnou strukturou se ust叩lil pojem
AJAX (Asynchronous JavaScript and XML)
AJAX nejastji pou転鱈v叩 protokol XMLRPC (vyu転鱈v叩 HTTP) a t鱈du XmlHttpRequest
Komunikace s vyu転it鱈m AJAXu nemus鱈 b箪t asynchronn鱈 a data nemus鱈 b箪t pen叩邸ena pouze
pomoc鱈 XML (textov箪 etzec, stream, bin叩rn鱈 data)
Pou転鱈vaj鱈 se r哲zn辿 n叩vrhov辿 vzory a standardy (JSON apod.), v posledn鱈 dob se diskutuje o tzv.
邸ablonovac鱈ch syst辿mech pro oddlen鱈 aplikan鱈ch dat a jejich vizu叩ln鱈 prezentace
Bli転邸鱈 informace k AJAXu a spol. budou v pedn叩邸ce o aktu叩ln鱈ch trendech na webu
Dynamick箪 web, AJAX 33
34. U転 ve druh辿 polovin 90. let se JavaScript pou転鱈val na stran serveru
(technologie ASP od fy Microsoft umo転ovala krom VB Scriptu pou転鱈t i JScript)
Node.js je evented I/O framework for V8, co転 si m哲転eme voln pedstavit jako engine V8,
roz邸鱈en箪 o funkce, kter辿 umo転uj鱈 prov叩dn箪m skript哲m pistupovat k soubor哲m i s鱈泥ov箪m
funkc鱈m. Co転 v praxi znamen叩, 転e m哲転eme vytvoit server, kter箪 naslouch叩 na uren辿m portu
t辿m stejn箪m zp哲sobem, jak箪m vytv叩鱈me nap鱈klad obslu転n辿 metody pro ud叩losti v prohl鱈転ei.
Martin Mal箪 (Zdroj叩k)
http://en.wikipedia.org/wiki/Nodejs
http://en.wikipedia.org/wiki/CommonJS
http://geddyjs.org/ (Node.js framework)
http://www.zdrojak.cz/serialy/node-js-s-javascriptem-na-serveru/ (seri叩l)
Popul叩rn鱈 novinka, ale s nkter箪mi technologick箪mi omezen鱈mi! (nap. vl叩kna)
JavaScript na serveru (Node.js) 34
36. Odkazy na internetu 36
http://www.w3schools.com/js/default.asp
http://zdrojak.root.cz/zpravicky/zdroje-prikladu-pro-javascriptove-vyvojare/
http://www.hotscripts.com/
http://en.wikipedia.org/wiki/List_of_JavaScript_libraries
http://www.jquery.com
http://bookmarklets.com/tools/categor.html
http://scripty2.com/ (knihovna efekt哲, sp鱈邸e pro zaj鱈mavost)
http://interval.cz/clanky/sara-vieira-10-uzitecnych-utrzku-kodu-pro-jquery/
http://www.1stwebdesigner.com/resources/javascript-sliders-scrollers/
http://www.queness.com/post/9283/10-addictive-games-you-wouldnt-believe-theyre-made-with-javascript
(hry v JavaScriptu)
http://www.jspatterns.com/scripting-photoshop-with-javascript/ (skriptov叩n鱈 ve Photoshopu)
http://www.root.cz/clanky/ajax/
http://zdrojak.root.cz/clanky/node-js-s-javascriptem-na-server/ (JavaScript na serveru)
37. Flanagan, David JavaScript: The Definitive Guide: Activate Your Web Pages, O'Reilly Media (6th
Edition) 2011
Duckett, Jon JavaScript and JQuery: Interactive Front-End Web Development, Wiley 2014
Zakas, Nicholas C. The Principles of Object-Oriented JavaScript, No Starch Press 2014
Bibeault, Bear; Katz, Yehuda jQuery in Action, Third Edition, Manning Publications 2015
Asleson, Ryan; Schutta, T. Nathaniel Ajax vytv叩鱈me vysoce interaktivn鱈 webov辿 aplikace,
Computer Press 2006
Doporuen叩 literatura 37