Logo

Blog o JavaScript, jQuery, HTML5, CSS3 i 4. Porady jak pisać dobrej jakości kod, tutoriale, nowości.

Dlaczego jQuery to zło?

Odkąd jQuery się pojawiło, zmieniło się podejście do JavaScriptu. Można powiedzieć, że zrewolucjonizowało to podejście do JS. Głównie przez działające pod wszystkimi przeglądarkami efekty, manipulację DOM czy AJAX. To jest dobre. Sam korzystam z jQuery, ale trzeba powiedzieć to wprost - jQuery to zło.

Może być trochę kontrowersyjnie. Może będzie z tego jakaś ciekawa dyskusja. Nie chcę też potępiać jQuery, bo to fajne narzędzie i ułatwia trochę dodawanie efektów na stronę. Jeżeli ktoś chce być bardziej PRO, to musi wiedzieć, że na jQuery świat się nie kończy.

Dlaczego jest złe?

Wiem, że dobry programista to leniwy programista. Ale bez przesady. Jeżeli ktoś podpina jQuery do strony tylko po to, aby zrobić kilka rzeczy po kliknięciu, to chyba jest to przerost formy nad treścią. To samo przecież dzieje się, gdy chcemy pobrać jakiś konkretny element ze strony (bez względu czy po ID czy po klasie).

Na prawdę trzeba zaciągać kilkadziesiąt KB, by zrobić coś takiego:

var el = document.getElementById('unikalny_element');

Nadać temu jakiś styl, zmienić klasę czy przypisać zdarzenie po kliknięciu?

el.onclick = function() {
   // tutaj cała magia po kliknięciu
}

Kolejna rzecz to upośledzenie programisty - o ile można tak kogoś nazwać, który nie wie co się dzieje w tle. Skoro działa, to działa - po co zagłębiać się w szczegóły? Po co wiedzieć które "zapytania" do elementu DOM są bardziej wydajne a które nie? Ważne, że podaję "łańcuch" i zwraca mi to elementy (lub element) które chcę dostać. Analizował ktoś ko źródłowy jQuery? Przecież to istna kopalnia wiedzy - nic tylko siedzieć, analizować i się uczyć.

Co więcej, dzisiaj dla niektórych osób jQuery = JavaScript (jest tożsame). Żeby było śmieszniej, słyszałem już takie opowieści z rozmów wstępnych na stanowisko webdevelopera czy programisty JavaScript gdzie na pytanie: "czy znasz javascript?" lub "co umiesz z JavaScript?" pada odpowiedź (z błyskiem w oku): "tak, jQuery" :).

Autor wpisu

Piotr cichosz (shpyo) — Front-end developer Twórca kilku serwisów internetowych oraz autor kilku blogów. Pasjonat nowych, otwartych technologii.

Komentarze

Gavatar procek

20.06.2011 procek

Warto zauważyć że tak proste rzeczy jak wybór elementu można również w jQuery skopać. Przypuśćmy, że mamy znaleźć nagłówki w treści strony:
$('#content > h1').xxxx();

Ale jak się ktoś rozmarzy to może i zrobić coś takiego:

$('body #container h1').xxxx(); -> nie trzeba chyba tłumaczyć, że takie wskazanie ma skutki uboczne i powoduje też narzuty obliczeniowe, bo JS będzie szukał nagłówków we wszystkich dzieciach containera.

Gavatar Kamil

20.06.2011 Kamil

Jeśli chodzi o zdarzenia w JavaScript to czasem trzeba się trochę bardziej namęczyć ;) zwłaszcza, jeśli chcemy też dawać wsparcie dla IE. Świetny artykuł o zdarzeniach: http://webhelp.pl/artykuly/obsluga-zdarzen-w-przegladarkach/

jQuery owszem, nie zawsze warto używać, zwłaszcza jeśli mamy do czynienia z małymi aplikacjami. Wtedy warto zwrócić uwagę na mini-frameworki: http://microjs.com/

Na pewno jednak jQuery nie jestem złem, ale wydaje mi się, że tytuł miał po prostu wzbudzać kontrowersje ;)

Gavatar qfel13

21.06.2011 qfel13

Znalazłem literowkę:
"ktoś ko źródłowy" brakuje "d", powinno być "kod źródłowy"

Generalnie sie zgadzam z treścią, ludzie zaczynaja popadać w skrajności i do wszystkiego używają jQuery, chociaż czasami jest zupełnie nie potrzebne.
Miejmy nadzieję, że niedlugo adopcja standardów będzie tak duża, że jQuery przestanie być potrzebne

Gavatar Ender

22.06.2011 Ender

jQuery nie jest złem, do niektórych ( http://blog.end3r.com/128/ ) projektów pasuje idealnie ;P
Mimo wszystko lepiej nauczyć się najpierw czystego Javascriptu, a później bawić bibliotekami, niż odwrotnie. Jak to ktoś napisał, jQuery ma niski próg wejścia i bardzo łatwo można się go nauczyć, a później mieć błędne przeświadczenie, że jest się programistą Javascript.

Gavatar Krzysztof Szumny

17.02.2014 Krzysztof Szumny

Owszem.. na jQuery świat się nie kończy, ale dzięki takim własnie bibliotekom, dla wielu początkujących programistów świat programowania się otworzył. Bilans plusów dodatnich i ujemnych wypada chyba jednak na plus dla jQuery.

Inna sprawa jest taka, że dobry programista prędzej czy później zawsze schodzi do poziomu biblioteki, albo sam stwierdza, że nie warto z niej korzystać. Inna sprawa jest taka, że gdyby nie tyle różnic w użyciu JS w różnych przeglądarkach, to jQuery tak szybko popularności by wcale nie zdobyło. Potem na StackOverflow pyta jakiś świeży użytkownik jak zrobić coś takiego, zapomni wspomnieć o jaką przeglądarkę chodzi.. to ktoś ma wybór, albo dopytać i napisać konkretnie, albo napisać 3 wersje odpowiedzi, albo bez dodatkowego pytania.. napisać jedną odpowiedź jak to zrobić w jquery.

jQuery jest promowane m.in. przez tych programistów, którym nie chcę się tłumaczyć, jak to zrobić w tradycyjny sposób ;)

Gavatar Huncwot

17.02.2014 Huncwot

To wszystkie argumenty przeciw jQuery? Czyli podsumujmy: używając jQuery pobierasz kilkadziesiąt kb więcej i jesteś mniej "pro";] To może ja wymienię zalety: trzymanie zgodności między przeglądarkami, skróty, wygoda, tysiące gotowych do użycia wtyczek, łatwość użycia mechanizmów defer/promise jQ, łatwość manipulowania elementami i masa innych rzeczy. Widzę, że artykuł jest dość przestarzały, może autor zdążył się już przekonać. Dziś nikt (no chyba że w firmach które robią strony za 500zł) już nie dokleja jquery jako dodatkowy request tylko korzysta się z assetica lub grunta+bowera. Tytuł artykułu krzkliwy, ale argumentacja cienka:)

Dodaj komentarz