WEBOLDALAK PROGRESSZÍV FEJLESZTÉSEwebprogramozas.inf.elte.hu/weaf1/ea/weaf1_13.pdf · WEBOLDALAK...

Post on 17-Nov-2020

9 views 0 download

Transcript of WEBOLDALAK PROGRESSZÍV FEJLESZTÉSEwebprogramozas.inf.elte.hu/weaf1/ea/weaf1_13.pdf · WEBOLDALAK...

WEBOLDALAK PROGRESSZÍV

FEJLESZTÉSE

Horváth Győző

Egyetemi adjunktus

1117 Budapest,

Pázmány Péter sétány 1/C, 2.420

Tel: (1) 372-2500/1816

Tartalom2

Web helyzete, fejlődése, kihívásai, problémák

Megoldási javaslatok

Weboldalak progresszív fejlesztése a gyakorlatban

Sok-sok példa

Weboldal vs webalkalmazás3

Weboldal

A tartalom a középpontban (HTML, CSS)

Kevés JavaScript

Webalkalmazás

A funkció (viselkedés) a középpontban (JavaScript)

HTML és CSS csak megjelenítési eszköz

Újdonságok, régiségek, problémák, kihívások

A fejlődő web4

Web fejlődése5

Előnye

Új oldalak és alkalmazások jelennek meg

Áthatják életünk minden terét

Webes szabványok fejlődésével gyorsabb, hatékonyabb, dinamikusabb oldalak készíthetők

Egyre több eszközzel érhetjük el a webet

Hátránya

Sok eszköz egyáltalán vagy részben nem támogatja a legújabb JavaScript és CSS tulajdonságokat

Akadályoztatott emberek nem képesek használni

JavaScript nélkül nem működő oldalak6

http://www.sears.com – Add to cart

http://www.walmart.com/ip/Buy-2-Get-1-Free-

Nintendo-DS-Software-Value-Bundle/19349737 –

select gomb, bal menü

http://www.ford.com/ – Használhatatlan menü

http://www.nike.com/nikeos/p/nike/language_select/

– üres oldal

http://www.vatera.hu – Kosárba

http://babamamabazar.hu/ – Kezdőoldal

Probléma?7

A JavaScript hiánya tényleg akkora probléma?

Régen más volt a válasz

Ma megint más

Webes felhasználók összetétele8

Számban, területileg, életkorban, képzettség és

eszközök tekintetében is jelentős eltolódás történt

az elmúlt húsz évben az internethasználatban

http://internetworldstats.com/stats.htm

Használati statisztika9

Internetes felhasználók földrészenként10

Penetráció földrészenként11

Felhasználói elvárások növekedése12

Csak online elérhető szolgáltatások, gazdag

felhasználói élményt nyújtó felületekkel (Amazon)

Felhasználók generálta tartalmak (blog, stb.)

Valós idejű web (Google Docs, Twitter, Facebook)

Asztali alkalmazáshoz hasonlító élmény

(vizualizáció, drag and drop)

Sokféle eszköz (asztali, mobil, tablet, stb.)

Elérhetőség iránti igény növekedése13

Idősebb felhasználók

Látás, hallás, mozgássérült emberek számára a hagyományos oldalak elérhetetlenek

Nagyobb kontraszt, betűméret, képernyő-olvasó, billentyűhasználat

Törvényi előírások bizonyos országokban

Szabványok

Web Accessibility Initiative (WAI)

Web Content Accessibility Guidelines (WCAG)

WAI Accessible Rich Internet Applications (WAI ARIA)

Mobilweb terjedése14

Mobilkészülékek megjelenése

telefonok, okostelefonok

tabletek, netbook

videójáték-rendszerek

e-book olvasók

televíziók, rádiók, hűtők

Mobilweb15

http://mobithinking.com/mobile-marketing-tools/latest-mobile-

stats

Világszerte a mobil előfizetők száma meghaladta az 5,3 milliárdot, a

leggyorsabban Kína és India gyarapodott.

4:1 arányban adnak el butafonokat az okostelefonokkal szemben.

2009-ben félmilliárd ember használta a mobil internetet, és ez a szám

öt éven belül megduplázódhat.

Sok mobilhálót használó ember csak a mobileszközét használja, azaz

nincs vagy ritkán használ laptopot, asztali gépet a világháló elérésére.

Egyiptomban és Indiában a világhálót használó emberek 59%-a csak a

mobilkészülékén kapcsolódik a webre, de még az USÁban is 25%-ra

