Jakie są zalety korzystania tylko z języka JavaScript w porównaniu z używaniem tylko JQuery?
Mam ograniczone doświadczenie w kodowaniu JavaScript i JQuery. Dodałem bity i fragmenty każdej ze stron HTML, ale głównie kodowałem rzeczy po stronie serwera w innych językach. Zauważyłem, że chociaż teoretycznie możesz robić te same rzeczy przy użyciu jednego z dwóch podejść (i oczywiście możesz nawet pomieszać je w tym samym projekcie), wydaje się, że istnieje tendencja do korzystania z JQuery od samego początku bez względu na wymagania projektu.
Zastanawiam się więc, czy są jakieś punktualne korzyści z tego, że nie używam tylko JQuery, ale zamiast tego używam zwykłego, starego JavaScript?
Wiem, że to wygląda jak pytanie, ponieważ można powiedzieć, że „nie ma jednoznacznej odpowiedzi” lub „można to zawsze omawiać”, ale tak naprawdę liczę na punktualne odpowiedzi, takie jak „Możesz to zrobić w jedno podejście, a drugiego nie da się zrobić ”.
Zgodnie z komentarzem scrwtp, nie odnoszę się tylko do części dotyczącej obsługi DOM. Moje pytanie brzmi raczej: JQuery jest biblioteką. Dla Javascript. To, co wydaje mi się dziwne w tej bibliotece, w przeciwieństwie do innych bibliotek dla innych języków, to to, że w przypadku JQyery wydaje się, że została zaprojektowana tak, aby mogła z niej korzystać wyłącznie i nie musiała dotykać bezpośrednio Javascript. Jest to przeciwieństwo, powiedzmy, Hibernacji i SQL, gdzie chociaż biblioteka (lub raczej framework w tym przypadku, ale myślę, że analogia nadal ma zastosowanie) przejmuje wiele aspektów, nadal możesz używać SQL podczas korzystania z niego , przynajmniej w niektórych przypadkach z marginesami. Jednak w przypadku JQuery i JavaScript możesz robić wszystko, co robisz za pomocą Javascript, używając tylko JQuery (a przynajmniej tak mi się wydaje).
Zgodnie z komentarzem Stargazer712: tak, zgadzam się z tobą, pytanie brzmi, ponieważ określasz to jako „tylko kwestię tego, jak będziesz używać JavaScript”. Właśnie o to prosiłem, ale zrobiłem złe sformułowania. Oto kolejna analogia: Spring Expression Language. To biblioteka Java. Nie możesz używać go bez Javy, jest on oparty na Javie, a przez to wszystko, co nadal możesz używać Javy. Ale w praktyce to, co możesz zrobić, to dodać tę bibliotekę do projektu Java, a następnie napisać cały kod za pomocą języka wyrażeń Spring EL, co skutecznie sprawia, że Twój kod wcale nie przypomina Java, a nawet zmienia paradygmat (na przykład nie masz już silne wymuszanie typu podczas korzystania z tego). Chociaż rozumiem, że JQuery jest tylko biblioteką JS, wydaje mi się, że w praktyce ma taki sam efekt jak Spring EL w Javie, tzn. Możesz używać jego interfejsów API tylko w projekcie i unikać interfejsów API JavaScript. Zastanawiałem się, czy to dobrze zrobić, jakie mogą być pułapki itp.
(i tak, po przeczytaniu odpowiedzi wszystkich rozumiem, że:
za. moje pytanie jest do pewnego stopnia bezsensowne
b. nawet gdyby pytanie było całkowicie dokładne, odpowiedź brzmiałaby w zasadzie „nie, nie możesz cały czas używać tylko JQuery)
źródło
Odpowiedzi:
Po pierwsze - nie można używać tylko jQuery, wszystko, co robi jQuery, to dodać obiekt $ do globalnego zakresu, z kilkoma metodami. Nawet bardziej manipulacyjne biblioteki, takie jak prototyp, nie są alternatywą dla javascript, są paskiem narzędzi do rozwiązywania typowych problemów.
Główne zalety dodania jQuery do paska narzędzi to:
JavaScript nie jest już tylko językiem po stronie klienta, a ponieważ jQuery jest tak zależny od DOM, jest to straszny kandydat do przeniesienia się na serwer. Bardzo polecam poświęcenie czasu na zrozumienie, dlaczego używasz jQuery (zadanie tego pytania to świetny pierwszy krok!) I ocenę, kiedy jest to konieczne. jQuery może być niebezpieczny, kilka głównych zagrożeń to:
Ostatecznie jQuery to niezwykle przydatna i pomocna biblioteka, jeśli jest właściwie używana. Nie jest to jednak alternatywa dla javascript. Jest to biblioteka, podobnie jak zepto.js , YUI , Dojo , MooTools i Prototype - jedna z nich może być znacznie lepszym wyborem dla twojego obecnego projektu.
JavaScript jest niezrozumianym językiem i dopiero niedawno jest postrzegany przez większość ludzi jako coś więcej niż język skryptowy. Naprawdę polecam przeczytać więcej na ten temat, oto kilka dobrych miejsc na początek:
Edytuj 07/2014 - Zauważyłem, że ten post wciąż zyskuje na znaczeniu, więc dodałem kilka linków. Nie są one w określonej kolejności, ale powinny być pomocne.
Jestem pewien, że jest o wiele więcej wspaniałych zasobów, o których nie myślę i o których nie wiem, inni użytkownicy powinni odpowiedzieć na tę listę.
źródło
$.ajax
), która wyrzuca obiekty opakowania zestawy elementów dom, które mają na celu uczynienie metod DOM ogólnie znacznie mniejszymi PITA poprzez uczynienie ich bardziej zwięzłymi, posiadającymi metody automatyczne zapętlanie zestawów obiektów dom, gdy ma to sens, i udostępnianie wspólnego, przewidywalnego interfejsu API między przeglądarkami (co stanowi mniejszy problem IE <= 8).Są zalety, ale można dyskutować, czy naprawdę przewyższają wady.
Najważniejsze jest to, że oszczędzasz przepustowość i zyskujesz szybsze odpowiedzi. jQuery dodaje kolejne ~ 30kb do twojej odpowiedzi. W niektórych sieciach (i niektórych krajach) może to oznaczać kilka milisekund. Z drugiej strony możesz jednak łatwo ustawić buforowanie za pomocą swojego serwera internetowego (lub, jak powiedział Xion, użyj go ze strony Google, aby nie wpłynął na twój i nadal jest buforowany).
Drugą rzeczą jest to, że możesz potrzebować tylko bardzo prostych funkcji, a samo pobieranie i konfigurowanie jQuery może zająć więcej czasu niż zwykłe wdrożenie tego, czego potrzebujesz.
I na koniec, możesz chcieć stworzyć własną platformę, co jest w większości złym pomysłem, ale niektórzy ludzie mają swoje powody.
Jeśli jednak odrzucisz jQuery tylko dlatego, że jesteś zastraszany krzywą uczenia się, powinieneś ponownie rozważyć. Zwłaszcza, że to raczej delikatne.
źródło
O ile mi wiadomo, tak naprawdę istnieją tylko dwie zalety używania javascript waniliowego w porównaniu do biblioteki takiej jak JQuery , MooTools itp.
Warto wskazać, dlaczego chcesz korzystać z biblioteki javascript, dla której jest wiele:
Pracowałem w sklepie internetowym, który był nieugięty w używaniu javascript waniliowy, ponieważ jQuery był duży i przerażający. Ta decyzja, na którą głównie wpłynął samotny „programista javascript”, była źródłem wielu błędów przeglądarki i powolnego rozwoju, a próba dostania się do jego bazy kodu była porywającym doświadczeniem. Pisanie własnego frameworka może wydawać się dobrym pomysłem, ale jeśli chcesz zatrudnić nowych programistów, nie mogą oni szybko wskoczyć i pomóc. Następnie należy rozważyć kwestię współczynnika magistrali .
Jak powiedziałem, pracowałem tam ... gdzie indziej były zielone pastwiska. : ^)
źródło
Zdarza się, że dość mocno mieszam użycie obu. Największym powodem tego jest to, że w niektórych aplikacjach (na przykład rozszerzenia chrome) nie potrzebujesz obsługi wielu przeglądarek. Co oznacza, że mogę skorzystać z nowych osiągnięć, takich jak css3, które dzięki takim rzeczom, jak przejścia, mogą uprościć twój kod tonę niż użycie jquery.
Często też robię coś niestandardowego. Zupełnie jak inni mówili, że nie powinieneś wymyślać koła na nowo. Ale kiedy poprosiłeś o jakąś szaloną funkcjonalność, często łatwiej jest mi napisać ją samodzielnie, niż spróbować włamać się do wtyczki jquery, która jest blisko, ale nie idealnie.
Pracowałem również z programistami, którzy pracują wyłącznie z jquery. I muszę powiedzieć, że znacznie częściej kompromitowali funkcjonalność, jeśli nie mogliby znaleźć wtyczki jquery, która zrobiłaby to, co chcieli.
W pewnym momencie programowania zostaniesz poproszony o zrobienie czegoś, co nie jest spakowane w bibliotece. W tym momencie lepiej upewnij się, że rozumiesz, jak naprawdę działa język podstawowy.
Więc TLDC : Użyj obu, jesteś w niekorzystnej sytuacji, używając tylko wanilii i jesteś w niekorzystnej sytuacji, jeśli nie znasz wanilii wewnątrz i na zewnątrz i nalegasz, aby zawsze używać jquery.
źródło
document.querySelectorAll
za kulisami.Jedyną rzeczą, o której nie mogę się obejść bez JQuery, byłoby użycie wtyczek JQuery; nawet wtedy możesz napisać własną bibliotekę JS, która zapewni dokładnie to, czego potrzebuje wtyczka.
Pomyśl o tym w ten sposób: JQuery to biblioteka JavaScript typu open source napisana w języku Javascript; możesz spojrzeć na źródło, a tym samym nauczyć się robić wszystko, co robi.
Nie możesz używać JQuery bez zwykłego starego Javascript. Prawdopodobnie nie będziesz używać
document.getElementById
, ale nadal będziesz definiować funkcje i zmienne w standardowy sposób Javascript; możesz nawet napisać standardowąfor
pętlę.Główną zaletą korzystania z JQuery jest prawie taka sama jak każda inna biblioteka innej firmy w dowolnym języku: nie trzeba pisać tyle kodu, aby zaimplementować logikę specyficzną dla aplikacji.
Nie pozwól, aby rozmiar Cię odstraszył. Wersja CDN jest pobraniem ~ 33k, które zostanie zbuforowane przez przeglądarkę użytkownika po odwiedzeniu pierwszej strony.
źródło
Jeśli martwisz się wydajnością, powinieneś spróbować używać waniliowej js, gdy tylko jest to możliwe. Frameworki nie tylko zwiększają przepustowość, ale także przetwarzają. JQuery jest również kompatybilny z całkiem starymi przeglądarkami.
Jeśli pracujesz nad aplikacjami mobilnymi lub grami (lub obydwoma połączonymi), najpierw potrzebujesz wydajności i efektywnego zasobu.
jQuery i wtyczki mogą przyspieszyć twój rozwój, ale zwłaszcza jeśli polegasz na zewnętrznych wtyczkach jquery, powinieneś wiedzieć, co robią wewnątrz. Wiele z nich to złe przykłady jakości i wydajności kodu.
jQuery może być 2 do 10 razy wolniejszy niż natywny JavaScript. I może łatwo zachęcić programistów do niewłaściwego zaprojektowania interfejsu i zbyt dużego polegania na selektorach jQuery, które są znacznie wolniejsze niż natywne.
źródło