Verkkosivujen toiminnallisuus (JavaScript)

Samankaltaiset tiedostot
(JavaScript) Aleksi O Connor DI Informaatioverkostot. Markku Laine Mediatekniikan laitos

(JavaScript) T Digitaalisen median työvälineet (3 op) ME-C2300 Verkkojulkaisemisen perusteet (5 op)

5/20: Algoritmirakenteita III

Vertailulauseet. Ehtolausekkeet. Vertailulauseet. Vertailulauseet. if-lauseke. if-lauseke. Javan perusteet 2004

Digitaalisen median tekniikat. Luento 4: JavaScript

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++?

Java-kielen perusteet

Ohjelmointiharjoituksia Arduino-ympäristössä

JWT 2016 luento 11. to klo Aulikki Hyrskykari. PinniB Aulikki Hyrskykari

Listarakenne (ArrayList-luokka)

Java-kielen perusteita

Sisältö. 22. Taulukot. Yleistä. Yleistä

Java kahdessa tunnissa. Jyry Suvilehto

Digitaalisen median tekniikat JavaScript

Digitaalisen median tekniikat JavaScript Harri Laine 1

Sisältö. 2. Taulukot. Yleistä. Yleistä

05/04/2004. Digitaalisen median tekniikat, k2004 HY/TKTL, javascript_1. Harri Laine 1. JavaScript

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma.

20. Javan omat luokat 20.1

Metodien tekeminen Javalla

Sisällys. 20. Javan omat luokat. Java API. Pakkaukset. java\lang

Java-kielen perusteet

Ohjelmoinnin perusteet Y Python

Internet-pohjaisen oppimisympäristön laadinta. Luento 3

Olio-ohjelmointi Javalla

7/20: Paketti kasassa ensimmäistä kertaa

16. Javan omat luokat 16.1

Alkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5)

17. Javan omat luokat 17.1

Javan perusteet. Ohjelman tehtävät: tietojen syöttö, lukeminen prosessointi, halutun informaation tulostaminen tulostus tiedon varastointi

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti:

2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4)

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

Ohjelmoinnin perusteet Y Python

Luento 5. Timo Savola. 28. huhtikuuta 2006

- Komposiittityypit - Object (Mukaanlukien funktiot) - Array. - Erikoisdatatyypit - null - undefined

Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet suoritetaan peräkkäin.

Java-kielen perusteet

14. Poikkeukset 14.1

Taulukot. Jukka Harju, Jukka Juslin

Javan perusteita. Janne Käki

14. Poikkeukset 14.1

Ohjelmointi 2 / 2008 Välikoe / Pöytätestaa seuraava ohjelma.

CODEONLINE. Monni Oo- ja Java-harjoituksia. Version 1.0

11. Javan valintarakenteet 11.1

Ohjelmoinnin perusteet Y Python

17. Javan omat luokat 17.1

JS-kehitys - yleiskuvaus. TIEA255 - Juho Vepsäläinen

T Digitaalisen median työvälineet (3 op) ME-C2300 Verkkojulkaisemisen perusteet (5 op) Mediatekniikan laitos / Informaatioverkostot

Harjoitustyö 3: Verkkosivujen toiminnallisuus (JavaScript)

ITKP102 Ohjelmointi 1 (6 op)

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

ITKP102 Ohjelmointi 1 (6 op)

Sisällys. 1. Omat operaatiot. Yleistä operaatioista. Yleistä operaatioista

P e d a c o d e ohjelmointikoulutus verkossa

Java-API, rajapinnat, poikkeukset, UML,...

Harjoitus Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo

7. Näytölle tulostaminen 7.1

11. Javan valintarakenteet 11.1

Ohjelmointi 2 / 2010 Välikoe / 26.3

13. Loogiset operaatiot 13.1

Luento 3. Jouni Ikonen - Jouni.Ikonen lut.fi

Ohjelmoinnin perusteet Y Python

1. Omat operaatiot 1.1

ELM GROUP 04. Teemu Laakso Henrik Talarmo

Harjoitustyö: virtuaalikone

Groovy. Samuli Haverinen, Aki Hänninen. 19. marraskuuta 2015

9. Periytyminen Javassa 9.1

Rajapinta (interface)

