Czy Underscore.js i jQuery uzupełniają się? [Zamknięte]

92

Dopiero zaczynam uczyć się JavaScript i natknąłem się na Underscore.js i jQuery . Underscore wygląda naprawdę fajnie, ale zastanawiam się, czy jQuery nie zapewnia już funkcji podobnych do Underscore. Czy więc warto używać obu?

helpermethod
źródło
6
Pierwszy akapit na ich stronie głównej mówi: „To krawat pasujący do smokingu jQuery i szelek Backbone.js”.
Anurag
12
tak, ale myślę, że to, na co wskazuje operacja słowem „uzupełnienie”, to fakt, że skoro wiele funkcji nakłada się na siebie, czy te dwie struktury naprawdę mają sens razem. Na przykład różnice między $ .each i _.each są na tyle subtelne, że każdy może się pomylić, gdy próbuje je wymieszać i dopasować.
BishopZ
1
Jeśli lubisz podkreślenia, to naprawdę powinieneś używać lodash.com
Neil

Odpowiedzi:

78

Zaczerpnięte z witryny podkreślenia :

Jest to krawat pasujący do smokingu jQuery i szelek Backbone.js.

Podkreślenie jest bardziej odpowiednie do manipulacji danymi i wprowadza wiele metod Rubiego do JavaScript. Jest trochę crossoverów, ale nie na tyle, aby się wzajemnie wykluczały.

Gazler
źródło
53
to bardzo niestandardowe pasować ram: P
Anurag
68
  • jQuery zajmie się większością manipulacji domeną
  • backbone.js pomoże ci zorganizować cały twój kod i nada twojej aplikacji js jakąś strukturę (wzorzec mvc)
  • underscore.js daje naprawdę przydatne narzędzie niskiego poziomu. Nigdy nie potrzebowałbym tej biblioteki, dopóki naprawdę nie zainteresowałem się aplikacjami js (jest to również wymóg dla backbone.js)
rkw
źródło
39

Podkreślenie zapewnia łącznie 60 funkcji do przetwarzania danych / kodu. Uzgodniono, że wiele funkcji jest obecnych w innych bibliotekach, takich jak jQuery, Prototype czy script.aculo.us. Na przykład funkcje takie jak each, map, find, filter lub toArray są obecne w jQuery. Te są również w Underscore. Ma to na celu uniezależnienie biblioteki od jQuery.

Kiedy używać podkreślenia?:

Obecnie jest szeroko stosowany z Backbone.js do korzystania z architektury MVC do tworzenia jednostronicowej aplikacji internetowej Javascript. Najważniejszą cechą underscore.js jest możliwość tworzenia szablonów (czego jQuery nie potrafi). Ta biblioteka ma wiele innych przydatnych funkcji, które są niezależne od innych bibliotek Javascript.

Poniżej znajduje się lista funkcji udostępnianych przez Underscore:

Kolekcje: każdy, mapuj, redukuj, redukujRight, znajdź, filtruj, odrzuć, wszystkie, dowolne, dołącz, wywołaj, pluck, max, min, sortBy, groupBy, sortIndex, shuffle, toArray, size

Tablica: pierwsza, pierwsza, ostatnia, reszta, kompaktowa, spłaszczona, bez, suma, przecięcie, różnica, uniq, zip, indexOf, lastIndexOf, range

Funkcja: bind, bindAll, memoize, delay, defer, throttle, debounce, Once, after, wrap, compose

Obiekt: klucze, wartości, funkcje, rozszerzanie, wartości domyślne, klonowanie, stukanie, isEqual, isEmpty, isElement, isArray, isArguments, isFunction, isString, isNumber, isBoolean, isDate, isRegExp, isNaN, isNull, isUndefined

Utitity: noConflict, identity, times, mixin, uniqueId, escape, template

Umesh Patil
źródło
3
Cześć Umesh, ponieważ _.template to tylko jedna z 60 funkcji podkreślenia, czy to naprawdę wystarczy, aby było to warte zachodu?
tim Peterson
@timpeterson, rozumiem to. ale nie tylko używamy _.template, jest o wiele więcej funkcji, takich jak bind, bindAll, each, map itp. Możemy używać wielu funkcji, jak to tylko możliwe.
Umesh Patil
3
ale bind, każda mapa jest w jQuery, więc wydaje się zbędna, prawda?
tim peterson
2
Posiadanie Reduce (którego jQuery nie doda ) prawdopodobnie sprawia, że ​​jest to warte zachodu!
Rob Grant
9

Jeśli obawiasz się nakładania się i nie potrzebujesz rzeczy takich jak JQuery AJAX, możesz rozważyć użycie tylko silnika selektora JQuery o nazwie Sizzle.

http://sizzlejs.com/

Zauważ, że nie jest to dla wszystkich projektów, używając Sizzle i Underscore stracisz część funkcjonalności JQuery (jak AJAX), musisz rozważyć, czego naprawdę potrzebujesz do swojej konkretnej aplikacji.

DigitalDesignDj
źródło
2
projects.jga.me/jquery-builder To narzędzie może pomóc w usunięciu niepotrzebnego kodu jQuery. Ponadto moduły lodash są dostępne na NPM
DigitalDesignDj