SlideShare a Scribd company logo
Носова О.А. гр.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 js
Вы можете использовать Underscore с
применением как объектно-ориентированного
подхода, так и процедурного, в зависимости от
ваших привычек и предпочтений.
Вызвав chain на объекте, с которым собираетесь
работать, вы получите эффект, при котором
каждый последующий метод в цепочке будет
вызван на объекте, возвращённом предыдущим
методом. Чтобы получить результат
отработавших методов, нужно вызвать value.
Underscore js
Давайте предположим, что у вас есть
случайный набор тестов и вам нужен список
тех, у кого 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
встроенные внешние

More Related Content

ODP
PDF
2014-11-01 03 Николай Линкер. Open your clojure
PDF
Объектное и прототипное программирование в Javascript
PDF
11 ns copying, subscripting, fast enumeration
PDF
Ember.js ответ на почти все вопросы - java script frameworks day 2014
PDF
AlgoCollections (RUS)
KEY
Курсы по мобильной разработке. 1 лекция. Знакомство с iOS
PPTX
C#. От основ к эффективному коду
2014-11-01 03 Николай Линкер. Open your clojure
Объектное и прототипное программирование в Javascript
11 ns copying, subscripting, fast enumeration
Ember.js ответ на почти все вопросы - java script frameworks day 2014
AlgoCollections (RUS)
Курсы по мобильной разработке. 1 лекция. Знакомство с iOS
C#. От основ к эффективному коду

What's hot (20)

PPT
Talks on collections
PDF
Школа-студия разработки приложений для iOS. Лекция 1. Objective-C
PPTX
Reactive Extensions
PDF
Хранение данных в iPhone. (FMDB, SQL-Persistence, CoreData)
PPT
Memory managment in i os (1)
PPTX
QA Fest 2015. Иван Пашко. XPath yourself. Tips & Tricks
PDF
12 - Web-технологии. Django модели
PDF
Garbage collector and a bit of memory management
PDF
Дополненная Реальность в Облаке
PPTX
Solit 2014, Реактивный Javascript. Победа над асинхронностью и вложенностью, ...
ODP
Why Every Language Needs Its Underscore
PPT
Основы индексирования и расширенные возможности EXPLAIN в MySQL / Василий Лук...
PDF
PDF
Встреча №9. Алгоритмы и коллекции стандартных библиотек C++, C#, Java, Object...
PDF
11 - Web-технологии. Работа с СУБД
PDF
Scala for android
PPTX
Funny JS #2
PPT
ZFConf 2011: Толстая модель: История разработки собственного ORM (Михаил Шамин)
PPT
Толстая модель. История разработки ORM
PDF
Обзор ES2015(ES6)
Talks on collections
Школа-студия разработки приложений для iOS. Лекция 1. Objective-C
Reactive Extensions
Хранение данных в iPhone. (FMDB, SQL-Persistence, CoreData)
Memory managment in i os (1)
QA Fest 2015. Иван Пашко. XPath yourself. Tips & Tricks
12 - Web-технологии. Django модели
Garbage collector and a bit of memory management
Дополненная Реальность в Облаке
Solit 2014, Реактивный Javascript. Победа над асинхронностью и вложенностью, ...
Why Every Language Needs Its Underscore
Основы индексирования и расширенные возможности EXPLAIN в MySQL / Василий Лук...
Встреча №9. Алгоритмы и коллекции стандартных библиотек C++, C#, Java, Object...
11 - Web-технологии. Работа с СУБД
Scala for android
Funny JS #2
ZFConf 2011: Толстая модель: История разработки собственного ORM (Михаил Шамин)
Толстая модель. История разработки ORM
Обзор ES2015(ES6)
Ad

Similar to Underscore js (20)