ITKP102 Ohjelmointi 1 (6 op)

Ohjelmoinnin jatkokurssi, kurssikoe

Tietueet. Tietueiden määrittely

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

Olion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa();

Metodit. Metodien määrittely. Metodin parametrit ja paluuarvo. Metodien suorittaminen eli kutsuminen. Metodien kuormittaminen

Tutoriaaliläsnäoloista

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 5: Python

Muuttujat ja kontrolli. Ville Sundberg

Ehto- ja toistolauseet

Rinnakkaisohjelmointi kurssi. Opintopiiri työskentelyn raportti

Harjoitus 4 (viikko 47)

A TIETORAKENTEET JA ALGORITMIT

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

Operaattoreiden ylikuormitus. Operaattoreiden kuormitus. Operaattoreiden kuormitus. Operaattoreista. Kuormituksesta

List-luokan soveltamista. Listaan lisääminen Listan läpikäynti Listasta etsiminen Listan sisällön muuttaminen Listasta poistaminen Listan kopioiminen

12. Javan toistorakenteet 12.1

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2

18. Abstraktit tietotyypit 18.1

JavaScript alkeet Esimerkkikoodeja moniste 2 ( Metropolia)

Harjoitus 5 (viikko 48)

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti

1.3Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. X Poikkeusten käsittelystä

Ohjelmoinnin perusteet Y Python

1.3 Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

Transkriptio:

Verkkosivujen toiminnallisuus Selainohjelmointi (JavaScript) (JavaScript) T-111.1100 Digitaalisen median työvälineet (3 op) ME-C2300 Verkkojulkaisemisen perusteet (5 op) Juuso Lappalainen DI Markku Laine Informaatioverkostot Mediatekniikan laitos / Mediatekniikan laitos 30. syyskuuta 2014

Luennon jälkeen osaan toteuttaa verkkosivuille toiminnallisuutta JavaScript: llä.

Luennon sisältö JavaScript CodeAcademy: JavaScript peruskurssi JSON-tiedonsiirtoformaatti DOM API jquery Tiedon tallennus Verkkosivujen optimointi CodeAcademy: jquery peruskurssi Yhteenveto

JavaScript

Tulkattava skriptikieli Pääasiallinen käyttö selaimessa Verkkosivun toiminnallisuus API:en kautta pääsy selaimeen/laitteeseen Prototyyppipohjainen, dynaamisesti tyypitetty,...

http://janne.aukia.com/zoomooz/examples/imagestack/index.html

Historia

1995-1996 Kehittäjä Brendan Eich. Ensiesiintyminen Netscape Navigator 2.0:ssa. 1996-1998 Standardoitavaksi Ecma International:iin. Standardoitu nimellä ECMAScript.

1998-2004 HTML-sivujen manipuloiminen DOM Level 1, 2 ja 3 API:ien avulla. 2001-2002 JSON-tiedonsiirtoformaatti. Kehittäjä Douglas Crockford. 2005 Asynkroninen kommunikointi palvelimen kanssa, AJAX. Termin kehittäjä Jesse James Garrett.

2006 Asiakaspään JavaScript-kirjastot, kuten jquery (kehittäjä John Resig) ja Prototype. 2008-20?? HTML5 ja siihen liittyvät JavaScript API:t. 2009 Standardoitu palvelinpään JavaScript-kirjasto, CommonJS. Kehittäjä Kevin Dangoor.

Käyttö *.js / <script>

JavaScript

KÄYTTÖTAVAT 1) Ulkoinen skriptimäärittely (*.js tiedosto) 2) Sisäinen skriptimäärittely (<script> elementti)

ULKOINEN SKRIPTIMÄÄRITTELY Skriptit voidaan määritellä ulkoisessa tiedostossa (*.js). Ulkoinen skriptitiedosto voidaan linkittää verkkosivuun ja näin ollen samoja skriptimäärittelyitä voidaan käyttää usealla eri verkkosivulla (helpottaa ylläpitoa). Selaimet voivat myös tallentaa ulkoisen skriptitiedoston välimuistiin (nopeuttaa verkkosivujen lataamista). Suositeltavin käyttötapa. Käyttäminen verkkosivuilla * (Suositeltu tapa HTML-tiedoston head-tagin sisällä) <script type= text/javascript src= scripts.js ></script> * Perinteisesti <head> osion sisään

