Upload
olya-nosova
View
114
Download
0
Embed Size (px)
Citation preview
Носова О.А. гр.4381
Что такое Underscore
Имя библиотеки
Общие сведения
Подключение
Функциональность
Underscore в действии
Нужно ли это на самом деле
Аналоги в JavaScript и др. языках
Это библиотека JavaScript, реализующая дополнительную функциональность для работы с массивами, объектами и функциями, изначально отсутствующие в JavaScript, но имеющую аналоги в других языках. Библиотека Underscore сможет облегчить вам процесс разработки, не изменяя встроенных объектов.
Дело все в том, что как в JQuery все начинается со знака "$", так и тут все начинается со знака "_", а Underscore с английского как раз таки и переводится как нижнее подчеркивание.
На данный момент Underscoreпредоставляет более 80 функций.
Среди них есть, те, которые решают более тривиальные задачи: map, select, invoke; но так же и более специфические: биндинг, javascript шаблоны и т.д.
Сама библиотека функционально основана на нативных JavaScript методах, таких как forEach, map, reduce, filter, every, indexOf, что делает её значительно быстрой.
в отличие от Prototype.js, Underscore не модифицирует прототипы встроенных объектов JavaScript. Данная особенность гарантирует бесконфликтность, что позволяет замечательно сочетать этот инструмент с, например, JQuery илиBlackbone, или и тем и другим вместе.
Библиотека умеет делегировать вызовы, если какая-то функциональность реализована разработчиками браузеров.
Прежде чем мы начнем использовать эту библиотеку, нам нужно ее подключить.
Найти библиотеку вы можете на сайте разработчика underscorejs.org. Заметьте, что там же вы можете найти документацию, однако она будет на английском. Если вы хотите прочитать документацию на русском языке, то можете перейти на сайт underscorejs.ru.
Подключить Underscore не сложнее любой другой JavaScript-овой библиотеки.
Теперь все доступные методы можем вызывать от объекта “_” (подчёркивание).
Underscore обеспечивает немногим более 80 функций, которые охватывают целый ряд функциональных возможностей. По своей сути, они могут быть разделены на группы :
Коллекции
Массивы
Объекты
Функции
Утилиты
Цепные вызовы
Коллекцией может быть либо массив или объект, ассоциированный массив в JavaScript, если он семантически правильный.
Underscore предоставляет много методов которые работают на коллекциях.. Вот еще несколько полезныхиз них:
Pluck
Скажем, у вас есть хороший маленький массив, содержащий пары ключ-значение, и вы хотите извлечь только определенное свойство от каждого.
map
Cоздает массив из коллекции, где каждый элемент может быть тем или иным образом изменен с помощью функции
All
All полезна, если вам нужно проверить каждое значение в коллекции на соответствию критерию. Для того, чтобы проверить, пройден ли тест студентом по каждому предмету, например
Underscore имеет кучу функций, которые работают исключительно на массивах, которые в высшей степени приветствуется, поскольку, по сравнению с другими языками, JavaScript предоставляет несколько методов, касающихся массивов
Uniq
Этот метод в основном разбирает массив и удаляет все повторяющиеся элементы, предоставляя вам только уникальные элементы.
Range
Чрезвычайно удобный метод, который позволяет создать 'диапазон' или список номеров. Давайте посмотрим на простой пример.
Intersection
Этот метод сравнивает два массива с каждым другим и возвращает список элементов, которые находятся во всех передаваемых массивов, т.е. пересечение в теории множеств.
Давайте расширим предыдущий пример, чтобы увидеть, как это работает
Intersection
Легко, не так ли? Вы просто передать в список массивов для сравнения и Underscore делает все остальное
В дополнение к довольно ожидаемым проверкам, Underscore предоставляет различные методы для клонирования, расширения и другие манипулировать объектами.
Keys and Values
Есть массивный объект, где вам нужно только ключи или только значения? Это легко с underscore.
Defaults
Этот метод весьма полезен, когда вам нужно создавать объекты с приемлемыми значениями по умолчанию, когда не могут быть использованы при его создании
Underscore имеет функции, которые работают на функциях. Большинство функций, как правило, довольно сложно объяснить здесь, так что мы посмотрим на самый простой.
BindСвязывает функцию с объектом. Это значит, что каждый раз когда она будет вызвана this будет указывать на данный объект.
Это особенно полезно , когда вы работаете с обработчиком событий , где this переопределен.
Underscore предоставляет массу полезных функций.
Templating
Компилирует JavaScript-шаблоны в функции, которые могут быть вызваны для рендеринга этого шаблона. Полезно при рендеринге объёмных и сложных частей HTML-разметки из данных JSON. Полученные функции во время обработки данных могут интерполировать переменные, для чего используется следующий синтаксис внутри шаблона: <%= … %>, а также производить вычисления <% … %>.
Вы можете использовать Underscore с применением как объектно-ориентированного подхода, так и процедурного, в зависимости от ваших привычек и предпочтений.
Вызвав chain на объекте, с которым собираетесь работать, вы получите эффект, при котором каждый последующий метод в цепочке будет вызван на объекте, возвращённом предыдущим методом. Чтобы получить результат отработавших методов, нужно вызвать value.
Давайте предположим, что у вас есть случайный набор тестов и вам нужен список тех, у кого 90+ балла. Вы бы обычно пишут что-то вроде этого:
Вы можете подумать, зачем же использовать эту библиотеку, когда есть JQuery? Не стоит их путать. Все дело в том, что в JQuery существует много функций, которые позволяют не беспокоиться, к примеру, с анимациями, а просто вызвать уже готовую. То же самое с Ajax и т.д. Однако эта библиотека не облегчает нам процесс написания кода. Underscore же создана как раз для этого. Давайте рассмотрим некоторые ее возможности на примере.
Давайте посмотрим на то, что мы можем достичь c Underscore в следующем:
Код стал короче и более читабельным
Все зависит от того, что вы пытаетесь сделать. Если использование JavaScriptограничивается игрой вокруг DOM, то ответ почти нет, так как JQuery делает большинство из того, что вы хотите сделать.
С другой стороны, если вы имеете дело с кодом, не DOM, Underscore оказывается очень полезным.
Underscore предоставляет вам хороший набор абстракций.
Underscore возвращается в исходные реализации, если таковые имеются, чтобы убедиться, что производительность, как оптимальным, насколько это возможно.
JavaScript – Array,Function,UnderScore,Lo-Dash Python - itertools, functools,funcy,toolz.fn.py Ruby – Enumerable, ActiveSupport PHP – functional-php, Inderscore.php Clojure – clojure.core Java – FunctionalJava, lambdaj C# - LINQ Objective-C – Underscore.m
встроенные внешние