Prototype VS jQuery-mocne i słabe strony?

Nie chcę otwierać kolejnego wątku" Yet Another Js VS Js ".

Myślę, że w końcu Prototype i jQuery są zarówno JS i mają prawie te same metody i funkcje i potrzebują prawie tych samych linii kodu do identycznych zadań.

Dla prawdziwejbogatej aplikacji internetowej , Jakie sąPrawdziwe mocne strony i jakie sąsłabe strony w Prototype vs. jQuery?

Author: Rob W, 2010-04-15

14 answers

Początkowo podobał mi się pomysł rozszerzenia elementów Prototype o nowe lub zmodyfikowane metody.

Jednak odkryłem wiele powodów, dla których jest to zła rzecz (TM)

Poszperaj trochę w googlach, a prawdopodobnie znajdziesz inne powody, ale głównym powodem jest to, że Prototype nie może być gwarantowany do "zabawy" z innymi frameworkami lub bibliotekami, ponieważ inne biblioteki oczekują zachowania elementów i metod jako "standardowe" , a ze względu na to, co robi Prototype, możesz może znaleźć wiele rzeczy, które są przez niego złamane.

Najnowszym przykładem, który odkryłem, był prototyp wkręcania z JSON i stringify. Używałem EasyXDM i po prostu nie działało w niektórych przypadkach, gdy prototyp.biblioteka js została załadowana. Ponieważ pisałem framework do użycia przez inne , a więc nie miałem kontroli nad zawartością strony, musiałem stworzyć i zrobić wszystko w ramce IFRAME, aby zapewnić takie rzeczy jak prototype.js nie bawił się w spustoszenie z czym Próbowałem to zrobić.

... więc jQuery wygrywa dla mnie hands-down, bo po prostu nie sądzę, aby Framework automatycznie wkręcał standardowe zachowanie DOM i javascript. Powinieneś kontrolować te rzeczy, Prototype odbiera ci część tej kontroli....

 104
Author: Graza,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-04-15 11:06:13

Ja również używam jQuery nad prototype, wystarczy spojrzeć na górę tej strony dlaczego:

Pytania oznaczone Tagiem Jquery : 531,752
prototype tagged question : 2,465
jQuery - 135 641 / prototype - 2,327

JQuery to bardzo zwięzły, zwięzły kod. Prototype uważam za dużo bardziej gadatliwe, choć często równoważne w wielu obszarach dla funkcjonalności. Jeśli jednak potrzebujesz pomocy, aby rozpocząć, chcesz większe społeczność. Więcej wsparcia, więcej tych samych pytań, na które już odpowiedziałeś i łatwe do google, i więcej wtyczek, kodu, którego prawdopodobnie szukasz, aby coś zrobić...już napisane.

Z tych samych powodów, im większa społeczność, tym więcej kodu, tym bardziej złożony kod , co oznacza, że proste rzeczy zostały napisane i rozwiązano wiele skomplikowanych sytuacji, są szanse, że jeśli piszesz bardzo bogatą aplikację, napotkasz jakąś ładną aplikację. skomplikowane pytania lub sytuacje...jest więcej środków, które pomogą Ci sobie z tym poradzić.

Znowu...z tego samego powodu wielkości wspólnoty stwierdzono więcej niedociągnięć w ramach, a luki zostały uzupełnione, ponieważ większa Wspólnota badała je. Oznacza to, że gdy natkniesz się na problem, są szanse, że ktoś inny też to zrobił, a jakaś metoda lub opcja została dodana, aby utrzymać cię w ruchu, a nie zablokować, ponieważ trafiłeś coś, czego framework nie mógł zrobić.

 45
Author: Nick Craver,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:02:22

Obecnie przepisuję duże bloki z aplikacji, aby przejść z prototypu do jQuery. Dlaczego? Wtyczki, wtyczki, wtyczki, w szczególności widżety UI. Prototypowe elementy interfejsu użytkownika są raczej fragmentaryczne i bardzo fragmentaryczne, podczas gdy jQuery ma bardzo bogaty zestaw "standardowych" elementów.

 19
Author: Mark,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-31 15:38:04

JQuery został stworzony, aby ułatwić dodawanie fantazyjnych efektów do stron. Osiągnął 100% sukces.

Ponieważ dodawanie animacji i okazjonalne połączenia ajax jest tym, czego ludzie zwykle potrzebują i wymagają od biblioteki Javascript, JQuery ma dużą społeczność. Motto JQuery brzmi: "dodam trochę blasku i zejdę z drogi", co jest dokładnie tym, czego my, programiści, często potrzebujemy.

Mimo to Prototype sprawdza się w większości innych zastosowań. Posiada stabilne ramy dla klasowego OOP (jednolicie rozwiązywanie problemów, takich jak dziedziczenie konstruktorów), oraz dobry zestaw abstrakcji ogólnego zastosowania do radzenia sobie z danymi.

 13
Author: fdreger,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-27 09:58:55