Ulkoinen skriptimäärittely HTML JavaScript

SISÄINEN SKRIPTIMÄÄRITTELY Skriptit voidaan määritellä verkkosivun sisällä (<script>). Sisäinen skriptimäärittely keskittää verkkosivun skriptimäärittelyt yhteen paikkaan (helpottaa hieman ylläpitoa). Samoja skriptimäärittelyjä ei kuitenkaan voi käyttää muilla verkkosivuilla eivätkä selaimet pysty tallentamaan niitä välimuistiin. Käyttäminen verkkosivuilla * <script type= text/javascript >...</script> * Perinteisesti <head> osion sisään

Sisäinen skriptimäärittely HTML JavaScript HTML

HTML JavaScript HTML

Syntaksin perusteet

Muuttujat Määritellään var sanalla Tyyppi jätetään määrittelemättä Määrittyy dynaamisesti Arvo määrittelee tyypin undefined, null, totuusarvo, merkkijono, numero, olio Esimerkki

Primitiivityypit undefined Ei määritelty null Ei viittausta mihinkään Totuusarvo (boolean) true tai false

Primitiivityypit Numero Kokonais- tai desimaaliluku Laskuoperaattorit: +, -, *, /, jne. Huom. JavaScriptin liukuluvut aiheuttavat tietyissä tilanteissa yllättäviä ongelmia: https://stackoverflow. com/questions/1458633/elegant-workaround-for-javascript-floatingpoint-number-problem Ole tarkkana yhdistäessäsi numeroita merkkijonojen kanssa isnan( muuttuja ) testaa onko luvaton numero (Not-a-Number) Merkkijonosta numeroksi

Primitiivityypit Merkkijono (string) Arvo ympäröidään joko lainausmerkein ( ) tai puolilainausmerkein ( ) Merkkijonojen yhdistäminen + merkillä Myös olio, jolla useita ominaisuuksia ja metodeita, esim. length Numerosta merkkijonoksi http://www.quirksmode.org/js/strings.html

Oliotyypit Taulukko (array) Lista arvoja Alkioiden arvot voivat olla eri ja/tai mitä tahansa tyyppiä Myös olio, jolla useita ominaisuuksia ja metodeita, esim. length Kaksi tapaa luoda taulukko Alkioiden arvojen käsittely indeksinumeroiden kautta Indeksointi alkaa nollasta

Oliotyypit Funktio (function) Lohko ohjelmakoodia, joka eriyttää tietyn ja/tai usein suoritettavan toiminnon Määrittely koostuu function sanasta sekä funktion nimestä, parametreista, ja paluuarvosta Funktion nimi, parametrit ja paluuarvo ovat valinnaisia Funktiot voivat myös olla muuttujien arvoina Esimerkki

Oliotyypit Olio (object) Kuvaa jotakin käsitettä ja sen ominaisuuksia, esim. kurssi Oliolla on ominaisuuksia, jota koostuvat avain-arvo pareista Avaimet ovat merkkijonoja Arvot voivat olla mitä tahansa tyyppiä, esim. funktio Avain-arvo parit (ominaisuudet) erotetaan toisistaan pilkulla Määrittelyesimerkki

Oliotyypit Olion (object) käyttö Ominaisuuksia voi lukea, lisätä ja poistaa Joustava Kaksi eri notaatiota: piste- ja sulkumerkkinotaatio Esimerkki

Muita oliotyyppejä Date Päivämäärään ja aikaan liittyvät metodit http://www.w3schools.com/jsref/jsref_obj_date.asp Math Matemaattisiin operaatioihin liittyvät ominaisuudet ja metodit http://www.w3schools.com/jsref/jsref_obj_math.asp RegExp Säännöllisiin lausekkeisiin liittyvät toiminnot http://www.w3schools.com/jsref/jsref_obj_regexp.asp

Näkyvyys (scope) Muuttujat ilman var sanaa (global) näkyvät kaikkialla, esim. funktion ulko- ja sisäpuolella Ohjenuora: määrittele muuttujat aina var sanaa käyttäen Funktion ulkopuolella var sanalla määritellyt muuttujat näkyvät sekä funktion ulko- että sisäpuolella Funktion sisäpuolella var sanalla määritellyt muuttujat näkyvät vain funktion sisäpuolella

