Front-end development, a sprawa polska

Ostatnio spędzam sporo czasu oglądając sobie różne serwisy różnych profesjonalnych przysłowiową „pełną gębą” agencji internetowych z wypasionym designem i dużymi korporacjami w portfolio klientów. Nie, żebym szukał pracy, ale czasem po prostu lubię podpatrzeć innych, żeby zobaczyć co mogę poprawić w swojej pracy.

Przeglądam więc czasem fora Goldenline i Profeo, czytam wątki tworzone i rozwijane przez ludzi o tytułach „front-end developer”, gdzie radzą, prawią i mądrzą się w sprawach standardów, semantyki HTML’a i tym podobnych spraw. Potem mam w zwyczaju oglądać serwisy firm oraz klientów ludzi światłych w temacie… i tu niestety zaczyna się zgroza. O ile na strony zbudowane na table-based layoutach już raczej się nie trafia (chociaż i takie kwiatki widziałem), strony te cierpią na dwa podstawowe problemy.

Divitis

Znakomita większość stron agencji, które odwiedziłem do tej pory, cierpi na zaawansowane stadium tego, co zachodni front-end developerzy nazywają divitis. Divitis objawia się w następujący sposób — webdeveloper, który ją przygotowywał, wiedział jedynie, że tabelki są „be”, a divy są „cacy”. Niestety, o takim zagadnieniu jak dostępność serwisu, czytelność w urządzeniach mobilnych z wyłączonymi arkuszami stylów oraz semantyka samego HTML’a już nikt mu nie wspomniał i efekt jest prosty — strona składa się wyłącznie z elementów div. Gdy zwróci się takiemu developerowi uwagę, nie będzie widział problemu. Co zrobić wówczas? Uświadamiamy takiego człowieka, że HTML nie składa się wyłącznie z elementów div, a oraz span , natomiast W3C wymyśliło kilka fajnych tagów, aby ustrukturyzować HTML m.in. dla przeglądarek nie obsługujących styli czy chociażby crawlerów wyszukiwarek i najprostszym sposobem na poprawienie wyszukiwalności strony jest nauczyć się tych tagów używać. Rekordziści rzekomo zatrudniający etatowych front-end developerów nie mieli ani jednego taga innego niż div użytego na stronie — wielopoziomowa nawigacja potrafiła sprowadzić się do ładnie ostylowanych linków upchniętych pojedynczo w divy, opakowane w… diva z id="menu" . Owszem, walidowało się, jako XHTML 1.0 Strict nawet, ale co z tego, skoro po wyłączeniu styli nawet nie muszę chyba wspominać jak wyglądało.

Oczywiście, są miejsca, gdzie przesadne strukturyzowanie HTMLa oraz jego semantyka nie mają specjalnego znaczenia — są to m.in. aplikacje internetowe mające „emulować” aplikacje desktopowe. Zwykle z powodu wyskakujących Javascriptowych okienek modalnych, czy innych tricków strona bez styli i JavaScriptu nie miała by sensu istnienia, ale w przypadku strony głównej agencji, która chwali się tworzeniem „użytecznych, dostępnych i zgodnych ze standardami serwisów internetowych”, warto zwrócić na takie kwiatki uwagę.

Zainteresowanych odsyłam do artykułów zewnętrznych:

Bezsensowny Javascript

Kolejnym podstawowym problemem spotykanym w tego typu serwisach jest nagminne bezsensowne użycie Javascriptu, w tym braku separacji markupu HTML od jego zachowania oprogramowanego Javascriptem. Cóż z tego, że używasz Prototype, Mootools, czy jQuery, skoro nie rozumiesz ich idei? Biblioteki te powstały między innymi, aby wspomagać pisanie Javascriptu, który jest odseparowany od markupu, czyli tzw. „unobtrusive Javascript”. A tymczasem na wielu stronach agencji chwalących się profesjonalnym podejściem do tematu możemy zobaczyć takie kwiatki jak onclicki w markupie, czy linki prowadzące donikąd.

