Biorąc pod uwagę, o ile prostsze jest tworzenie jQuery, w porównaniu do natywnego JavaScript, co sprawia, że ludzie całkowicie rezygnują z bibliotek takich jak jQuery?
Czy to dlatego, że jQuery ma ograniczenia lub jest wolny? Chodzi mi o to, że jeśli jQuery jest tak łatwe w porównaniu do natywnego języka javascript, to z jakich powodów ludzie nadal muszą używać czystego języka javascript?
XMLHttpRequest
vsActiveXObject
, lubaddEventListener
vs.attachEvent
, lubcss selectors
vsxpath selectors
vsno selector support
itd.). W najnowszych przeglądarkach większość z tych problemów nie powoduje istnieją, ponieważ przestrzegają tych samych standardów.Odpowiedzi:
Porozmawiajmy o samochodach.
Och, czekaj, już to zrobiliśmy - pamiętasz ten czas, kiedy się spotkaliśmy? Rozmawialiśmy o samochodach. W rzeczywistości wydawałeś się być ekspertem od samochodów. Udało ci się szczegółowo wyjaśnić, co jest dobre, złe i ekscytujące w ostatnim wyścigu Formuły 1. Na pamięć znałeś wszystkie modele Lamborghini, w tym ich cenę i dostępność. Miałeś nawet myśli o zakupie własnego Ferrari 599 GTB Fiorano i oszczędzałeś na to (założę się, że kolacja ze stekiem niewiele pomogła).
Wyjaśniając usterki Toyoty wspaniałym, podekscytowanym głosem, nagle zeskoczyłeś z krzesła i krzyknąłeś w powietrze, machając pięściami: „Cholera, jestem świetnym ekspertem we wszystkich sprawach związanych z samochodami!” Będę mechanikiem samochodowym! ”
I tak poszedłeś. Miałeś wywiad, szef Boss był pod takim samym wrażeniem jak ja twoją wiedzą i zostałeś zatrudniony. Wszedł pierwszy klient. Jego sprzęgło zostało zerwane. Sprawdziłeś to i nie wiedziałeś, co robić. W rzeczywistości nie miałeś absolutnie pojęcia, jak postępować zgodnie z radą, którą dał ci Szef. Zostałeś zwolniony.
Ale jak to możliwe !? Wiesz wszystko o samochodach! Z wyjątkiem ... wszystkiego o samochodach. Możesz bardzo dobrze wiedzieć, że twój wymarzony samochód ma silnik V12, ale nie wiesz, co to właściwie oznacza.
Więc nie jesteś mechanikiem samochodowym, naprawdę - jesteś entuzjastą samochodów. I dopóki nie dowiesz się, jak działają samochody , pozostaniesz entuzjastą.
Teraz pozwól, że cię spytam. Jak
$.fn.text
działa A co$.fn
? Co one naprawdę oznaczają? W jaki sposób$(something)
powraca gigantyczna rzecz zawierająca rzeczy i czym dokładnie jest ta rzecz? Czy potrafisz chociaż trochę odtworzyć ich funkcjonalność? Czy poradzisz sobie bez jQuery?Mówienie, że „natywny JavaScript jest trudny” jest po prostu… fałszywe. Przede wszystkim dlatego, że JavaScript jako język nie ma nic wspólnego z DOM , co jest głównie tym, co abstrakty jQuery. Po drugie, gdy dowiesz się trochę o DOM, możesz już przejść przez najczęstsze błędy w różnych przeglądarkach. Ale tylko mały sekret - na początku wszystko jest trudne. Długi podział był suką w 5 klasie.
Jako drugi analogicznie do tej odpowiedzi: jQuery jest do JavaScript-DOM (nie JavaScriptu języku, po prostu DOM) jak
Array.prototype.forEach
jestfor
. Działa, w 99% przypadków. I działa dobrze. Ale w przypadku tego 1%, który nie jest objęty, musisz wiedzieć, jak korzystać zfor
pętli, jeśli tylko jest to praktyczne. Cała odpowiedź opiera się na „czystej” stronie pytania, a nawet na stronie technicznej (na przykład rozmiar biblioteki i kilka innych rzeczy, jak wyjaśniono w odpowiedzi Michaela Dorranta). Ponieważ uwielbiam JavaScript, a kiedy ludzie wydają się po prostu odtrącać go od niechcenia, mówiąc „pah, ci głupi javascriptians” i wymachując fantazyjnymi białymi rękawiczkami, sprowadza się to do moralności.Jeśli możesz zaakceptować fakt, że zawsze będziesz entuzjastą JavaScript, kim jestem, aby cię zatrzymać? Ale jeśli chcesz być programistą JavaScript, najpierw musisz mieć wiedzę, aby przynajmniej wybrać pomiędzy używaniem jQuery (lub jakiejkolwiek innej biblioteki), a nie używaniem biblioteki. Dowiedz się o DOM. Dowiedz się, jak z niego korzystać. Napisz własną małą bibliotekę lub po prostu zbiór funkcji pomocniczych. A kiedy już poznasz DOM i wybierzesz jQuery - boską prędkość. Lenistwo przyznawane jest tym, którzy ciężko pracowali.
źródło
Powody, dla których wiem:
Gdy potrzeba jest bardzo minimalna, powiedz 1 kliknięcie.
Gdy prędkość pobierania jest krytyczna, a biblioteka jQuery jest zbyt duża ORAZ nie trzeba pisać dużo (niestandardowego) kodu, aby go zastąpić.
Podczas integracji z innymi technologiami, czasami raw js jest lepszy.
Podczas pracy na starszym systemie (znanym również jako „produkcja”) napisanym już w js o ustalonych wzorcach.
źródło
jQuery to po prostu framework - zestaw narzędzi napisanych w JavaScript. Korzystając z tego zestawu narzędzi, nadal używasz JavaScript. Niektóre osoby wolą pisać JavaScript za pomocą narzędzi udostępnianych przez jQuery, niektóre nie, inne wybierają inne zestawy narzędzi.
Niektóre powody, dla których możesz chcieć napisać „czysty” JavaScript bez jQuery:
źródło
jQuery, jak każda biblioteka lub framework, dodaje kolejną warstwę błędów . Uwielbiam to, ale straciłem też dzień szukając błędu, który okazał się być w jądrze jQuery, a nie w moim kodzie (rzadka okazja, ale nie taka rzadka).
Poza tym nie znajduję żadnego innego powodu, aby go nie używać:
ALE nie należy go nigdy używać jako substytutu wiedzy o Javascript. Jeśli nie wiesz, jak to zrobić w czystym JavaScript, możesz początkowo uciec od biblioteki, ale na dłuższą metę za to zapłacisz.
I oczywiście wszyscy jesteśmy uwikłani w śmiertelną walkę z IE6 od kilku lat i niełatwo porzucić nasze oldschoolowe sztuczki na rzecz błyszczącej nowej zabawki.
źródło
The huge gallery of plugins help me write prototypes in very short times
... Tylko prototypy, unikam ich w kodzie produkcyjnym, jeśli to możliwe. Istnieje kilka wtyczek z doskonałą kodeksu oczywiście, ale trzeba patrzeć bardzo trudne dla nich ...W środowisku przeglądarki potrzebujesz narzędzia do normalizacji w różnych przeglądarkach. Takie narzędzie występuje w dwóch smakach
Zasadniczo możesz korzystać z tych narzędzi na jeden z trzech sposobów
addClass
lub wsetText
całym kodzie, kiedy i gdzie ich potrzebujeszPotrzebujesz mechanizmu normalizacji, w przeciwnym razie uzyskasz zerową obsługę wielu przeglądarek.
Jeśli chodzi o korzystanie z istniejącego, to w porządku. Po prostu nie użyłbym jQuery. Osobiście piszę teraz własną bibliotekę ( DOM-shim naprawia przeglądarki bez ujawniania zagranicznego API. Zmienia przeglądarki w jedną dobrze zachowaną znormalizowaną przeglądarkę).
źródło
Jeśli nie potrzebujesz abstrakcji DOM, obsługi wielu przeglądarek i starszych przeglądarek - możesz łatwo przejść bez jQuery.
Dzieje się tak w przypadku opracowywania rozszerzeń przeglądarki, skryptów greasemonkey (czasami), programów do łamania numerów, tworzenia programów dla Node.js lub innych środowisk innych niż przeglądarka.
źródło
Wraz z innymi odpowiedziami tutaj, szczególnie Michaela Durranta , zauważyłem, że szybkość jest głównym powodem, dla którego czasami wybieram używanie surowego JavaScript.
Ostatnio pracuję nad wieloma animacjami lub innymi zadaniami wymagającymi dużej mocy obliczeniowej procesora, a czasami surowy JavaScript jest znacznie, dużo szybszy niż w przypadku jQuery.
Jednym z przykładów jest sytuacja, w której chciałem zmienić krycie
position: fixed
elementu w stosunku do tego, jak daleko na stronie przewinął użytkownik. Efekt był o wiele za wolny, gdy użyłem do tego jQuery, powodując gwałtowne przewijanie, a efekt zanikania został zniszczony. Przełączyłem się na używanie prostego JavaScript i wszystko było jedwabiście gładkie we wszystkich oprócz IE <= 8.źródło
Muszę przedstawić swoją odpowiedź z pewną otwartą szczerością. Uwielbiam jQuery. To sprawia, że moje życie jest znacznie łatwiejsze i sprawia, że kod JavaScript jest bardziej deklaratywny, i tak uważam, że wszystko powinno działać.
jQuery robi wiele rzeczy…
Tak , możesz dodawać wtyczki
Tak , możesz rozszerzać selektory
Tak upraszcza to animację
ale jQuery nie robi wszystkiego
Czy próbowałeś kiedyś pracować w wielu kontekstach okien z jQuery? jQuery nie potrafi poradzić sobie z różnymi kontekstami okien, ponieważ zachowuje oryginał
window
idocument
kontekst z okna, w którym został wywołany.Napisałem tu i tam trochę kodu, aby tworzyć wyskakujące okienka *, a jQuery może po prostu przeszkodzić temu, co próbuję osiągnąć. Dodanie nowego odwołania do jQuery w oknie potomnym może często pogorszyć sytuację, utrudniając określenie, który kontekst jQuery jest używany.
* pomyśl o wyskakującym okienku Gmaila do tworzenia wiadomości e-mail w nowym oknie, a nie reklam spamerskich
Użyj go, gdy upraszcza kod
Czas na użycie jQuery to czas, kiedy możesz uczynić swój kod prostszym, krótszym, bardziej czytelnym i szybszym.
Czas, aby nie używać jQuery, to czas, w którym twój kod nie będzie prostszy, krótszy, bardziej czytelny ani szybszy. Jeśli potrzebujesz dostroić czasy ładowania, możesz nie chcieć używać jQuery z powodu narzutu zdarzenia.
źródło
Jak będziecie wiedzieć, jQuery jest frameworkiem ogólnego zastosowania, który zapewnia wiele metod, z których wielu z nas nie korzysta w naszych projektach. (Niektórych z nich w ogóle nie używałem.)
Istnieją dwa główne powody, dla których nie używamy jQuery ani żadnych innych dobrze ugruntowanych frameworków.
1. Projekt nie jest wystarczająco duży lub skomplikowany, aby użyć takich ram: W tym przypadku programista podejmuje świadomą decyzję w oparciu o swoje doświadczenie i wiedzę w zakresie JavaScript. Pomoże mu to zmniejszyć wagę strony, a także większą kontrolę nad kodem.
2. Koder rozwija własną platformę. W mojej firmie widziałem projekt, który ma własną platformę JavaScript. Powodem, dla którego cytują, jest to, że jeśli używają jQuery i jest w nim jakiś błąd do naprawienia, muszą poczekać do następnej wersji. Co więcej, jeśli istnieje funkcja do dodania, muszą poprosić o nią zespół jQuery lub dodać wtyczkę, nawet jeśli stworzenie wtyczki nie będzie dobrym pomysłem (podali przykład zastosowania
.live
podobnej rzeczy w swoim framework jeszcze zanim został oficjalnie dodany do JQuery). Posiadanie własnego frameworka daje większą kontrolę nad kodem. Wadą jest to, że musisz odkryć koło w kwestii problemów ze zgodnością przeglądarki itp. Co więcej, jeśli proces programowania nie będzie dobry, twoja platforma będzie się wzdęcia i wydłuży tylko czas na jej utrzymanie.źródło
Mikrofon
Sądzę, że ludzie, którzy nie chcą korzystać z niektórych bibliotek, są zależni od tego rozwiązania infrastrukturalnego / bibliotecznego do wykonania jakiegoś zadania.
Ale pamiętajmy, aby pamiętać, że języki przychodzą i odchodzą jak biblioteki na dłuższą metę.
Więc może to zakres czasowy. Być może ludzie wahają się zainwestować w bibliotekę, której po prostu może nie być - lub mieć za sobą tyle rozpędu na dłuższą metę.
Siebie? Nie mam nic przeciwko korzystaniu z JQuery. Patrzę też na powiedzmy Box2d.js lub three.js i wolałbym je objąć, nawet jeśli mają krótki termin przydatności do spożycia, niż przegapić jakie owoce mają do zaoferowania.
Podsumowując, Mike ma ryzyko związane z okresem przydatności wybranej biblioteki i myślę, że niektórzy członkowie społeczności javascript mogli doświadczyć strat z powodu końca biblioteki lub projektu i mogli powiedzieć - nigdy więcej.
źródło
Powiedziałbym, że głównym problemem jest to, że coraz więcej osób (zdecydowana większość?) Nie wie już, jak kodować w JavaScript. Jeśli jQuery nie może czegoś zrobić, nie może tego zrobić.
Dochodzi do tego, że proste przykłady javascript stają się trudne do zdobycia. Nic przeciwko jQuery; to świetne ramy. Mam z tego wiele dobrych pomysłów, ale ludzie powinni najpierw nauczyć się JavaScript, a następnie nauczyć się frameworka. Osobiście uważam, że moja własna platforma jest bardziej elastyczna i lepiej odpowiada moim potrzebom, i tak, czasami odkrywam koło, ale całkowita kontrola i kontrola nad poprawkami błędów to ogromna korzyść pod warunkiem, że jesteś gotów włożyć wkład w naukę JavaScript.
Nie tylko to. Znajomość waniliowego JavaScriptu sprawia, że dużo przyjemniej jest bawić się i eksperymentować z nowszymi funkcjami zamiast czekać na implementację opartą na frameworku. Ponadto nie obwiniam za to jQuery, ponieważ jest to głównie biblioteka DOM , ale skalowanie przy dużych projektach może być uciążliwe. Inne struktury działają w tym lepiej; Przychodzi mi na myśl prototyp .
Krótko mówiąc, jest to świetny framework, ale nie wszyscy, którzy są końcem.
źródło
Mogę dodać jeszcze dwa powody, o których nie wspomniano:
Kiedy często wybrałem zupełnie nową technologię, zaczynałem od konstrukcji niższego poziomu, zanim przejdę do konstrukcji wyższego poziomu. Jestem przede wszystkim programistą C ++ / C #, ale jakiś czas temu, kiedy zacząłem bawić się HTML / CSS / JavaScript, postanowiłem nie używać żadnego frameworka, ponieważ chciałem najpierw zrozumieć technologię (czyli JavaScript język)), na których te frameworki są zbudowane.
Nie wiem, jak to jest powszechne, ale wydaje mi się, że jest wiele osób, które widząc następny framework / technologię / język, ich pierwszą odpowiedzią jest „nie kolejny interfejs API dla mnie do nauki!” Nie obchodzi ich, jak łatwa jest jQuery, ale po prostu widzą, że stoi na drodze między nimi i zapewnia pracę przy użyciu „prawdziwych i wypróbowanych” metod. Jest to ta sama kategoria osób, które odmawiają korzystania z biblioteki Boost lub któregokolwiek ze STL i nadal używają malloc do wszystkiego. Zapytałeś, dlaczego wybrali czysty JavaScript w stosunku do jQuery, a tak naprawdę nigdy go nie wybrali, ponieważ przez większość czasu odmawiali oceny jQuery i są całkowicie zadowoleni ze swojego obecnego tempa rozwoju, bez względu na to, jak wolno.
źródło
jQuery to biblioteka napisana w i dla JavaScript. Chodzi o to, że sprawia, że wszystkie trudne / żmudne JavaScript są proste, co przyspiesza czas programowania i sprawia, że skrypty znacznie częściej działają w różnych przeglądarkach.
Co sprawia, że lepiej używać jQuery:
Oto powody, dla których JavaScript lepiej jest używać zamiast jQuery:
Z tych powodów lubię używać JavaScript, aby uniknąć frameworka jQuery. O wiele lepiej jest uczyć się JavaScript w zależności od takiej biblioteki ...
Nawet jeśli chcesz je rozszerzyć, musisz napisać kod w JavaScript. Co też jest wielką rozmową. Programiści stają się zależni od tych bibliotek, więc aby mieć kontrolę nad projektami, JavaScript jest lepszy niż używanie frameworków.
źródło
Myślę, że ludzie używają jQuery, ponieważ jest to prostsze, łatwiejsze i bardziej wydajne oraz ponieważ pomaga im zapomnieć o IE. Poza tym do niestandardowych funkcjonalności ludzie używają javascript. Spróbuj zapoznać się z DOC, aby uzyskać więcej informacji
źródło