Java script vs jQuery ?

0

Mam do Was pytanie czy moge zaczac sie uczyc Od razu jQuery czy musze najpierw poznac js a dopiero potem jQuery ?

0

Zacznijmy od tego, że jQuery nie jest językiem programowania (co prawda, znam ludzi, którzy twierdzą inaczej, ale...).
Jeżeli chcesz cokolwiek logicznego w nim napisać, to znajomość JavaScriptu jest wymagana.
W końcu jQuery == JavaScript.

5

Żeby zrobić coś rozsądnego używając jQuery, musisz też znać w pewnym stopniu JavaScript. To proste: jQuery to tylko biblioteka. Zbiór funkcji, obiektów i wartości, napisany w JavaScripcie. Gdy korzystasz z jQuery, korzystasz z JavaScriptu. Odnoszenie się do jQuery polega zwykle na wywoływaniu jakichś funkcji z tejże biblioteki. Wiele funkcji jednak wymaga przekazania parametru: funkcji wywołania zwrotnego (callback). Tutaj już korzysta się przeważnie z konstrukcji JavaScript zwanej wyrażeniem funkcyjnym i jednocześnie funkcją anonimową. Bardzo często korzysta się przy okazji z własności języków funkcyjnych (w tym JavaScriptu) zwanej domknięciem.

Możesz to klepać intuicyjnie, kopiując, wklejając i modyfikując kod z przykładów jQuery. Ale, pisząc kod nieco bardziej skomplikowany niż tylko trywialny, po pewnym czasie trafisz na problemy.

Czemu licznik mi nie działa, gdy dodaję jakieś callbacki do kilku przycisków? (bo źle korzystasz z domknięcia -- nie rozumiesz, że istnieje tylko jedna kopia licznika na jedno wywołanie funkcji zewnętrznej) Czemu mój komponencik się psuje, gdy umieszczę takie dwa na stronie? (bo np. korzystasz ze zmiennych globalnych)
Czemu this mi czasem nie działa? (bo funkcje w JS wywołane same sobie tracą kontekst)
Czemu this.addClass("...") mi nie działa? (bo this wskazuje na prosty element DOM, a nie kolekcję jQuery)

Nie znając ni w ząb JS-a, trafisz w końcu na duże problemy. Będziesz siedział na forach i zadawał mnóstwo pytań. Nie będziesz rozumiał odpowiedzi, bo przeważnie będą lakoniczne, a Ty się będziesz cieszył, że ktoś rozwiązał Twój problem. Nie nauczysz się niczego i gdy tylko będziesz miał "taki sam, tylko że inny" problem -- znowu będziesz w kropce.

Z drugiej strony: skoro zadajesz takie pytanie, prawdopodobnie nie nauczysz się nigdy zbyt dobrze JS-a ;). Mało osób dobrze zna ten język. Ale wiele osób używa jQuery całkiem skutecznie. Musisz więc znać przynajmniej podstawy JS-a, albo -- lepiej -- znać go chociaż na średnim poziomie. Możesz poznawać język równolegle z jQuery. Polecam jednak najpierw poszperać trochę o JS-ie. Chociaż się w niego trochę wprowadzić.

