Дополняют ли Underscore.js и jQuery друг друга? [закрыто]

92

Я только начинаю изучать JavaScript и наткнулся на Underscore.js и jQuery . Underscore выглядит действительно круто, но мне интересно, не предоставляет ли jQuery уже функций, подобных Underscore. Итак, стоит ли использовать оба?

вспомогательный метод
источник
6
Первый абзац на их домашней странице гласит: «Это галстук, который сочетается со смокингом jQuery и подтяжками Backbone.js».
Anurag
12
да, но я думаю, что оператор указывает на то, что слово «комплемент» указывает на то, что, поскольку многие функции перекрываются, действительно ли две структуры имеют смысл вместе. Например, различия между $ .each и _.each достаточно тонкие, чтобы запутать любого, пытаясь смешать и сопоставить их.
BishopZ
1
Если вам нравится underscorejs, тогда вам действительно стоит использовать lodash.com
Нил

Ответы:

78

Взято с сайта подчеркивания :

Это галстук, который сочетается со смокингом jQuery и подтяжками Backbone.js.

Underscore больше подходит для манипулирования данными и привносит в JavaScript многие методы Ruby. Есть некоторые кроссоверы, но их недостаточно, чтобы сделать их взаимоисключающими.

Газлер
источник
53
это очень обычай костюм рамок: P
Анураг
68
  • jQuery позаботится о большинстве ваших манипуляций с dom
  • backbone.js поможет вам организовать весь ваш код и дать вашему js-приложению некоторую структуру (шаблон mvc)
  • underscore.js предоставит вам действительно полезную низкоуровневую утилиту. Мне бы никогда не понадобилась эта библиотека, пока я действительно не занялся js-приложениями (это также требование для backbone.js)
rkw
источник
39

Underscore предоставляет в общей сложности 60 функций для обработки данных / кода. Принято считать, что многие функции присутствуют в других библиотеках, таких как jQuery, Prototype или script.aculo.us. Например, в jQuery присутствуют такие функции, как each, map, find, filter или toArray. Они также находятся в Underscore. Это сделано для того, чтобы библиотека не зависела от jQuery.

Когда использовать подчеркивание? :

В настоящее время он широко используется с Backbone.js для использования архитектуры MVC для создания одностраничного веб-приложения Javascript. Наиболее важной способностью underscore.js является возможность создания шаблонов (чего не может делать jQuery). Эта библиотека имеет множество других полезных функций, которые не зависят от других библиотек Javascript.

Найдите ниже список функций, предоставляемых Underscore:

Коллекции: each, map, reduce, reduceRight, find, filter, reject, all, any, include, invoke, pluck, max, min, sortBy, groupBy, sortedIndex, shuffle, toArray, size

Массив: первый, начальный, последний, остаток, компактный, плоский, без, объединение, пересечение, разность, uniq, zip, indexOf, lastIndexOf, диапазон

Функция: bind, bindAll, memoize, delay, defer, throttle, debounce, once, after, wrap, compose

Объект: ключи, значения, функции, расширение, значения по умолчанию, клонирование, нажатие, isEqual, isEmpty, isElement, isArray, isArguments, isFunction, isString, isNumber, isBoolean, isDate, isRegExp, isNaN, isNull, isUndefined

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

Умеш Патил
источник
3
привет Umesh, поскольку _.template - только одна из 60 функций Underscore, действительно ли этого достаточно, чтобы сделать ее стоящей?
Тим Петерсон
@timpeterson, я это понимаю. но мы не только используем _.template, но и многие другие функции, такие как bind, bindAll, each, map и т. д. Мы можем использовать множество функций, насколько это возможно.
Умеш Патил
3
но привязка, каждая, карта находится в jQuery, поэтому кажется избыточным, верно?
Тим Петерсон
2
Наличие Reduce (которое jQuery не будет добавлять ), вероятно, само по себе оправдывает себя!
Роб Грант
9

Если вас беспокоит перекрытие и вам не нужны такие вещи, как JQuery AJAX, вы можете рассмотреть возможность использования только механизма выбора JQuery с именем Sizzle.

http://sizzlejs.com/

Обратите внимание, что это не для всех проектов, используя Sizzle и Underscore, вы потеряете некоторые функции JQuery (например, AJAX), вам нужно учитывать, что вам действительно нужно для вашего конкретного приложения.

DigitalDesignDj
источник
2
projects.jga.me/jquery-builder Этот инструмент может помочь вам удалить ненужный код jQuery. Кроме того, модули lodash доступны на NPM
DigitalDesignDj