this Viittaa käytettävissä olevaan kontekstiin (itseviite) Määräytyy kutsuja(olio)n mukaan Käytetään esim. olion sisällä viittaamaan sen ominaisuuksiin Esimerkki

Laskuoperaattorit + * / % ++ -- lisäys vähennys kerto jako jakojäännös yhden lisäys yhden vähennys

Vertailuoperaattorit == arvot vastaavat toisiaan === arvot ja tyypit vastaavat toisiaan!= arvot eivät vastaa toisiaan!== arvot tai tyypit eivät vastaa toisiaan > suurempi kuin < pienempi kuin >= suurempi tai yhtä suuri kuin <= pienempi tai yhtä suuri kuin

Kommentit Yksirivinen kommentti Monirivinen kommentti

Logiikkaoperaattorit && ja tai!vastakohta

Valintalauseet if lause Suorita lohko, mikäli lauseen ehto toteutuu if else lause Suorita lohko, mikäli lauseen ehto toteutuu tai muussa tapauksessa toisen lauseen lohko if else if else lause Suorita yksi (ensimmäinen) lohko, joka toteuttaa lauseen ehdon tai muussa tapauksessa toisen lauseen lohko

Valintalauseet switch lause Suorita yksi (ensimmäinen) lohko, joka toteuttaa lauseen ehdon tai vaihtoehtoisesti vakiolauseen lohko (default) break sana estää suoritusta jatkamasta seuraavaan lohkoon (tästä lisää Hyppylauseet kohdassa)

Toistolauseet while lause Suorita lohko nolla tai useampi kertaa, niin kauan kuin toistolauseen ehto toteutuu do while lause Suorita lohko yksi tai useampi kertaa, niin kauan kuin toistolauseen ehto toteutuu

Toistolauseet for lause Suorita lohko nolla tai useampi kertaa, niin kauan kuin toistolauseen ehto toteutuu Toistojen määrä yleensä etukäteen tiedossa

Hyppylauseet return lause Poistu metodista tai silmukasta Voi palauttaa arvon break lause Poistu toistolauseesta tai silmukasta continue lause Poistu toistolauseen lohkosta

Virhetilanteiden käsittely try...catch...finally lause Suorita catch lohko, mikäli try lohkon suorituksessa tapahtuu poikkeus Suorita lopuksi vielä valinnainen finally lohko Esimerkki

Virhetilanteiden käsittely throw lause Virheviestit voidaan räätälöidä throw lauseen avulla Esimerkki

Varatut sanat abstract const enum function boolean continue export goto break debugger extends if byte default false implements case delete final import catch do finally in char double float instanceof class else for int

Varatut sanat interface public throw void long return throws while native short transient with new static true null super try package switch typeof private synchronized var protected this volatile

JavaScript https://www.codecademy. com/courses/javascript-beginneren-x9dnd/0/1 http://www.codecademy.com/tracks/javascript > Introduction to JavaScript

Olio-ohjelmointi

Olio-ohjelmointi JavaScriptillä JavaScript on oliopohjainen kieli JavaScript ei kuitenkaan tarjoa Javan kaltaista tukea olio-ohjelmoinnille Ei suoranaisesti tue luokkia, perintää, jne. Voidaan simuloida funktioiden ja prototyyppien avulla luokat, rakentajat, muuttujat, vakiot, metodit, Luokkien määrittelyyn useita eri tapoja http://www.phpied.com/3-ways-to-define-a-javascript-class/ Tarjolla myös erillisiä kirjastoja

Olio-ohjelmointi JavaScriptillä

Olio-ohjelmointi JavaScriptillä

Olio-ohjelmointi JavaScriptillä

JSON

JavaScript Object Notation (JSON) Kevyt, tekstipohjainen (string), kieliriippumaton tiedonsiirtoformaatti Erittäin suosittu webissä, kuten XML Toimii erittäin hyvin yhteen JavaScriptin kanssa Avoin teknologia (ts. ei ole standardoitu) Pohjautuu ECMAScript 3:een http://tools.ietf.org/html/rfc4627 XML:ään verrattuna teknisesti hieman rajoittuneempi Alkaa olla standardi syötteissä, esimerkiksi Twitter- ja Facebook ovat siirtyneet xml:stä json:iin