PDF
JavaScript. Basics (in russian)
PPTX
Ecma script 6 yevhen diachenko
PDF
JavaScript. Loops and functions (in russian)
PPT
Подробная презентация JavaScript 6 в 1
PPTX
course js day 2
PPT
Подробная презентация JavaScript 6 в 1
PPTX
OOP in JavaScript - Presentation by Eugene Kalosha
PDF
Михаил Давыдов — JavaScript: Базовые знания
PPTX
Javascript 1
PDF
DevConf. Дмитрий Сошников - ECMAScript 6
PDF
Михаил Давыдов - JavaScript. Базовые знания
PDF
Михаил Давыдов - Транспорт, ajax
PDF
Solit 2014, EcmaScript 6 in Action, Трухин Юрий
PDF
Ecma script 6 in action
PPT
Javascript
PPTX
Denys Samoylenko ''JS learning lifehacks: common programmer's mistake''
PDF
Basis.js – «под капотом»
PDF
Стажировка 2016-07-14 02 Евгений Тарасенко. JavaScript
PDF
ECMAScript 6 — будущее JavaScript
PDF
Михаил Давыдов: JavaScript. Базовые знания
JavaScript. Basics (in russian)
Ecma script 6 yevhen diachenko
JavaScript. Loops and functions (in russian)
Подробная презентация JavaScript 6 в 1
course js day 2
Подробная презентация JavaScript 6 в 1
OOP in JavaScript - Presentation by Eugene Kalosha
Михаил Давыдов — JavaScript: Базовые знания
Javascript 1
DevConf. Дмитрий Сошников - ECMAScript 6
Михаил Давыдов - JavaScript. Базовые знания
Михаил Давыдов - Транспорт, ajax
Solit 2014, EcmaScript 6 in Action, Трухин Юрий
Ecma script 6 in action
Javascript
Denys Samoylenko ''JS learning lifehacks: common programmer's mistake''
Basis.js – «под капотом»
Стажировка 2016-07-14 02 Евгений Тарасенко. JavaScript
ECMAScript 6 — будущее JavaScript
Михаил Давыдов: JavaScript. Базовые знания
Ad