tehető az ilyen emberek aránya.

A leggyakoribb mobilalkalmazások a játékok, keresés, hírek, térképek,

közösségi hálózatok és időjárás.

Mobil eszközök16

Asztali vs mobil17

Mobil operációs rendszerek18

Mobilböngészők19

Eszközök és böngészők20

Ezen eszközök mindegyikének más böngészője,

pluginja, betűkészlete, képernyőmérete,

felhasználói felülete van

Lassan öregednek ki

Alternatív

operációs rendszerek (Unix-alapúak)

böngészők (Konqueror, Lynx, stb.)

Web 2.0-es fejlesztés csapdái21

Támogatott böngészők listája

Mi van azokkal, akik nem ilyet használnak?

A támogatott böngészők egyformán képesek

kezelni a JavaScriptet, CSS-t, sütiket, Flash-t, stb.

Mi van, ha támogatja, de a felhasználó kikapcsolja?

JavaScript feltétlenül szükséges

Legalább 5%-ban nincs JavaScript

Web 2.0-es fejlesztés csapdái22

CSS feltétlenül szükséges

régi eszközök rosszul jelenítik meg

JavaScripttel együtt jelenik meg

Pluginek használata

kézi telepítés, nem támogatott platformok

főleg mobileszközök esetén probléma (iPhone és Flash)

Kezelőfelületek különbözősége

érintőképernyőn nem valósítható meg drag and drop,

billentyű lenyomása (Ctrl), stb.

Könnyed lefokozás, progresszív fejlesztés,

diszkrét JavaScript

Megoldási javaslatok23

Könnyed lefokozás24

Graceful degradation (GD)

Célja: felhasználó funkcionálisan használhassa a

felületet

Megközelítés: hiba tolerálása

Ha egy komplex rendszer egy vagy több

komponensébe hiba csúszik, akkor egy alternatív

útvonalon biztosítja a működést

Ld. noscript tag, alt attribútum, táblázat mint layout

Progresszív fejlesztés25

Progressive enhancement (PE)

Cél ugyanaz, de a megközelítés más

Különböző felhasználók és eszközök támogatása

Egy közös alap létrehozása a cél, amit minden eszköz megért, erre jön rá a CSS és a JavaScript

Az alapelv: tartalom, stílus és viselkedés szétválasztása

Lépések

tartalom (szemantikus HTML)

megjelenés, stílus (CSS)

viselkedés (JavaScript)

Progresszív fejlesztés26

GD vs PE

Kiindulás: teljes

funkcionalitású verzió

Ha valami nem

elérhető, akkor azt

kihagyva érhető el a

funkció

Fentről lefele építkezik

Kiindulás: alap funkció

Ha valami elérhető,

akkor azt elérhetővé

teszi

Lentről felfele

építkezik

27

Könnyed lefokozás Progresszív fejlesztés

PE előnyei28

egységes elérése az oldalnak

lentről felfelé építkezik tisztább, modulárisabb

kód

jövőben is kompatibilis marad az oldal

háttérrendszerekkel egyszerűbb interfész

közös HTML az alap és a gazdag oldalon

Diszkrét JavaScript29

Szkriptek elszeparálása a tartalomtól és CSS-től

JavaScript külön fájlban

E nélkül is működnie kell a weboldalnak

Karbantarthatóságot növeli

Kód könnyen beágyazható legyen

Bevált gyakorlatok használata

HTML és CSS párosával oldjuk meg a problémát

kompatibilitás és sebesség növekszik

erre jöjjön rá a JavaScript

browser detection helyett feature detection

PE: egyszerű példa30

http://coding.smashingmagazine.com/2009/04/22

/progressive-enhancement-what-it-is-and-how-to-

use-it/

http://www.smashingmagazine.com/images/progressiv

e-enhancement/navigation-1.html

http://www.smashingmagazine.com/images/progressiv

e-enhancement/navigation-2.html

http://www.smashingmagazine.com/images/progressiv

e-enhancement/navigation-3.html

GD vs PE31

http://dev.opera.com/articles/view/graceful-

degradation-progressive-enhance/

Kiindulási funkció: oldal nyomtatása

<p id="printthis">

<a href="javascript:window.print()">Print this page</a>

</p>

GD vs PE32

Könnyed lefokozás

Mi az a JavaScript?

Hogyan kell bekapcsolni?

Van jogom bekapcsolni?

<p id="printthis">