Czy Ty, drogi front-end developerze znanej agencji, zastanowiłeś się kiedyś co dzieje się ze spiderem przeszukującym serwis Twojego klienta, kiedy natrafia on na link z href="#" i onclick="openModal(test.html)"

Nie? To ja Ci powiem — próbuje podążać za wartością href i trafia donikąd, a więc nie indeksuje wyskakującego modala. To samo stanie się, gdy osoba niewidoma lub niedowidząca trafi na Twoją stronę używając screen readera — „kliknie” w otwórz okno i nic się nie stanie. Jeśli uważasz, że tworzysz dostępne i dobrze wyszukujące się serwisy, napisz link tak, aby prowadził on gdzieś nawet gdy nie ma Javascriptu. Jeśli pop-up, który ma wyskoczyć jest zaszyty gdzieś w kodzie, tylko ma ustawione display:none, ustaw mu ID i kieruj linkiem pod #ID. Jeśli otwiera się zewnętrzna strona, poprowadź href do tej strony, a do Javascriptu obsługującego event click dodaj return false;, aby przeglądarki obsługujące JS nie podążyły za linkiem, a jedynie otwarły go w modalu — dzięki temu wilk będzie syty i owca cała. Gdzie możliwe, odseparuj Javascript od markupu, wsadzając go w osobne pliki, podłączające się do strony za pomocą uchwytów (event handlers) — oszczędzisz pracy przeglądarkom bez Javascriptu, a i kod będzie łatwiejszy w zarządzaniu. Zainteresowany? Odsyłam więc, tak jak poprzednio, do kilku zewnętrznych artykułów.

Komentarze

Zachód opisuje divitis, więc nie jest to do końca sprawa polska, chociaż wiadomo, że nasz poziom od tego zachodniego trochę odstaje. Ja miałem to szczęście, że jestem na tyle młody, że zacząłem już u schyłku ery tabelek i innego typu śmieci a 'wychowałem się' w znacznej mierze na blogu Riddla, który dał mi świadomość semantyki.

Mam nadzieję, że za niedługo będę mógł się nie przejmować szczególnie sprawą polską i zacząć działać poza granicami. :)

# neaf, 11 lipca 2008 o 12:31

No dobra. Ja jestem bez pracy od dłuższego czasu, a o sprawach o których mówisz mam pojęcie. To dlaczego pracę dostają ci, którzy nie bardzo wiedzą co robią, a ja nie? Foch! ;)

# zx, 11 lipca 2008 o 12:58

Jasne, masz rację i w większości się z tobą zgadzam. Ale dlaczego markup tutaj jest poprzecinany spanami, na dole znalazłem <br/> z klasą, który robi za clearfix (tego się już od dawna nie stosuje), statystyki wrzucone bezpośrednio na końcu strony, a kontent siedzi w aż trzech pojemnikach następujących po sobie…

# Wasacz, 11 lipca 2008 o 13:08

@Wasacz - Nie wiem czy czasami lepiej wstawić pusty element z clear niż wysadzać cały markup klasami .clearfix gdy czyszczone elementy zazwyczaj mają coś z klasą bądź identyfikatorem, czemu możesz nadać clear:both;

# neaf, 11 lipca 2008 o 13:11

@neaf: Ja nie widzę sensu wstawiania tych elementów w kodzie w ogóle. Od tego jest GC.

# Wasacz, 11 lipca 2008 o 13:12

@Wasacz: GC?

# neaf, 11 lipca 2008 o 13:13

Generowana zawartość.

# Wasacz, 11 lipca 2008 o 13:14

@Wasacz: Dodawanie kilku właściwości do :after każdego elemntu, który wymaga cleara do tego z hackami na IE nie jest zbyt fajne. — jeśli Cię dobrze zrozumiałem.