Underscore js

  • 2.  Что такое Underscore  Имя библиотеки  Общие сведения  Подключение  Функциональность  Underscore в действии  Нужно ли это на самом деле  Аналоги в JavaScript и др. языках
  • 3. Это библиотека JavaScript, реализующая дополнительную функциональность для работы с массивами, объектами и функциями, изначально отсутствующие в JavaScript, но имеющую аналоги в других языках. Библиотека Underscore сможет облегчить вам процесс разработки, не изменяя встроенных объектов.
  • 4. Дело все в том, что как в JQuery все начинается со знака "$", так и тут все начинается со знака "_", а Underscore с английского как раз таки и переводится как нижнее подчеркивание.
  • 5.  На данный момент Underscore предоставляет более 80 функций.  Среди них есть, те, которые решают более тривиальные задачи: map, select, invoke; но так же и более специфические: биндинг, javascript шаблоны и т.д.  Сама библиотека функционально основана на нативных JavaScript методах, таких как forEach, map, reduce, filter, every, indexOf, что делает её значительно быстрой.
  • 6.  в отличие от Prototype.js, Underscore не модифицирует прототипы встроенных объектов JavaScript. Данная особенность гарантирует бесконфликтность, что позволяет замечательно сочетать этот инструмент с, например, JQuery или Blackbone, или и тем и другим вместе.  Библиотека умеет делегировать вызовы, если какая-то функциональность реализована разработчиками браузеров.
  • 7. Прежде чем мы начнем использовать эту библиотеку, нам нужно ее подключить. Найти библиотеку вы можете на сайте разработчика underscorejs.org. Заметьте, что там же вы можете найти документацию, однако она будет на английском. Если вы хотите прочитать документацию на русском языке, то можете перейти на сайт underscorejs.ru.
  • 8. Подключить Underscore не сложнее любой другой JavaScript-овой библиотеки. Теперь все доступные методы можем вызывать от объекта “_” (подчёркивание).
  • 9. Underscore обеспечивает немногим более 80 функций, которые охватывают целый ряд функциональных возможностей. По своей сути, они могут быть разделены на группы :  Коллекции  Массивы  Объекты  Функции  Утилиты  Цепные вызовы
  • 10.  Коллекцией может быть либо массив или объект, ассоциированный массив в JavaScript, если он семантически правильный.  Underscore предоставляет много методов которые работают на коллекциях.. Вот еще несколько полезных из них:
  • 11.  Pluck Скажем, у вас есть хороший маленький массив, содержащий пары ключ-значение, и вы хотите извлечь только определенное свойство от каждого.
  • 12.  map Cоздает массив из коллекции, где каждый элемент может быть тем или иным образом изменен с помощью функции
  • 13.  All All полезна, если вам нужно проверить каждое значение в коллекции на соответствию критерию. Для того, чтобы проверить, пройден ли тест студентом по каждому предмету, например
  • 14. Underscore имеет кучу функций, которые работают исключительно на массивах, которые в высшей степени приветствуется, поскольку, по сравнению с другими языками, JavaScript предоставляет несколько методов, касающихся массивов
  • 15.  Uniq Этот метод в основном разбирает массив и удаляет все повторяющиеся элементы, предоставляя вам только уникальные элементы.
  • 16.  Range Чрезвычайно удобный метод, который позволяет создать 'диапазон' или список номеров. Давайте посмотрим на простой пример.
  • 17.  Intersection Этот метод сравнивает два массива с каждым другим и возвращает список элементов, которые находятся во всех передаваемых массивов, т.е. пересечение в теории множеств. Давайте расширим предыдущий пример, чтобы увидеть, как это работает
  • 18.  Intersection Легко, не так ли? Вы просто передать в список массивов для сравнения и Underscore делает все остальное
  • 19. В дополнение к довольно ожидаемым проверкам, Underscore предоставляет различные методы для клонирования, расширения и другие манипулировать объектами.
  • 20.  Keys and Values Есть массивный объект, где вам нужно только ключи или только значения? Это легко с underscore.
  • 21.  Defaults Этот метод весьма полезен, когда вам нужно создавать объекты с приемлемыми значениями по умолчанию, когда не могут быть использованы при его создании
  • 22. Underscore имеет функции, которые работают на функциях. Большинство функций, как правило, довольно сложно объяснить здесь, так что мы посмотрим на самый простой.
  • 23.  Bind Связывает функцию с объектом. Это значит, что каждый раз когда она будет вызвана this будет указывать на данный объект. Это особенно полезно , когда вы работаете с обработчиком событий , где this переопределен.
  • 24. Underscore предоставляет массу полезных функций.  Templating Компилирует JavaScript-шаблоны в функции, которые могут быть вызваны для рендеринга этого шаблона. Полезно при рендеринге объёмных и сложных частей HTML-разметки из данных JSON. Полученные функции во время обработки данных могут интерполировать переменные, для чего используется следующий синтаксис внутри шаблона: <%= … %>, а также производить вычисления <% … %>.
  • 26. Вы можете использовать Underscore с применением как объектно-ориентированного подхода, так и процедурного, в зависимости от ваших привычек и предпочтений. Вызвав chain на объекте, с которым собираетесь работать, вы получите эффект, при котором каждый последующий метод в цепочке будет вызван на объекте, возвращённом предыдущим методом. Чтобы получить результат отработавших методов, нужно вызвать value.
  • 28. Давайте предположим, что у вас есть случайный набор тестов и вам нужен список тех, у кого 90+ балла. Вы бы обычно пишут что-то вроде этого:
  • 29. Вы можете подумать, зачем же использовать эту библиотеку, когда есть JQuery? Не стоит их путать. Все дело в том, что в JQuery существует много функций, которые позволяют не беспокоиться, к примеру, с анимациями, а просто вызвать уже готовую. То же самое с Ajax и т.д. Однако эта библиотека не облегчает нам процесс написания кода. Underscore же создана как раз для этого. Давайте рассмотрим некоторые ее возможности на примере.
  • 30. Давайте посмотрим на то, что мы можем достичь c Underscore в следующем: Код стал короче и более читабельным
  • 31.  Все зависит от того, что вы пытаетесь сделать. Если использование JavaScript ограничивается игрой вокруг DOM, то ответ почти нет, так как JQuery делает большинство из того, что вы хотите сделать.
  • 32.  С другой стороны, если вы имеете дело с кодом, не DOM, Underscore оказывается очень полезным.  Underscore предоставляет вам хороший набор абстракций.  Underscore возвращается в исходные реализации, если таковые имеются, чтобы убедиться, что производительность, как оптимальным, насколько это возможно.
  • 33.  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 встроенные внешние