JavaScript Object Notation (JSON) Olio tai taulukko Olio kuvaa jotakin käsitettä ja sen ominaisuuksia, esim. kurssi Taulukko listaa arvoja Arvojen sallitut tyypit null, boolean, numero, merkkijono, taulukko, olio Helppokäyttöinen sekä ihmisen että koneen näkökulmasta Natiivituki tullut selaimiin vasta 2009 Käytä erillisiä kirjastoja vanhojen selaimien kanssa

Esimerkki JSON

JSON:n käyttö Olion ominaisuuksien lukeminen Kaksi eri notaatiota: piste- ja sulkumerkkinotaatio Esimerkki course[ "credits" ] course.credits Taulukon arvojen lukeminen Haetaan indeksin perusteella (alkaa nollasta) Esimerkki courses[0] Syvähierarkisen JSON:n lukeminen Tarvittaessa käytä molempia tapoja useampaan kertaan ja/tai yhdistele niitä keskenään Esimerkki courses[0].credits

DOM API

Document Object Model (DOM) W3C:n kehittämä ohjelmointirajapinta (API) HTML- ja XML-dokumenteille Määrittelee, miten dokumenttia luetaan, käytetään ja muokataan Ohjelmoijat voivat rakentaa dokumentteja, navigoida rakenteessa, poistaa tai lisätä elementtejä sekä muokata niitä Voidaan käyttää minkä tahansa ohjelmointikielen kanssa http://www.w3.org/tr/dom-level-3-core/

Document Object Model (DOM) http://www.w3.org/tr/dom-level-3-core/introduction.html

Elementtien valinta Selectors API Level 1 W3C:n suositusehdotus, joulukuu 2012 Määrittelee metodit DOM-puun elementtien valintaan Kattava selaintuki (uudet selaimet) Tehokas ohjelmointirajapinta, esim. document.queryselector( valitsimet ) document.queryselectorall( valitsimet ) http://www.w3.org/tr/selectors-api/

Elementtien valinta

Elementtien manipulointi DOM Parsing and Serialization W3C:n työluonnos, syyskuu 2012 Standardoi selaimien yleisesti tukeman toiminnallisuuden Kattava selaintuki Tehokas ohjelmointirajapinta, esim. element.innerhtml element.outerhtml http://www.w3.org/tr/dom-parsing/

Elementtien manipulointi

Tapahtumat

Tapahtumat Suuri osa selainpään JavaScript-ohjelmakoodista liittyy tapahtumien kuunteluun ja niihin reagoimiseen HTML-sivun latauksen valmistuminen Linkin painaminen Hiiren liikkeiden seuraaminen Tapahtumasta välittyy muun muassa sen tyyppi ja kohde http://www.quirksmode.org/js/events_properties.html

Tapahtumat DOM Level 3 Events W3C:n työluonnos, syyskuu 2012 Määrittelee tapahtumat, niiden kuuntelun ja etenemisen, jne. http://www.w3.org/tr/dom-level-3-events/ Yleisimmät tapahtumatyypit Käyttöliittymätapahtumat, esim. load Kohdistustapahtumat, esim. focus Hiiritapahtumat, esim. click, mouseover ja mousemove Näppäimistötapahtumat, esim. keyup ja keydown Lista tapahtumatyypeistä http://www.w3.org/tr/dom-level-3-events/#event-types-list

Tapahtumien käyttö Tapahtumakuuntelijoiden lisääminen addeventlistener( tyyppi, kuuntelija ) https://developer.mozilla.org/en/dom/element.addeventlistener Tapahtumakuuntelijoiden poistaminen removeeventlistener( tyyppi, kuuntelija ) https://developer.mozilla.org/en-us/docs/dom/element. removeeventlistener Tapahtumien lähettäminen dispatchevent( tapahtuma ) https://developer.mozilla.org/en-us/docs/dom/element. dispatchevent http://www.w3.org/tr/dom-level-3-events/#events-eventtarget

Tapahtumien käyttö

jquery

jquery http://jquery.com/