Chyba że chcesz dołączyć do tych, co sądzą, że "js jest głupi", bo... nigdy się go nawet nie nauczyli. A to niewielki, stosunkowo prosty język (porównaj z Javą czy C#, o C++ nie wspominając), tyle że jest inny niż inne (słaba typizacja, dynamika, funkcyjność, dziedziczenie prototypowe).

Nie musisz się za mocno wgłębiać z kolei w DOM, tj. funkcje takie jak document.getElementById. DOM to interfejs, który jest widoczny w przeglądarkowym JavaScripcie i BYŁ tam często używany. Natomiast jest to słaby, niewygodny interfejs (zaprojektowany całkowicie niezależnie od JS-a, więc JS tu nie ma winy!). jQuery implementuje DOM i wystawia go nam w znacznie przyjemniejszej, strawniejszej postaci. Więc zamiast DOM lepiej używać jQuery.

0

Nie no dlaczego mam sie dobrze go nie nauczyc?Pytalem tylko czy moge to przeskoczyc czy nie i tyle,znam c# wiec js tez nie bedzie jakims problemem a spytalem bardziej z ciekawosci.

2
newbie napisał(a)

dlaczego mam sie dobrze go nie nauczyc?

Bo tak wynika z uproszczonego modelu osoby piszącej w JavaScripcie, jaki to model stworzyłem w swojej głowie. To może być narzędzie niesprawiedliwe, ale na pewno jest proste i -- jak na razie -- uważam, że skuteczne. Bazuje na moim doświadczeniu i zgrubnym rachunku prawdopodobieństwa.

Jaki procent ludzi, którzy piszą w JavaScripcie, zna ten język dobrze?

JS jest bardzo popularny. Pełno script-kiddies w nim "pisze". Mamy wielu tzw. "programistów jQuery", cokolwiek to nie znaczy. Wreszcie, spora liczba osób pisała normalnie w innych językach -- np. w C# -- a w JS piszą dodatkowo.

Niewielu z nich osób solidnie ogarnia choćby jego fundamenty.

Stawiałbym na coś w okolicach 5%.

Czemu tak mała liczba, skoro w powyższych rozważaniach mało jest konkretów, a dużo zaledwie subiektywnych szacunków?

Regularnie prowadzę rozmowy rekrutacyjne na front-endowców. Zbieram naprawdę dobry (na skalę ogólnopolską) team, bo i moja firma -- choć nie super sławna z dobrego front-endu -- zapewnia odpowiednie warunki. Taki zwykły front-endowiec ma poważne luki jeśli chodzi o JavaScript. Nawet ludzie dobrzy z HTML-a i CSS, mający tło programistyczne w licznych językach programowania i pracujący wcześniej jako "programiści JavaScript" mają potężne luki. W podstawach. Więcej. Przez moją firmę, lub chociaż rozmowy kwalifikacyjne, przewijają się i twórcy "słynnych" blogów front-endowych. Większość z nich, może nawet wszyscy, są przynajmniej "dobrzy" jeśli chodzi o HTML i CSS. Niektórzy wiedzą o co chodzi nawet w przypadku JS. Ale trafiają się przypadki, że ktoś prowadzi takiego bloga, "programistą JavaScript" był (przynajmniej w CV), radzi sobie naprawdę nieźle z tego JavaScriptu w standardowych przypadkach, które widział gdzieś na necie, i w ogóle jest bystrym kolesiem, a w swoim kodzie wstawia "use strict", ale... Jednocześnie nie rozumie jak działają domknięcia (wspomniany problem: ile jest kopii zmiennych na jedno wywołanie funkcji zewnętrznej?). Albo: nie rozumie, jak działa dziedziczenie prototypowe (ile jest kopii "odziedziczonych" z prototypu pól? jaki udział mają prototypy przy modyfikacji pól?). I to ów "programista JavaScript" sam twierdzi, że tego nie rozumie -- nie że stres, czy coś.

Tymczasem funkcyjność czy dziedziczenie prototypowe to fundamenty języka.

Smutne, ale jednocześnie inspirujące jest, że poziom z JavaScriptu jest tak niski. Naprawdę, jest cholernie niski. Co byś powiedział o programiście C#, który nie wie, czy w momencie gdy napisze w nowym pliku słowo "class" wraz zresztą deklaracji klasy, to czy powstaje już jakiś obiekt (instancja tej klasy) czy nie? Powiedziałbyś, że jest dupa wołowa jeśli chodzi o klasyczne dziedziczenie w programowaniu obiektowym i że -- przez rozszerzenie -- jest dupa wołowa z C#.

A w JS-ie takich jest pełno. Zdarzają się nawet wśród tych, którzy niby całkiem nieźle (jak na JS-owe standardy) w tym języku piszą i którzy nieraz uchodzą za jakichś "guru"...

Dlatego mogę pojasnowidzić i strzelić, że jakakolwiek napotkana osoba, która zamierza się zabrać za JavaScript, skończy dokładnie tak samo jak 95% innych osób. Nie będąc dobrymi programistami.

Nie podoba Ci się ta wizja? Urąga Twojej osobie?

To bardzo się cieszę i z całego serca Ci życzę, żebyś należał do wyjątków :).

JavaScript zyskuje na popularności. Przyciąga -- również dzięki NodeJS, ale nie tylko -- prawdziwych programistów z innych języków. To dobry czas dla języka JavaScript.

Jednocześnie... dobrych książek o JS było malutko. Bzdur w necie -- pełno. Teraz to się zmienia: powstaje coraz więcej dobrych książek o JS. Poziom zrozumienia języka rośnie, ale wciąż -- uśredniając -- jest naprawdę niski w porównaniu do Javy czy C#. Stosunkowo łatwo jest więc się nauczyć rzeczy w zasadzie podstawowych i... zabłysnąć. To dobry czas dla programistów JavaScript.

