Javascript v Seznamu Michal Aichinger

Slides:



Advertisements
Podobné prezentace
Web Michal Žůrek Jak se na něj dívám já..
Advertisements

Webové rozhraní pro datové úložiště
Technologie pro publikování na webu 1 Ing. Jiří Štěpánek.
Tvorba webových stránek
Jak vzniká mobilní stránka Seznamu
Vstupy a výstupy v JavaScriptu Vstup: použitím metody prompt objektu window čtením hodnot z položek formuláře Výstup : použitím metody alert objektu window.
Internetové stránky a Internetový prohlížeč
CSS a HTML 5. HTML 5 HTML5 je nová verze specifikace značkovacího jazyka HTML, která přináší podstatné změny v technologiích webových stránek. HTML5 umožňuje.
HYPERTEXT PREPROCESSOR. JAZYK PHP. Jazyk PHP (Hypertext PreProcessor) je intepretovaný jazyk určený pro web. Je celkem jednoduchý, snadno přenositelný.
Softwarový systém DYNAST
YELLOWTONSKÝ NÁRODNÍ PARK Interaktivní webová mapa ve formátu SVG Zdeněk HYNEK, Masarykova univerzita
PHP – vkládání souborů a html 5
Adobe Dreamweaver CS4 Ing. Martin Dosedla.
Tvorba webových aplikací
Podpora výuky a tvorby ER diagramu ve výukovém systému Barborka Petr Kopka VŠB – TU Ostrava, 2005.
Úvod. školní: příprava na předmět Databázové systémy praktický: webové aplikace databázové systémy základy vývoje webových aplikací od návrhu databáze.
BAKALÁŘSKÁ PRÁCE Tomáš Janda
Číslo projektuCZ.1.07/1.5.00/ Číslo materiáluVY_32_INOVACE_257 Název školyGymnázium, Tachov, Pionýrská 1370 Autor Ing. Roman Bartoš Předmět Informatika.
4IT445 – Testování a ladění v PHP Ing. Jan Mittner
Internetové prohlížeče
Mozilla z pohledu vývojáře David Majda, CZilla — prezentace na předmět Linux (SWI043) na MFF UK.
DHTML Jan Felger. Kapitola 0: Základní tagy Základy HTML © Jan Felger 2005 Úvod Tato prezentace zobrazuje pouze zcela základní minimum znalostí, které.
Dílna Caché II. CSP pro pokročilé Tomáš Vaverka. Zdroje HTML Tag Reference v sekci Reference Material v dokumentaci Caché HTML Tag Reference v sekci Reference.
Návrh a tvorba WWW Přednáška 5 Úvod do jazyka PHP.
Internetový prohlížeč
MAPGUIDE OPEN SOURCE - MAPOVÝ SERVER Student: Bc. Martin Soukup Předmět: GEIS Přednášející : R NDr. Tomáš Vaníček, P hD. Datum: Web:
AJAX nejmodernější webová technologie… seminář pro učitele ZŠ a SŠ Mgr. Marek Osuchowski Ostravská univerzita © 2011.
Úvod do JavaScriptu JavaScript je p JavaScript je programovací jazyk, který se používá na webových stránkách. JavaScript je typu KLIENT - KLIENT To znamená,
Návrh a tvorba WWW Přednáška 12 JavaScript III.. Výjimky v JavaScriptu Výjimky jsou způsob jak řešit neočekávané nebo výjimečné situace ke kterým dochází.
Copyright (C) 2000 Vema, a. s.1 V3 klient Michal Máčel Provozní integrace G2, HR/Win a internetu.
uložené procedury (stored procedures) triggery, sekvence, pohledy, funkce, parametrické dotazy (prepared statements) komplexní agregace a SQL dotazy jiné.
WWW stránky – Úvod Mgr. Lenka Švancarová.
Šesté cvičení Výjimky Balíky.
Klikací mapy v GIMPu Tvorba tzv. klikacích (obrázkových) map s pomocí grafického editoru GIMP Dostupné z Metodického portálu ISSN: ,
YELLOWTONSKÝ NÁRODNÍ PARK Interaktivní webová mapa ve formátu SVG Zdeněk HYNEK, Masarykova univerzita
Kamasová Silvie 9.C. Mozilla firefox Rychlejší prohlížení webu Blokování vyskakovacích oken Prohlížení stránek v panelech Snadná změna vzhledu Intuitivní.
Podnikání na Internetu internet - zdroj informací Letní semestr 2005 Jana Holá III.
VŠB –TUO ATŘ Manažerská grafika Grafy v MS Excel 2003 Podešva Petr
IDEA Web Systém 5.0 Pavel Bezstarosti IDEA spol. s r.o
Tvorba Flash a umístění na web David Sommer. Menu Co je to Flash? Tagy pro vložení na web Sothink SWF Moje tvorba.
Vzdálená správa Tomáš Kalný.
Název projektu: Šablony Špičák číslo projektu: CZ.1.07/1.4.00/ šablona III/2 autor výukového materiálu: Mgr. Jana Jiroušová, VM vytvořen: leden.
14. června 2004Michal Ševčenko Architektura softwarového systému DYNAST Michal Ševčenko VIC ČVUT.
PHP Programy pro tvorbu WWW stránek - 01
Observer Martin Dráb Návrhové vzory, Co to je?  Definuje závislost 1:N mezi objekty  Závislé objekty jsou informovány o změně stavu  Konzistentní.
Jan Růžička, Leden /01/05 Proč pro prezentaci prostorových dat využívat nástrojů WWW Nízké náklady na vybavení klientského počítače Snadné zvýšení.
JavaScript úvod. Jazyky webového vývojáře Dynamická stránka  aktivně mění svůj obsah v reakci na činnost uživatele  zpracování na straně serveru (PHP,
Rezervační systém v prostředí XUL Zdeněk Novák, Petr Ondrejka.
Internetové technologie Petr Kašpar KAS265. Obsah Formát PDF Možnosti tvorby v PHP Třída FPDF České fonty Ahoj světe! Buňky Záhlaví/zápatí Pluginy Komplexní.
Číslo projektu: CZ.1.07/1.4.00/ Název DUM: Internetové prohlížeče Číslo DUM: III/2/VT/2/2/26 Vzdělávací předmět: Výpočetní technika Tematická oblast:
WEBOVÝ PROHLÍŽEČ. Charakteristika: Webový prohlížeč je počítačový program, který slouží k zobrazování a prohlížení World Wide Webu (WWW), tj. internetu.
WebOS – operační systém (nejen) pro mobilní přístroje Lukáš Jelínek AIKEN s.r.o. -
EU peníze školám Registrační číslo projektu CZ.1.07/1.4.00/ Název projektu Inovace školství Šablona - název Inovace a zkvalitnění výuky prostřednictvím.
Obchodní akademie a Jazyková škola s právem státní jazykové zkoušky Jihlava Šablona 32 VY_32_INOVACE_033.ICT.34 Tvorba webových stránek – MS Visual Studio.
Zahradnická fakulta v Lednici S4U – Seminář o Univerzitním informačním systému 23. – 25. dubna 2008 S 4 U – Seminář o Univerzitním informačním systému.
1 Kurz XHTML a CSS Část 1: Náš první XTHML dokument a jeho publikace na internetu.
Obchodní akademie a Jazyková škola s právem státní jazykové zkoušky Jihlava Šablona 32 VY_32_INOVACE_034.ICT.34 Tvorba webových stránek – PHP technologie.
Intents – Interní Intent demo
Programovací jazyk JavaScript
Internetové prohlížeče
Programovací jazyk JavaScript
Návrhový vzor Flyweight
Ovládání interaktivity
Internetové publikování Dynamické HTML
Tradiční metodiky vývoje softwaru
TNPW1 JavaScript Ing. Jiří Štěpánek.
VYUŽITÍ ARCGIS API FOR JAVASCRIPT PRO PUBLIKACI MAPOVÝCH SLUŽEB ÚRM
METODOLOGIE PROJEKTOVÁNÍ
Web Application Scanning
SVG vektorová grafika Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Ing. Jitka Vlčková. Dostupné z Metodického portálu ISSN.
Transkript prezentace:

Javascript v Seznamu Michal Aichinger www.seznam.cz … najdu tam, co neznám !

Agenda Seznámení s Javascriptem Objektové programování v Javascriptu Naslouchání událostem v Javascriptu Knihovna JAK Widgety postavené nad JAKem Nevtíravý (Unobtrusive) Javascript Testování Javascriptu Unobtrusive = nevtíravý

Seznámení s Javascriptem Co je Javascript Scriptovací jazyk Prototypový jazyk Objektový jazyk Co není Javascript Třídní jazyk Java Scriptovací – kód se nekompiluje. Prototypový – instance objektů se vytvářejí pomocí konstrukční metody. Prototypy o tři slídy dále

Proč používat Javascript Odlehčení serveru: Výpočetní čas Přenosová kapacita Zlepšení uživatelského prožitku z používání aplikace

Javascript a Seznam JAK ...?

Javascript a Seznam = JAK Knihovna JAK http://jak.seznam.cz JAK používá vlastní namespace, vlastní OOP nástroje pro dědičnost a rozhraní a vlastní události – vzor Observer

Knihovna JAK Knihovna obsahuje: Core (základní) moduly zapouzdřující práci s DOM, událostmi, XHTTPRequestem Widgety, stavějící nad základní funkcionalitou, např.: WYSYWIG Editor, galerie Lightbox, kalendář, slider, ...

Kde Seznam využívá Javascript webový prohlížeč - od oživení webových stránek, až po aplikace Firefox – plugin Lištička (ve výrobě pro 3.5) Gadgety – spolupráce s třetími stranami (Facebook aplikace pro HP, Email a Lidé pro Vodafone)

Programování v Javascriptu Lze programovat jak funkcionálně tak i objektově Objektový přístup je z pohledu rozšiřitelnosti a údržby lepší Javascript pro vnitřní funkce setTimeout, setInterval a addEventListener očekává pouze callback funkci a ne metodu objektu

Objektové programování Vytváření objektů pomocí literálu: var mujObj = { hodnota_1 : "test", metoda_1 : function(){ return this.hodnota_1;} }; mujObj.metoda_1();

Objektové programování Vytváření objektů pomocí new Object: var mujObj = new Object(); mujObj.hodnota_1 = "test"; mujObj.metoda_1 = function(){ return this.hodnota_1; }; mujObj.metoda_1();

Objektové programování Vytváření objektů pomocí konstrukční funkce a new: var mujConstructor = function(){ this.hodnota_1 = "test"; this.metoda_1 = function(){ return this.hodnota_1; }; var mujObj = new mujConstructor(); mujObj.metoda_1();

Objektové programování Vytváření objektů pomocí konstrukční funkce, prototypů a new: var mujConstructor = function(){ this.hodnota_1 = "test"; }; mujConstructor.prototype.m_1 = function(){ return this.hodnota_1; var mujObj = new mujConstructor(); mujObj.m_1();

Objektové programování s JAKem Modul ClassMaker v JAKu umožňuje vytvářet „class-like“ zápis kódu s možností dědění a implementace rozhranní

Objektové programování s JAKem var Vehicle = SZN.ClassMaker.makeClass({ NAME: "Vehicle", VERSION: "1.0", CLASS: "class" }); //konstruktor s definici vlastnosti instanci Vehicle.prototype.$constructor = function() { this.passengers = 0; }; //definice metody Vehicle.prototype.addPassenger = function(){ this.passengers++; }

Objektové programování s JAKem var Car = SZN.ClassMaker.makeClass({ NAME: "Car", VERSION: "1.0", CLASS: "class", EXTEND: Vehicle }); //konstruktor s definici vlastnosti instanci Car.prototype.$constructor = function() { this.$super(); this.engineOn = false; }; //definice metody Car.prototype.startEngine = function(){ this.engineOn = true; }

Objektové programování s JAKem Implementace rozhranní kopíruje reference na metody definované v rozhranní var Car = SZN.ClassMaker.makeClass({ NAME: "Car", VERSION: "1.0", CLASS: "class", EXTEND: Vehicle, IMPLEMENT: [IMovable, ICountable] }); ... var car = new Car();

Událostní programování Javascript umožňuje zpracovat události vzniklé interakcí uživatele a stránky. Zpracování je asynchronní Pro navěšení funkčnosti na událost se využívá metody addEventListener Odvěšení posluchače pomocí metody removeEventListener, kdy si musíme pamatovat všechny parametry zadané metodě addEventListener

Událostní programování Příklad s navěšením ovladače na klik: <a href="#" id="odkaz">Odkaz</a> <script type="text/javascript"> function click_func (e) { alert("bylo kliknuto"); } var elm = document.getElementById("odkaz"); elm.addEventListener("click", click_func); ... elm.removeEventListner("click", click_func); </script> při objektovém přístupu se zde nezadává objekt, pouze funkce, musíme bindovat

Objektový programování a události Při použití objektů narazíme na omezení, kdy nejde předat instance objektu a její metoda <script type="text/javascript"> function _bind(obj, fnc) {return function(){ return fnc.apply(obj, arguments); }} var car = { name: "auto", click_func : function(e) {alert(this.name);} } car.click_func = _bind(car,car.click_func); elm.addEventListener("click", car.click_func); </script>

Událostní programování v JAKu <a href="#" id="odkaz">Odkaz</a> <script type="text/javascript"> Car = SZN.ClassMaker.makeClass({NAME:"Car", CLASS:"class"}); Car.prototype.click_func = function (e, elm) { alert("bylo kliknuto na " + e.href); } var car = new Car(); var elm = SZN.gEl("odkaz"); var id = SZN.Events.addListner( elm, "click", car, click_func); ... SZN.Events.removeListner(id); </script>

Další moduly v knihovně JAK Browser – detekce klienta a jeho verze ClassMaker – tvorba „tříd“ Dom – metody pro práci s DOM stromem stránky Events – zapouzdření metod pracujících s událostmi nad elementy v DOM stromu Request – objekt pro práci s HTTPRequestem a AJAXovým dotazováním serveru Signals – tvorba uživatelských událostí pomocí vzoru Observer a jejich zpracování Components – zapouzdření metod pro vytváření komponent a jejich skládání

Widgety v JAKu Kalendář Hodnotící prvek Editor Vyskakovací okno Lightbox Ořez obrázků Záložky Výběr barvy Výběr Řazení Konzole Slider Widgety na vyžádání, připravujeme Tree - strom

Animace a grafika v JAKu JAK sjednocuje práci s vektory (SVG a VML) Pro animace a složitější efekty je připravena třída Interpolator s možností volby interpolační křivky Nad tímto Interpolátorem staví třída CSSInterpolator, pomocí které lze přímo animovat CSS vlastnosti Výhodou použití CSSInterpolator je použití pouze jednoho časovače pro změnu více vlastností

Grafy v JAKu Nad vektorovou knihovnou jsou napsány knihovny pro zobrazení koláčového, sloupcového a spojnicového grafu

Nevtíravý (Unobtrusive) Javascript 7 principů jak se jako vývojář chovat ke zdrojovému kódu stránky a k uživateli – oddělení obsahu od chování Nevytvářejte si mylné předpoklady - v prohlížeči uživatele nemusí JS fungovat, nebo být dostupná požadovaná funkčnost Vztah mezi HTML a JS - jak propojit funkčnost a vzhled  Nechte traverzování stromem na expertech - měňte radši CSS třídy Nutnost porozumět uživateli a jeho prohlížeči Porozumět Javascriptovým událostem a jejich bublání Myslet na ostatní - zbytečně neplnit globální prostor Tvořte pro další vývojáře - údržba aplikace bude snazší

Nevtíravý (Unobtrusive) Javascript Test funkčnosti a detekce prohlížeče obecně: if (window.XMLHttpRequest) {/*pouzij request*/} if (window.opera) {/*uzivatel pouziva operu*/} Test funkčnosti se v JAKu provádí skrytě za účelem určení typu prohlížeče a jeho verze: alert(SZN.Browser.client); alert(SZN.Browser.version);

Nevtíravý (Unobtrusive) Javascript Propojení funkčnosti a vzhledu špatně: <a href="#" onclick="udelej(this)">Odkaz</a> Správné řešení je mít veškerý kód JS v externím souboru a navěsit ovladače pomocí JS. Problém je s prodlevou mezi plným načtením stránky a jejím zobrazením, většinou používáme: <a href="#" id="odkaz">Odkaz</a> <script>SZN.Events.addListener(SZN.gEl("odkaz"), "click", obj, "udelej");</script>

Nevtíravý (Unobtrusive) Javascript Chybové hlášky uživateli příliš v práci nepomohou, reagovat by měla aplikace.

Testování Javascriptu Dva typy programátorů: Programátor, který píše bez chyb Programátor, který si myslí, že píše bez chyb První je nedosažitelný ideál, druhý, je každý z nás, oba by měli používat ladící nástroje.

Testování Javascriptu Firebug pro Firefox Web Developper Toolbar v Internet Exploreru 8

Shrnutí Knihovna JAK je zdarma pro nekomerční i komerční použití JAK je vydán pod licencí MIT Domovská stránka http://jak.seznam.cz

Děkuji za pozornost Michal Aichinger email: michal.aichinger@firma.seznam.cz blog: http://czechdesign.cz/blogs/aichi