Zanim napiszesz kolejną linijkę JavaScript

Nie próbuj nawet wykrywać przeglądarek. Zamiast tego wykrywaj obecność konkretnych funkcji. Dlaczego? Pełna lista przeglądarek byłaby kilkanaście razy dłuższa niż cały twój skrypt i przestanie być aktualna w przeciągu kilku dni. Jeśli obetniesz ją do kilku najpopularniejszych, to odcinasz się od tych, które działałyby poprawnie, ale nigdy o nich nie słyszałeś. Sieć polega na zgodności.

Poznaj drzewo DOM i naucz się z niego korzystać. document.write() porównać można do malowania kodu farbą z liści. Na ścianach jaskiń.

Zanim skopiujesz i wkleisz jakiś kawałek kodu w drugie miejsce w skrypcie, zastanów się dobrze, co robisz. Skoro wystarczy skopiowanie i wklejenie, to prawdopodobnie łamiesz właśnie zasadę wydzielania redundantnego kodu do osobnych funkcji. Tyczy się to każdego języka programowania.

Zanim napiszesz 20 linii kodu, które podłączą obsługę onclick do jednego jedynego elementu na stronie, zastanów się, czy nie uprawiasz właśnie sztuki dla sztuki. Pisząc proste onclick="return foo();" oszczędzisz sobie kłopotu z propagacją zdarzeń, a mi oszczędzisz kilobajta kodu do pobrania. Jeśli chcesz to zrobić dobrze, użyj biblioteki takiej jak Behaviour.

Upraszczaj kod — oszczędzisz sobie pracy i zwiększysz jego czytelność. Polecam biblioteki wrapujące istniejące funkcje i zapewniające komfort pracy w każdej przeglądarce. Sprawdź Prototype - jego używanie jest naprawdę proste.

Wyłączaj wspólny i często używany kod do zewnętrznych plików. Nie każ wszystkim pobierać go za każdym razem.

Technorati Tags: , , , ,

12 » odpowiedzi dla wpisu “Zanim napiszesz kolejną linijkę JavaScript”


  1. 1 mroq

    Nie próbuj nawet wykrywać przeglądarek. Zamiast tego wykrywaj obecnośc konkretnych funkcji.

    Pewnie mam złe nawyki, ale czy nie lepiej wykrywać obiekty?

  2. 2 bellois

    Ciekawe. Kiedyś trochę interesowałem się JavaScriptem. Co dziś warto przeczytać? Gdzie zajrzeć? Materiału jest dużo i trudno oddzielić wartościowy od bezwartościowego? Co byś polecił?

  3. 3 Patrys

    mroq:

    Na to samo wychodzi - czasem potrzebna ci funkcja, czasem obiekt, czasem metoda. Nigdy konkretna przeglądarka.

    bellois:

    Poleciłbym DOM Scripting.

  4. 4 bellois

    Hmmm… a z materiałów darmowych? :-)

  5. 5 Riddle

    Tylko blogi.

  6. 6 bellois

    Riddle: masz na myśli jakieś konkretne?

  7. 7 marcoos

    Behaviour - genialne. :)

  8. 8 blue

    Coś mi tu nie pasuje:

    Pisząc proste onclick=”return foo();” oszczędzisz sobie kłopotu z propagacją zdarzeń, a mi oszczędzisz kilobajta kodu do pobrania.

    Jeśli chcesz to zrobić dobrze, użyj biblioteki takiej jak Behaviour.

    Pomijając fakt, iż uważam, że korzystanie z bibliotek, to w przypadku js jakaś pomyłka (cenny transfer marnowany na kod, z którego, w najbardziej optymalnym wypadku, potrzebna Ci będzie połowa), przeczysz sam sobie. To w końcu oszczędność kb, czy obszerne bilbioteki?

  9. 9 blue

    Przepraszam, ale coś mi nie wyszło przy pisaniu komentarza :| Ostatni akapit nie powinien być cytatem.

  10. 10 jpc

    copy and paste to często najlepsze reuse jakie można sobie wyobrazić…

    Często nie warto się męczyć nad tworzeniem wyższej abstrakcji, bo to strata czasu, a i tak nie mamy szans, źeby dobrze uchwycić sedno problemu póki nie napiszemy podobnej funkcji 4 raz. A wtedy wyodrębnienie tego kodu stanie się oczywistym rozwiązaniem bez potrzeby nadmiernej ewangelizacji. ;]

  11. 11 Patrys

    blue:

    Ja się zajmuję budowaniem nie tylko stron, ale i aplikacji internetowych. W przypadku tych ostatnich spora część znajduje się w warstwie JS, więc nie ma strachu, że połowa dołączonego kodu jest bezużyteczna.

    Co do oszczędzania transferu — przeleć się po stronach. Często na dole dokumentu jest wynalazek w stylu:

    window.onload = [...]

    Dokładnie o to mi chodziło w pierszym cytowanym punkcie.

  12. 12 Aldona

    Czesc wszystkim!
    Chce sie nauczyc porzadnie JavaScript, przegladnelam kilka ksiazek, ale nie wiem, ktora jest najlepsza, moglibyscie cos zarekomendowac. Z matematyka nie mam klopotow, ale JavaScript nie znam prawie wcale.
    Dzieki!

Skomentuj wpis