JavaScript

JavaScript

Základy, koncepty, DOM, cokoliv dalšího

Ondřej Žára, Seznam.cz

Tato prezentace

Bojový plán

JavaScript je…

…programovací jazyk

JavaScript je…

…jednoduchý

JavaScript je…

…složitý

JavaScript je…

…expresivní

JavaScript je…

…rozšířený

JavaScript je…

…starý

Jak na to?

Kniha!

Základy syntaxe

var a = "ahoj"; var b = 2 * 13; var c = true; var f = function(x, y) { return x+y; } function g(x, y) { return x*y; }

Základy řízení toku kódu

if (a > b) { a++; } else { c += d; } for (i=0; i<5; i++) { console.log(i); }

Složitější datové typy

var pole = [1, 4, "ahoj"]; var data = { jmeno: "Jan", prijmeni: "Novák", vek: pole[1] } console.log(data.jmeno);

Složitější datové typy jsou objekty

var pole = [1, 4, "ahoj"]; console.log(pole.length); pole.push(3.14); console.log(pole.length); pole.push(pole); // ?

A co tam je dál?

Zkoušíme #1

DOM

DOM

DOM

document.body.innerHTML = "Ahoj <em>světe</em>"; var img = document.createElement("img"); img.src = "..."; var p = document.querySelector("p"); p.appendChild(img);

Události

Události

var test = function() { alert("Kliknuto"); } document.addEventListener("click", test);

Události

// tzv. anonymní funkce document.addEventListener("click", function() { alert("Kliknuto"); });

Události

Události – bublání

Kontrola formuláře

preventDefault

Události

var kontrola = function(e) { if (...) { e.preventDefault(); } } form.addEventListener("submit", kontrola);

Zkoušíme #2

Ajax

XMLHttpRequest

XMLHttpRequest

var xhr = new XMLHttpRequest(); xhr.open("get", url, true); xhr.send();

XMLHttpRequest

var odpoved = function(e) { var xhr = e.target; alert(xhr.status); alert(xhr.responseText); } xhr.addEventListener("load", odpoved);

XMLHttpRequest a bezpečnost

Zkoušíme #3

HTML <canvas>

<canvas>

<canvas width="640" height="480"></canvas> var canvas = document.querySelector("canvas"); var context = canvas.getContext("2d"); context.fillStyle = "red"; context.fillRect(0, 0, 100, 100);

2d context

<canvas> – Obdélníky

context.fillStyle = "red"; context.strokeStyle = "blue"; context.clearRect(x, y, w, h); context.fillRect(x, y, w, h); context.strokeRect(x, y, w, h);

<canvas> – Křivky

context.beginPath(); context.moveTo(x, y); context.lineTo(x, y); context.quadraticCurveTo(cpx, cpy, x, y); context.bezierCurveTo(cpx1, cpy1, cpx2, cpy2, x, y); context.arc(...what the hell...); context.fill(); context.stroke();

<canvas> – Text

context.strokeText(text, x, y); context.fillText(text, x, y); context.measureText(text);

<canvas> – Obrázky

context.drawImage(image, x, y); context.drawImage(jinyCanvas, x, y); context.drawImage(image, dx, dy, dWidth, dHeight); context.drawImage( image, sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight );

<canvas> – Pixely

var id = context.getImageData(0, 0, w, h); alert(id.data.length); // pocet pixelu * 4 id.data[0] = 255; // plna cervena context.putImageData(id, x, y);

<canvas> – Transformace

context.save(); context.scale(0.5); context.rotate(Math.PI / 2); context.fillRect(0, 0, 100, 100); context.restore();

Zkoušíme #4

A co dál?

Prostor pro otázky
Ondřej Žára, vývojář UI senior, ondrej.zara@firma.seznam.cz