JavaScript-kirjastot http://w3techs.com/technologies/overview/javascript_library/all

http://jquery.com/

Yleiskuvaus jquery on JavaScript-kirjasto, joka helpottaa ja nopeuttaa yleisimpien JavaScript-toimintojen toteutusta asiakaspäässä Yksinkertainen ja tiivis syntaksi Tukee yleisimmin käytettäviä toimintoja Ottaa huomioon selainten väliset eroavaisuudet Laajennettavissa liitännäiskoodin avulla

Syntaksi

Toiminnot Elementtien valitseminen DOM-puusta (Selectors) DOM-puun manipuloiminen Tapahtumat Efektit ja animaatiot Ajax Liitännäiset

Linkkejä jquery http://jquery.com/ jquery API http://api.jquery.com/ jquery UI http://jqueryui.com/ jquery UI API http://api.jqueryui.com/ jquery-kirja http://jqfundamentals.com/ http://www.carbonsmart.co.uk/wp-content/uploads/2011/03/jqueryfundamentals-book.pdf

Tiedon tallennus

Tiedon tallennustavat verkossa (selainpäässä) Web Storage Web Storage, http://www.w3.org/tr/webstorage/ Tallentaa käyttäjän selaimen muistiin tietoa joko kyseisen session ajaksi (kunnes selainikkuna suljetaan, sessionstorage) tai pysyvästi (kunnes muisti tyhjennetään, localstorage) Kolmannen osapuolen palvelut Firebase, https://www.firebase.com/ Reaaliaikainen tiedonsiirto Hyödyllinen esimerkiksi moninpeleissä

Web Storage:n käyttö Varmista aluksi että käyttäjän selain tukee web storagea Tiedon tallentaminen avain-arvo pareilla Tiedon hakeminen avaimen avulla Tarkempi dokumentaatio http://www.w3schools.com/html/html5_webstorage.asp

Verkkosivujen optimointi

Kuvien optimointi Myös kuvat kannattaa optimoida käyttötarkoitukseen sopivaksi Pienennä kuvat tarvittavan kokoisiksi Käytä optimaalisinta kuvaformaattia Poista ylimääräinen tieto kuvista Työkaluja http://addyosmani.com/blog/image-optimization-tools/ http://www.picresize.com/

Muu optimointi (good to know, mutta ei tämän kurssin kannalta oleellista) Olennaista käytettävyyden ja saavutettavuuden kannalta Nopeasti latautuva ja optimoitu sivusto sijoittuu korkeammalle hakutuloksissa Jopa muutaman sekunnin latausajat karkottaa suuren osan käyttäjistä https://blog.kissmetrics.com/loading-time/ https://developers.google.com/speed/pagespeed/ Hakukoneoptimiointi Semanttinen html-koodi (meta-tiedot, oikeanlaiset elementit oikeissa tarkoituksissa) Responsiivisuus (pienelle näytölle optimoitu sivusto sijoittuu korkealle mobiililaitteilla haettaessa) https://www.google.com/webmasters/tools/mobile-friendly/

Yhteenveto

Yhteenveto JavaScriptistä on kehittynyt vuosien varrella johtava asiakaspään ohjelmointikieli HTML5:n ja siihen liittyvien JavaScript API:ien myötä JavaScriptin suosio kasvaa entisestään JavaScript tarjoaa ohjelmointirajapinnat niin tapahtumien kuunteluun kuin DOM-puun käsittelyyn JSON tarjoaa yksinkertaisen ja toimivan tiedonkuvausja tiedonsiirtoformaatin JavaScript-kirjastot (esim. jquery) helpottavat ja nopeuttavat asiakaspään ohjelmointia Verkkosivujen optimointi nopeuttaa sivulatauksia sekä parantaa käyttökokemusta

Linkkejä http://www.codecademy.com/tracks/javascript http://www.codecademy.com/tracks/jquery https://developer.mozilla.org/enus/docs/dom/dom_reference http://www.gotapi.com/jsdomw3s http://www.w3schools.com/jsref/default.asp

jquery https://www.codecademy. com/courses/web-beginner-enbay3d/0/1 http://www.codecademy.com/tracks/jquery > Introducing jquery

KIITOS! Juuso.lappalainen@aalto.fi