Javascript v Seznamu

Podobné dokumenty
Část 1 Moderní JavaScript

NSWI096 - INTERNET JavaScript

3 MOŽNÉ PŘÍSTUPY K TVORBĚ APLIKACÍ NAD SVG DOKUMENTY

MBI - technologická realizace modelu

JavaScript 101. "Trocha života do statických stránek"

Obsah. Úvodem 9 Zpětná vazba od čtenářů 10 Zdrojové kódy ke knize 10 Errata 10

Programování v jazyce JavaScript

Programování v jazyce JavaScript

Content Security Policy

Moderní programování v JavaScriptu

Kapitola 1 První kroky v tvorbě miniaplikací 11

Mapy.cz vs. amapy.cz

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové technologie

Programování v jazyce JavaScript

IS pro podporu BOZP na FIT ČVUT

VÝVOJ INTERNETOVÝCH APLIKACÍ - VIA

Obsah. SEZNÁMENÍ S HRAMI V HTML Nové funkce HTML Nové funkce CSS

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové technologie

1. Úvod do Ajaxu 11. Jak Ajax funguje? 13

Vývoj Internetových Aplikací

Formuláře. Internetové publikování. Formuláře - příklad

(X)HTML, CSS a jquery

První kapitola úvod do problematiky

KIV/PIA 2012 Ing. Jan Tichava

1 Webový server, instalace PHP a MySQL 13

Informatika pro moderní fyziky (8) Javascript, CSS - stylování dokumentů, SVG - tvorba obrázků, složitější interaktivní dokument

Moderní techniky vývoje webových aplikací

Google Web Toolkit. Martin Šurkovský, SUR března Katedra informatiky

HTML - Úvod. Zpracoval: Petr Lasák

AJAX. Dynamické změny obsahu stránek

Počítačová Podpora Studia. Přednáška 5 Úvod do html a některých souvisejících IT. Web jako platforma pro vývoj aplikací.

1. Webový server, instalace PHP a MySQL 13

WEB BASED DYNAMIC MODELING BY MEANS OF PHP AND JAVASCRIPT

Generické programování

Obchodní akademie a Jazyková škola s právem státní jazykové zkoušky Jihlava

Studijní průvodce e-learningovými kurzy

NA CO SI DÁT POZOR V JAVASCRIPTU? Angular.cz

Karel Bittner HUMUSOFT s.r.o. HUMUSOFT s.r.o.

Bioadresář. Specifikace požadavků. Verze Datum Projektový tým Bc. Martin Ventruba Bc. Ondřej Veselý Bc. Stratos Zerdaloglu

Základy objektové orientace I. Únor 2010

Bridge. Známý jako. Účel. Použitelnost. Handle/Body

JavaScript v praxi: Sokoban (5. přednáška)

Obsah. O autorech 9 Earle Castledine 9 Myles Eftos 9 Max Wheeler 9 Odborný korektor 10. Předmluva 11 Komu je kniha určena 12 Co se v knize dočtete 12

Richtext editory. Filip Dvořák

Část IV - Bezpečnost 21. Kapitola 19 Bezpečnostní model ASP.NET 23

DELTA - STŘEDNÍ ŠKOLA INFORMATIKY A EKONOMIE, s.r.o. Obor informační technologie AJAX ESHOP. Maturitní projekt. Třída:

+ knihovna funkcí usnadňujících práci v javascriptu

Jazyk C# (seminář 6)

Studentská tvůrčí a odborná činnost STOČ 2013

MS Excel makra a VBA

Maturitní projekt do IVT Pavel Doleček

Nastavení klientských stanic pro webové aplikace PilsCom s.r.o.

PŘEHLED A MOŽNOSTI VYUŽITÍ WEBOVÝCH MAPOVÝCH SLUŽEB

INOVACE PŘEDMĚTŮ ICT. MODUL 11: PROGRAMOVÁNÍ WEBOVÝCH APLIKLACÍ Metodika

MVVM pro desktop i web

TNPW1 Cvičení aneta.bartuskova@uhk.cz

XSLT pomocí JavaScriptu v Mozille (... Opeře a Safari)