0

A co myslisz o tym kursie ?http://www.poradnik-webmastera.com/kursy/javascript

0

Myślę, że za wiele Cię nie nauczy poza podstawami, jeśli pochodzisz z innego języka programowania ;).

Kurs ten opisuje akurat to, co w JS-ie jest niemal takie, jak w C czy Javie. Zupełnie pomija te fundamentalne, charakterystyczne dla JS-a rzeczy, o których wspomniałem wyżej. Sekcje poświęcone funkcjom czy obiektom są bardzo podstawowe.

Dział "Funkcje" jest mega podstawowy i nie wspomina ani o domknięciach, ani o funkcjach anonimowych. Ani o różnicy pomiędzy instrukcją funkcji a wyrażeniem funkcji (nazwanym lub nie). A z jQuery korzysta się z nich bardzo często.

Dział o obiektach bredzi coś o klasach, których w JavaScripcie... nie ma. Zamiast dziedziczenia klasycznego, mamy w JS dziedziczenie prototypowe. Opisano je tutaj bardzo skromnie.

Dział o operatorach logicznych zawiera błędy rzeczowe. Operatory && oraz || nie zwracają, z definicji, true albo false -- mogą zwrócić te wartości, ale mogą i zupełnie inne.

Dział "Zdarzenia i ich obsługa" zawiera m.in. antywzorzec, czyli setTimeout("alert('cośtam')", 123). Takie rzeczy dosłownie daje się kandydatom na programistów JS po to, żeby mogli na nie ponarzekać i powiedzieć, że są be.

Za podobny antywzorzec można uznać stosowanie pętli for..in dla tablic, co jest wspomniane w rozdziale o pętlach.

Ot, typowy kurs JS. Może nawet lepszy niż typowy, bo wydaje mi się, że tutaj autor się przynajmniej starał.

Od razu dodam, że nie, nie znam dobrego kursu JS dla początkujących. Kursy te mnie nie interesują już od jakiegoś czasu. Czytam se specyfikację języka, ale jej nie polecam ani początkującym, ani nawet tym, co to niedawno stali się średnio-zaawansowani.

Po przerobieniu jakiegoś podstawowego kursu polecić mogę książkę "JavaScript. Mocne strony" (Douglas Crockford). Jest bardzo zwięzła i nasycona informacjami, więc należy ją czytać uważnie. Co jest tym trudniejsze, że w książce nie ma klasycznych/praktycznych, przeglądarkowych przykładów.

0

IMO jQuery można z powodzeniem uczyć się nie znając JS. Na mojej uczelni specjalizacji też zaczęto od HTML CSS i jQuery - bez żadnego wprowadzenia do JS co mi osobiście wydawało się pomyłką, ale bardzo szybko wszyscy zaczęli "łapać" idee jQuery i generalnie nie przeszkadzało nikomu to, że nie znają podstaw JS.
W sumie to i dobrze bo jQuery to w zasadzie nawet inny paradygmat programowania - deklaratywny. Jakoś SQL'a można uczyć się niezależnie od np. php choć z samego SQL'a nikt nie korzysta jako interfejs. jQuery pomaga jedynie niektóre rzeczy skrócić w małe zapytanie i ma określone pole zastosowań czyli poruszanie się po DOM wraz z jego modyfikacjami, dodawanie animacji i zmiana stylów nie przejmując się optymalizacją - ma to być zrobione szybko i by był efekt.
Jeśli zaczniesz od jQuery a później JS to nic na tym nie stracisz a będziesz miał już możliwość używania "wodotrysków" przy bardzo małym nakładzie sił później dopełnisz to możliwościami JS. Polecam kurs http://www.w3schools.com/jquery/default.asp jako szybki start z jQuery.

0

Porównujesz JavaScript i JQuery z PHP i SQL?

0

Napisałem, że jQuery nie zastępuje JS napisałem jedynie, że kolejność nauki nie ma znaczenia. A porównania do php i SQL faktycznie nieco nietrafione, ale chciałem tylko pokazać, że znajomość PHP nie pomaga w nauce SQL bo składnia i sposób działania SQL zmienia się o 180 st., do nauki jQuery wystarczą podstawy jakiegoś języka klasycznego typu instrukcja warunkowa, pętla i to wszystko, może jeszcze callback typowo z JS i już w pełni można wykorzystać możliwości jQuery.

1 użytkowników online, w tym zalogowanych: 0, gości: 1