Wybrałem jQuery zamiast Prototype ponieważ:

  • "rób więcej, pisz mniej..."
  • [[3]}społeczność jQuery jest większa (stąd więcej wtyczek i zasobów)
 9
Author: Mickel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-04-15 10:52:23

Używałem obu i lubię oba. To naprawdę zależy od wymagań Twojego projektu. Wydaje mi się, że obie platformy pochodziły z 2 różnych kierunków ze względu na 2 różne wymagania. Oba zostały stworzone z potrzeby rozwiązywania problemów programistycznych, aby pomóc szybciej i lepiej budować strony internetowe/aplikacje.

Podczas szybkiego tworzenia stron internetowych, ze standardowym zestawem sztuczek, jquery i jego biblioteka są świetne. Nie ma sensu odkrywać koła na nowo. Ja jednak wpadam w dziwne problem z wersją przeglądarki, gdy moje narzędzie / sztuczka nie działa i zawsze zdarza się, że to klient ma tę konkretną wersję. Zwykle dzieje się tak, gdy wersja przeglądarki jest wydana/zaktualizowana. W związku z tym muszę pobrać nową wersję tego pliku biblioteki jquery, aby zaktualizować wszystkie moje witryny, to znaczy, jeśli społeczność już zauważyła i rozwiązała wspomniany problem. To moje jedyne zmartwienie, bo sam nie mam czasu, żeby to rozgryźć. Nie zdarza się to często, ale zdarza się.

Kiedy pracując nad bardziej złożonymi projektami internetowymi, może siecią witryn obsługiwanych przez back-end API, uważam, że prototype jest świetny. Korzystam w pełni z kodowania oo po stronie serwera i byłem bardzo zadowolony, że mogę zrobić to samo z prototypem. Czuję, że mam więcej "kontroli" nad moimi aplikacjami i mogę szybko naprawić rzeczy, ponieważ jestem autorem. Słyszę, co ludzie mówią o napowietrznych, domach, itp. ale nie natknąłem się na żadnych problemów głównych (knock on wood). Również cały problem nie mając polecenie 'for each' nie stanowi większego problemu, gdy mogę równie łatwo iterować tę samą zmienną .each (function () {},..) i z nieco większą kontrolą.

Więc każdy ma swoje miejsce i musisz wybrać swój własny lek.

Jak,

 6
Author: Chris,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-11 17:11:38

Ani "najlepszy". To zależy. Wypróbuj oba i zobacz, który z nich lubisz bardziej. Ja osobiście używam JQuery ze względu na łatwość użycia nad prototypem, który jest raczej zaawansowany i ma dłuższą krzywą uczenia się.

Zobacz:

Prototype vs JQuery (at Ajaxian)

 4
Author: Sarfraz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-04-15 10:53:35

To kolejny ciekawy artykuł o jQuery i MooTools (MooTools i Prototype są w większości wymienne, przynajmniej w kontekście tej debaty): http://jqueryvsmootools.com/

 3
Author: Alsciende,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-04-15 11:42:55

JQuery używa selektorów i filtrów w stylu CSS, które są oparte na składni CSS. Z punktu widzenia projektowania ma to wiele zalet. Jestem bardzo lubiany i biegły w CSS, więc jQuery czuje się dla mnie osobiście jak w domu. Jeśli szukasz składni, aby Twoje wszechstronne doświadczenie w kodowaniu było przyjemniejsze, a jesteś wielkim fanem / biegłym w CSS, możesz śmiało powiedzieć, że wolisz jQuery niż alternatywy. Wzięłam udział w kursie podstawowym z prototypu nudziłam się do łez. Właśnie ukończyłem "the Essentials of jQuery" W Lynda ' s i absolutnie go kocham, ponieważ jest bliski związek z CSS. Programuję w vanilla JavaScript od około 10 lat i zawsze uważałem, że jest bardzo suchy; i dla mnie jest to code overkill (niewiele za grosz). Chociaż przez te lata było to dla mnie bardzo przydatne. Z tego, co do tej pory widziałem, jQuery {[2] } jest tym, czym powinien być JavaScript od pierwszego dnia. Ale z drugiej strony, potrzeba dużo czasu, testów i wysiłku, aby poprawić rzeczy. Więc jQuery wygrywa dla mnie.

 3
Author: Illuin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-02-09 11:55:16

Nie mam jeszcze doświadczenia w jQuery ani Prototype. Zaraz zacznę uczyć się jednego z nich, aby dodać go do mojego zestawu narzędzi jako starszy programista i kierownik projektu ColdFusion. Moje podejście do tego jest początkowo, który z nich nowy comer zdecyduje się, ponieważ odzwierciedla to przyjęcie branży, które IMHO jest kluczowe.