<a href="javascript:window.print()">Print this page</a>

</p>

<noscript>

<p class="scriptwarning">

Printing the page requires JavaScript to be enabled.

Please turn it on in your browser.

</p>

</noscript>

GD vs PE33

Progresszív fejlesztés

Kell egyáltalán a nyomtatás funkció?

<p id="printthis">Thank you for your order. Please

print this page for your records.</p>

(function(){

if(document.getElementById){

var pt = document.getElementById('printthis');

if(pt && typeof window.print === 'function'){

var but = document.createElement('input');

but.setAttribute('type','button');

but.setAttribute('value','Print this now');

but.onclick = function(){

window.print();

};

pt.appendChild(but);

}

}

})();

PE a gyakorlatban34

Problémák a gyakorlatban35

A sokféle eszköz különböző mértékben támogatja a

JavaScriptet és CSS-t, vagy egyszerűen ki vannak

kapcsolva

Nem lehet külön alkalmazni a CSS-t és a

JavaScriptet, mert a modern kliensoldali

programozásban nagyon összefonódtak

PE lépései36

Design áttekintése

minden komponens jól strukturált, szemantikus HTML-lel

legyen leírva

JavaScript és CSS nélkül is teljes értékű alkalmazás

Böngésző JavaScript és CSS képességeinek

ellenőrzése, majd alkalmazása

Elérhetőség biztosítása a gazdag oldalon

Böngészők tulajdonságainak tesztelése37

Browser detection nem jó

a lista állandó karbantartása

nem jövő-biztos

browser spoofing (hamisítás)

Feature detection

JavaScript

CSS

Ez alapján két részre osztani a böngészőket

alap

gazdag

PE részei38

Letisztult tartalom és jól struktúrált leírás

alapleírás

Határozott szétválasztása az elrendezésnek és a

megjelenésnek

Diszkrét alkalmazása a stílusnak és viselkedésnek,

figyelembe véve az elérhetőséget

Példa: alapoldal kidolgozása39

Példa: alapoldal kidolgozása40

Példa: alapoldal kidolgozása41

42

Példa: alapoldal kidolgozása43

Példa2: űrlap44

Fejlesztett változat

Példa2: alapoldal45

Példa – Összecsukható tartalom46

Összecsukható tartalom47

Áttekintés

Címsorok és felsorolás

ul: display: none nem kerül felolvasásra

aria-hidden="true"

Show/hide details span

a: details billentyűzettel elérhető, kezelhető

Alapoldal

Fejlesztés

Class-ok hozzáadása

Példa – tooltip48

Példa – tooltip

Alapleírás

label title attribútum

belső link (privacy)

külső link (benefits)

Biztonságos CSS

font-family

cursor: help

display: block

49

<div class="question„><label for="email" title="To keep spammers out, we'll senda confirmation email to make sure this is a valid email address">Email Address</label> <input type="text" name="user" id="email" class="text" />

</div>

Tooltip50

Kétféle tartalom

label, title, fejlesztés

Privacy link: fontos, oldalon marad

Előnyök: kevésbé fontos, külön oldal, ajax

Tooltip

aria-role: tooltip

aria-hidden: true

body: aria-role: application

aria-describedby: tooltipID

Tabs51

Kétféle megoldás

Egymás utáni blokkok

Felsorolás + hivatkozott blokkok

Kompakt

Linkekkel ugrás

Könyvjelző

Rugalmasság az oldalkialakításban

ARIA

Application role

Tablist, tabpanel role

Labelledby: id

Billentyűzet

Back button support

Példa – Modális dialógusablak52

Példa – Modális dialógusablak53

Flash és a progresszív fejlesztés54

SWFObject

Statikus: graceful degradation

Dinamikus: progresszív enhancement

Flash és PE55

http://www.adobe.com/devnet/flashplayer/article

s/swfobject.html

http://www.adobe.com/devnet/flashplayer/article

s/alternative_content.html

http://www.arnimaack.com/blog/2010/09/progre

ssive-enhancement/

Mobilweb és a progresszív fejlesztés 56

http://jquerymobile.com/

http://www.slideshare.net/bryanrieger/rethinking-

the-mobile-web-by-yiibu

Összefoglalás57

A jövőben a változatosság nem csökkeni, hanem

nőni fog

Egy jövőbiztos megoldás: weboldalak progresszív

fejlesztése

Szemantikus HTML

CSS

JavaScript

(Flash)

Ez a meglévő tudás újraszervezése