Poslední modifikace: 2024-11-14 18:18:51 UTC
mezi prohlížeči existují drobné nekompatibility nebo rozdíly v podporovaných technologiích
ošetřování rozdílů mezi prohlížeči je pracné
mnoho běžných úkolů je v čistém JS+DOM zbytečně zdlouhavých a složitých
pro psaní rozsáhlých aplikací je užitečná abstrakce, která nám dovolí lépe se orientovat v rozsáhlém kódu
dnes asi nejznámější a nejpoužívanější knihovna
usnadňuje průchod a minipulaci s DOM, obsluhu událostí, animace, AJAX, …
knihovnu je potřeba nejprve načíst do stránky
<script src="https://code.jquery.com/jquery-2.1.4.min.js"></script>
knihovnu lze načítat z CDN nebo si udělat vlastní kopii
veškerá funkcionalita je dostupná pomocí objetu $
elementy lze snadno vybírat pomocí selektorů
$("#button")
pomocí metod lze pak snadno dále pracovat s vybranými elementy
$("#button").click(… co se má stát, když se klikne na tlačítko…)
$("#button").on("click", … co se má stát, když se klikne na tlačítko…)
spuštění kódu po načtení stránky
$(document).ready(… co se má stát, když je stránka celá načtená…)
demo
$.ajax()
– univerzální silně parametrizovatelná funkce
$.get()
– provedení požadavku GET
$.getJSON()
– provedení požadavku GET, který vrací v JSON
$.post()
– provedení požadavku POST
$.load()
– snadné načtení a vložení fragmentu HTML do stránky
kód je obvykle mnohem kratší než v čistém JS
$(document).ready(function() {
$("#btn").click(function() {
$.getJSON("http://localhost:8000/data.json", function(osoba) {
$("#result").html("Jméno je " + osoba.jmeno + " a věk je " + osoba.vek);
});
});
})
jQuery UI – snadná tvorba uživatelského rozhraní
jQuery Mobile – knihovna pro tvorbu rozhraní vhodného i pro mobilní a dotyková zařízení
QUnit – knihovna pro jednotkové testování JS kódu
snadné vkládání map do stránek
pomocí API lze do mapy přidávat další vrstvy, body, trasy, …
při větším počtu požadavků placené
<div id="map"></div>
<script>
var map;
function initMap() {
map = new google.maps.Map(document.getElementById('map'), {
center: {lat: -34.397, lng: 150.644},
zoom: 8
});
}
</script>
<script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap"
async defer></script>
snadné vkládání map do stránek
pomocí API lze do mapy přidávat další vrstvy, body, trasy, …
<script src="//api.mapy.cz/loader.js"></script>
<div id="mapa"></div>
<script>
var stred = SMap.Coords.fromWGS84(14.41, 50.08);
var mapa = new SMap(JAK.gel("mapa"), stred, 10);
mapa.addDefaultLayer(SMap.DEF_BASE).enable();
mapa.addDefaultControls();
</script>
open-source knihovna pro zobrazení map
využívá mapové podklady OpenStreetMap, ale může využívat i jiné (např. Mapy.cz)
pomocí API lze do mapy přidávat další vrstvy, body, trasy, …
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.2.0/dist/leaflet.css">
<script src="https://unpkg.com/leaflet@1.2.0/dist/leaflet.js"></script>
<div id="map"></div>
<script>
var map = L.map('map').setView([50.83, 15.04], 10);
L.tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png').addTo(map);
</script>
knihovna pro vizualizaci dat
sada specifikací, které umožňují vytváření komponent pomocí základních webových technologií – HTML+CSS+JS
komponenty zapouzdřují určitou funkcionalitu
zamezují nežádoucí interakci mezi více knihovnami vloženými na stránce
mnoho věcí, které se dnes musí programovat, jde do stránky vložit čistě deklarativním způsobem
postaveno na čtyřech technologiích: Custom Elements, Templates, Shadow DOM, ES Modules
dnes již podporují všechny prohlížeče
framework pro snazší tvorbu Web Components
rozšiřuje HTML o relativně snadnou možnost tvorby aplikací
zabudovaný obousměrný data-binding odstraňuje nutnost ruční synchronizace DOMu se stavem aplikace
u rozsáhlejších aplikací může mít Angular 1 problémy s výkonem
verze 2 odstraňuje mnohé problémy, cenou je ztráta zpětné kompatability – https://angular.io
populární a výkonná knihovna pro tvorbu uživatelského rozhraní
umožňuje snadnou definici komponent, ze kterých se vykresluje stránka aplikace
lze používat jednoduchý šablonovací jazyk JSX nebo kód generovat pomocí funkcí
komponenty vykreslující stránku aplikace tvoří virtuální DOM
React se snaží uživatele zcela odstínit od DOM a kvůli výkonu vždy modifikuje jen nejnutnější části DOM
lze kombinovat s dalšími knihovnami
obsahuje šablonovací systém, který se deklarativně napojí na data, která se mají zobrazovat v DOMu
umožňuje snadnou definici komponent a jejich skládání do aplikace
lze snadno kombinovat s dalšími knihovnami
nový jazyk vyvinutý za necelé dva týdny pro Netscape v půlce 90. let
drobné odlišnosti v implementacích mezi prohlížeči byly postupně odstraněny díky standardizovanému ECMAScriptu
po více jak 20 letech chybí v JS některé moderní koncepty
pro vývoj rozsáhlých aplikací nejvíce chybí typová kontrola a balíčkovací systém
řešení:
nové verze ECMAScript, které doplňují chybějící funkcionalitu
nové jazyky, které lze kompilovat do „starého JS“
různé pomocné nástroje
ES5 – 2009, podporují všechny prohlížeče
ES6/ES2015 – 2015, podporují všechny prohlížeče
ES7/ES2016 – 2016, podporují všechny prohlížeče
ES8/ES2017 – 2017, podporují všechny prohlížeče
ES9/ES2018 – ?
…
novou syntaxi a funkcionalitu lze používat již dnes díky transpileru https://babeljs.io
mnoho „lepších“ jazyků lze zkompilovat do JS
…
Closure Compiler – kompilace, minifikace, deklarace a kontrola typů
Flow – deklarace/inference a kontrola typů
…