Nastavení klientských stanic pro webové aplikace PilsCom s.r.o.

Web. Získání informace z internetu Grafické zobrazení dat a jejich struktura Rozšíření funkcí pomocí serveru Rozšíření funkcí pomocí prohlížeče

Tvorba webu v HTML. Redakční systém. CMS Joomla! Co je Joomla

Webové rozhraní pro datové úložiště. Obhajoba bakalářské práce Radek Šipka, jaro 2009

Ajax - úvod. Klíčové pojmy: Ajax, skriptování na straně klienta a serveru, objekt XMLHttpRequest, DOM model.

Formy komunikace s knihovnami

Objektové programování

Formuláře. Internetové publikování

Fiktivní firma. Žáci získají základní informace o přípravě a tvorbě webových stránek. Na konci prezentace je úkol, se kterým žáci samostatně pracují.

Studijní průvodce e-learningovým kurzem. STRUKTURÁLNÍ FONDY A PROJEKTY v období

Obsah přednášky. Představení webu ASP.NET frameworky Relační databáze Objektově-relační mapování Entity framework

Obsah. Úvod 11 Zpětná vazba od čtenářů 13 Errata 14 Poznámka ke kódům 14

GWT pro pokročilé. MoroSystems, s.r.o. Pavel Klobása. Senior Java Developer.

Obsah. Úvod 11 O autorovi 11 Koncept knihy 11 Zpětná vazba od čtenářů 12 Zdrojové kódy ke knize 12 Errata 12 ČÁST I VÝVOJ MOBILNÍ APLIKACE

Škola: Gymnázium, Brno, Slovanské náměstí 7 III/2 Inovace a zkvalitnění výuky prostřednictvím ICT Název projektu: Inovace výuky na GSN

Tvorba informačních systémů

Internet cvičení. ZS 2009/10, Cvičení 3., Tomáš Pop. DISTRIBUTED SYSTEMS RESEARCH GROUP

Ing. Přemysl Brada, MSc., Ph.D. Ing. Martin Dostal. Katedra informatiky a výpočetní techniky, FAV, ZČU v Plzni

Mediareference Vojtěch

Funkce grafiky na webu. Primární grafická informace Fotografie Schémata Diagramy Loga Bannery

SimBIm uživatelská dokumentace

OBSAH. 1. Úvod Požadavky na SW vybavení... 3

StruËn obsah. Část I JavaCo? Vše ohledně JavaScriptu 17. Část II Použití JavaScriptu v praxi 91

Metody připojování periferií

PHP PHP je skriptovací programovací jazyk dynamických internetových stránek PHP je nezávislý na platformě

Aplikace je program určený pro uživatele. Aplikaci je možné rozdělit na části:

DOKUMENTACE REDAKČNÍHO SYSTÉMU PINYA

ČERV. Hra Červ je psána pomocí příkazů Javascriptu a standardních příkazů HTML.

Specifikace projektu Ocerus

Greasemonkey. Uživatelské skriptování (nejen) ve Firefoxu

DSL manuál. Ing. Jan Hranáč. 27. října V této kapitole je stručný průvodce k tvorbě v systému DrdSim a (v

Základy HTML, URL, HTTP, druhy skriptování, formuláře

Programování II. Objektová dekompozice Třída jako objekt 2018/19

Tvorba webových stránek

TÉMATICKÝ OKRUH Softwarové inženýrství

Olga Rudikova 2. ročník APIN

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ

Printris. Hra Printris je psána pomocí příkazů Javascriptu a standardních příkazů HTML.

Obsah. Rozdíly mezi systémy Joomla 1.0 a Systém Joomla coby jednička online komunity...16 Shrnutí...16

Dědění, polymorfismus

typová konverze typová inference

TÉMATICKÝ OKRUH Softwarové inženýrství

Transkript:

Javascript v Seznamu Michal Aichinger

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

Seznámení s Javascriptem Co je Javascript Scriptovací jazyk Prototypový jazyk Objektový jazyk Co není Javascript Třídní jazyk Java

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

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>

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

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 michal.aichinger@firma.seznam.cz