# neaf, 11 lipca 2008 o 13:15

Przecież reguły można grupować. IE ma swoje prawa i nie zawsze potrzebuje takiego hacka, czasem wystarczy nawet layout. A umieszczanie tego w HTML jest złe. Ale czy to teraz ma aż takie znaczenie?

# Wasacz, 11 lipca 2008 o 13:19

@Wasacz: clearfix użyłem, ponieważ GC kompletnie nie działa w starszych przeglądarkach, a takich czytelników też mam. <code>span.caps</code> dogenerowuje mi Jogger, i nawet jak je usunę, to dogenerowuje z powrotem. Jeśli znasz na to fixa, chętnie poznam.

# Mariusz, 11 lipca 2008 o 13:21

@Wasacz: Po prostu jakiś tydzień temu w projekcie zauważyłem, że nagle IE7 potrzebuję osobnego stylu dla clearfixa a przypisywałem :after oraz height: 1% dla każego elementu poprzez mixin sass. Musiałem wszystkie elementy z clearfixem wyciągać do osobnego pliku by zrobić raz dla wszystkich przeglądarek bez IE7 i dla IE7.

# neaf, 11 lipca 2008 o 13:23

@zx: na Twoje pytanie odpowiedź jest prosta - nasz rynek jest na razie raczkujący, do tego mocno "zepsuty" ludźmi, którzy robią layouty w kradzionym ImageReady za pomocą slices za 100PLN. Na szczęście agencji, które doceniają _dobry_ front-end development pojawia się na rynku coraz więcej.

# Mariusz, 11 lipca 2008 o 13:23

@Mariusz: bardziej mi chodziło o span z klasą „code”. Co do tego „caps”, to wyłącz sobie sprzątanie kodu w panelu: <https://login.jogger.pl/account/settings/entries/>, opcja „Automatycznie poprawiaj błędy HTML”.

GC można emulować w IE, a clearfix nie zawsze jest konieczny w IE…

PS: Dodaj jakiś margines u dołu strony, przycisk „Go” dotyka u mnie paska stanu.

# Wasacz, 11 lipca 2008 o 13:24

@Wasacz: span.code to zaszłość, poprawiłem na bieżąco. Emulowanie GC nie jest najlepszym możliwym rozwiązaniem, dyskusyjne jest też, czy jest lepszy od clearfixa czy nie. Pomyślę, porównam, poczytam, zobaczę.

# Mariusz, 11 lipca 2008 o 13:29

Jakoś tak jest z tymi agencjami. Jeszcze niedawno szukając pracy najpierw czytałem opisy na stronach o tym jak nowoczesne i zgodne ze standardami strony robią, a potem zaglądałem w kod i ręce opadały. Przejrzałem co najmniej kilkanaście stron agencji w mojej okolicy i nie znalazłem żadnej, której kod naprawdę spełniałby moje oczekiwania. Dlatego gdybym nie zaczął traktować tego trochę luźniej, do teraz byłbym bezrobotny. Inna sprawa, że od początku pracy w takiej agencji, można pisać kod po swojemu i podnosić jej poziom. ;)

# art.stk, 11 lipca 2008 o 15:38

Albo założyć własną agencję. :)

# neaf, 11 lipca 2008 o 15:39

A to overflow: hidden nie wystarcza:>?

# teamon, 11 lipca 2008 o 15:43

W jakiej kwestii?

# neaf, 11 lipca 2008 o 15:43

teamon: Marginesy się zapadają.

# Wasacz, 11 lipca 2008 o 15:44

Ja jakos nigdy nie mialem z tym problemu ;)

# Teamon, 11 lipca 2008 o 15:44

Do formatowania komentarzy można używać Textile Lite (HTML nie działa).

Komentarze obraźliwe, wulgarne czy nie na temat, a także robienie z komentarzy czata będzie sukcesywnie moderowane.

Dodaj komentarz