W oparciu o szybkie rozejrzenie się i kilka samouczków na temat obu, wydaje się, że każdy z nich oferuje te same podstawowe umiejętności. Jednak patrząc na tablice pracy i inne projekty, jQuery wydaje się być w znacznie więcej "popyt" w przeciwieństwie do umiejętności, które można wykorzystać. Dla mnie jQuery wygrywa tutaj z adopcją i zapotrzebowaniem, wsparciem społeczności i dokumentacją to plus. Nic przeciwko prototypowi, dobrze wiedzieć, czy projekt wymaga go ze względu na wcześniejsze istnienie, ponieważ jakiś deweloper wybrał go jako pierwszy, do którego się przyjrzał.

 2
Author: Clint,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-11-27 15:16:59

Używałem prototype framework i jquery, a co do mnie, osobiście lubię jquery bo jego noConflict(); wolę używać JQ noConflict jak ten w moich plikach js

(function($){

}(jQuery));

Ten sposób sprawi, że użyjesz $ jako selektora jquery dla pliku js

 1
Author: janbee,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-17 08:05:32

Subscribering the already signed marked correct answer I wan 't also to share a lib that allow you to use most of the utilities that you would expect to find on a framework like prototype but with the advantage of don' t extend native objects. W rezultacie zapewnia większą kontrolę i elastyczność nad komplementarnymi frameworkami, które chcesz wykorzystać w swoim projekcie.

Underscore jest biblioteką narzędzi dla JavaScript, która zapewnia lot of the wsparcie programowania funkcjonalnego, którego można oczekiwać w Prototyp.js (lub Ruby), ale bez rozszerzania żadnego z wbudowanych Obiekty JavaScript. Krawat pasuje do smokingu jQuery i Kręgosłup.szelki js.

 1
Author: Lothre1,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-06 12:17:02

Czy mógłbym również podać argument, że używanie jednego lub drugiego jest trochę fałszywym dylematem? Mając duże doświadczenie z jQuery wiem, jak może to być korzystne i o ile szybsze może się stać tworzenie aplikacji.

Ważne jest jednak, aby pamiętać, że może być bardziej korzystne dla użytkowników końcowych w niektórych przypadkach korzystanie z żadnej biblioteki, szczególnie w przypadkach, gdy nie jest to wymagane. Chociaż z pewnością jest to pomocne w dużych aplikacjach, może być intuicyjne do wykorzystania na wspólnej stronie internetowej ze względu na wpływ na wydajność.

Wysyłane jest dodatkowe żądanie HTTP, aby pobrać bibliotekę i, choć zwykle małe, gdy jest minifikowane, w rezultacie wymagana jest większa przepustowość. Ma to potencjał spowolnienia czasu ładowania strony, który może być realizowany przez użytkowników mobilnych.

DODATKOWO, po załadowaniu biblioteka natychmiast wykona kod, aby utworzyć globalnie dostępne funkcje i Obiekty, tym samym zużywając więcej pamięci , nawet jeśli nigdy nie używasz oni. Niektóre biblioteki dodają również funkcje i obiekty do wbudowanych prototypów obiektów, co również zwiększa zużycie pamięci.

Wreszcie, podczas gdy jQuery i wiele innych bibliotek są często intensywnie testowane w celu zapewnienia jak najmniejszego wpływu na wydajność, kod, który piszesz, choć zmniejszony w ilości, często będzie wolniejszy niż w innych przypadkach. Pamiętaj, że wszystko, co możesz zrobić z biblioteką, możesz zrobić z surowym JavaScript, ponieważ zasadniczo są takie same.

 0
Author: Micah Henning,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-09 21:42:08

Zwięzły, zwięzły kod wykorzystujący operatory stylu skróconego ma tendencję do bycia tajemniczym, więc niekoniecznie jest lepszy. Może odebrać czytelność i sprawić, że zrozumienie tego, co się dzieje, będzie mniej jasne. Przez wiele lat programowania natknąłem się na bardzo sprytny, tajemniczy kod, który był diabłem, aby dowiedzieć się, kiedy miał problemy. Osobiście lubię kod, który sam dokumentuje i który jest zoptymalizowany pod kątem szczegółów sytuacji. Jeśli twoim celem jest jak najwięcej w najmniej linijek kodu wtedy używanie bibliotek rozszerzeń DOM, takich jak prototype i jQuery, może być dla Ciebie. Osobiście uważam, że lepiej jest w pełni zrozumieć możliwości samego języka JavaScript i implementacji DOM przeglądarek i wykorzystać go do danego zadania, czy to będzie budowanie widżetów UI, czy cokolwiek innego. Używam script.aculo.us biblioteka czasami dla efektów animacji, więc znajduję się Ładowanie prototypowego kodu biblioteki, ponieważ scriptaculous zależy od niego. My sugestią dla każdego, kto korzysta z jednej z bibliotek byłoby nauczenie się pisać JavaScript w stylu oo, zanim całkowicie w zależności od jednej z tych bibliotek, a następnie włączenie tej, która wydaje się najlepiej pasować do Twoich potrzeb. Doskonałą książką do nauki języka JavaScript w stylu oo jest "Java Design Patterns".

 -1
Author: Jmyrons,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-24 17:43:20