jQuery
| jQuery | |
|---|---|
| Тип | JavaScript-библиотека |
| Разработчик | Джон Резиг |
| Написана на | JavaScript[2] |
| Операционная система | кроссплатформенность |
| Дата выпуска | январь2006 |
| Последняя версия | |
| Репозиторий | github.com/jquery/jquery |
| Лицензия | лицензия MIT |
| Сайт | jquery.com (англ.) |
jQuery ([dʒeɪ kwɪəri]) —набор функций JavaScript, фокусирующийся на взаимодействииJavaScript иHTML. Библиотека jQuery помогает легко получать доступ к любому элементуDOM, обращаться к атрибутам и содержимому элементов DOM, манипулировать ими. Также библиотека jQuery предоставляет удобныйAPI для работы сAJAX. Разработка jQuery ведётся командой добровольцев на пожертвования[3].
История создания
[править |править код]HTML был одной из первых вещей, которуюДжон Резиг освоил, когда он только начал заниматься программированием. Резиг программировал наQBasic, когда один его знакомый показал ему, как создатьвеб-страницу (используя Angelfire), а также основы HTML. Отец подарил ему на Рождество две книги по HTML. Именно тогда, когда он только начал программировать наVisual Basic, HTML ивеб-дизайн очень заинтересовали его.
Но страсть кJavaScript пришла значительно позже, примерно в 2004 году. Тогда Резиг получал степень в области компьютерных наук и работал на полставки в местной фирме Brand Logic. Он занимался дизайном сайта, в котором создавался пользовательскийскроллинг. Джон был разочарован и расстроен, особенно потому, что использовал код других разработчиков, после чего решил серьёзно изучить JavaScript. Изучив, пришёл к выводам, что JavaScript — это простой, но изящный язык, невероятно мощный для решения многих задач. В течение следующей пары лет Джон создал множество различных JavaScript-приложений, прежде чем закончить создание jQuery. Основной целью создания jQuery Резиг видел возможность закодировать многоразовые куски кода, которые позволят упростить JavaScript и использовать их так, чтобы не беспокоиться о кросс-браузерных вопросах. Библиотека была представлена общественности на компьютерной конференцииBarCamp в Нью-Йорке в2006 году.
Возможности
[править |править код]- Движок кросс-браузерных CSS-селекторовSizzle[4], выделившийся в отдельный проект;
- Переход по дереву DOM, включая поддержкуXPath как плагина;
- События;
- Визуальные эффекты;
- AJAX-дополнения;
- JavaScript-плагины.
Философия
[править |править код]Точно так же, какCSS отделяет визуализацию от структуры HTML, JQuery отделяет поведение от структуры HTML. Например, вместо прямого указания на обработчик события нажатия кнопки управление передаётся JQuery, которая идентифицирует кнопки и затем преобразует его в обработчик события клика. Такое разделение поведения и структуры также называется принципомненавязчивого JavaScript.
Библиотека jQuery содержит функциональность, полезную для максимально широкого круга задач. Тем не менее, разработчиками библиотеки не ставилась задача совмещения в jQuery функций, которые подошли бы всюду, поскольку это привело бы к большому коду, бо́льшая часть которого не востребована. Поэтому была реализована архитектура компактного универсального ядра библиотеки и плагинов[5]. Это позволяет собрать для ресурса именно ту JavaScript-функциональность, которая на нём была бы востребована.
Использование
[править |править код]jQuery, как правило, включается в веб-страницу как один внешний JavaScript-файл:
<head><!-- 1-й метод — с локального сервера --><scriptsrc="jquery-3.5.1.min.js"></script><!-- 2-й метод — с сервера jquery.com или другого CDN --><scriptsrc="https://code.jquery.com/jquery-3.5.1.min.js"></script></head>
Вся работа с jQuery ведётся с помощью функции$. Если на сайте применяются другие JavaScript библиотеки, где$ может использоваться для своих нужд, то можно использовать её синоним —jQuery. Второй способ считается более правильным, а чтобы код не получался слишком громоздким, можно писать его следующим образом:
jQuery(function($){// здесь код скрипта, где в $ будет находиться объект, предоставляющий доступ к функциям jQuery})
Работу с jQuery можно разделить на 2 типа:
- Получение jQuery-объекта с помощью функции
$(). Например, передав в неё CSS-селектор, можно получить jQuery-объект всех элементов HTML, попадающих под критерий и далее работать с ними с помощью различных методов jQuery-объекта. В случае, если метод не должен возвращать какого-либо значения, он возвращает ссылку на jQuery объект, что позволяет вести цепочку вызовов методов согласно концепциитекучего интерфейса. - Вызов глобальных методов у объекта
$, например, удобныхитераторов по массиву.
Типичный пример манипуляции сразу несколькими узлами DOM заключается в вызове$ функции со строкой селектораCSS, что возвращает объектjQuery, содержащий некоторое количество элементов HTML-страницы. Эти элементы затем обрабатываются методами jQuery. Например,
$("div.test").add("p.quote").addClass("blue").slideDown("slow");
находит все элементыdiv с классомtest, а также все элементыp с классомquote, и затем добавляет им всем классblue и визуально плавно спускает вниз.Здесь методыadd,addClass иslideDown возвращают ссылку на исходный объект$("div.test"), поэтому возможно вести такую цепочку.
Методы, начинающиеся с$., удобно применять для обработки глобальных объектов. Например:
$.each([1,2,3],function(){document.write(this+1);});
добавит на страницу234.
$.ajax и соответствующие функции позволяют использовать методыAJAX. Например:
$.ajax({type:"POST",url:"some.php",data:{name:'John',location:'Boston'},success:function(msg){alert("Data Saved: "+msg);}});
В этом примере идет обращение к скриптуsome.php с параметрамиname=John&location=Boston, и полученный результат выдается в сообщении посредствомalert().
Пример добавления к элементу обработчика события click с помощью jQuery:
$("a").click(function(){alert("Hello world!");});
В данном случае при нажатии на элемент <a> происходит вызовalert("Hello world!").
Интеграция с другими продуктами
[править |править код]28 сентября 2008 года в официальном блоге jQuery[6] сообщили о том, что компанииMicrosoft иNokia собираются сотрудничать с группой разработчиков. Компания Microsoft собирается интегрировать в свой продуктASP.NET листинги кода и примеры jQuery, а компания Nokia собирается интегрировать jQuery для своих мобильных виджетов.
Команда разработчиков
[править |править код]Работа над библиотекой разделена на 5 групп:
| Команды | Описание | Участники |
|---|---|---|
| Разработка | Несут ответственность за содержание библиотеки (разработка, тестирование, документирование и т. д.). |
|
| Пиар | Ответственные за связь с общественностью. |
|
| jQuery UI | Разработка и поддержкаjQuery UI[7]. |
|
| Plugins | Люди, ответственные за разработку плагинов |
|
| Web дизайнеры | Ответственные за дизайн и поддержку сайта jQuery[9]. |
|
История версий
[править |править код]| Версия | Первая версия | Последнее обновление | Минифицированный размер (КБ) | Дополнительные сведения |
|---|---|---|---|---|
| 1.0 | август 26, 2006 (2006-08-26) | Первый стабильный выпуск | ||
| 1.1 | январь 14, 2007 (2007-01-14) | |||
| 1.2 | сентябрь 10, 2007 (2007-09-10) | 1.2.6 | 54.5 | |
| 1.3 | январь 14, 2009 (2009-01-14) | 1.3.2 | 55.9 | В ядро добавлен движок селекторов Sizzle |
| 1.4 | январь 14, 2010 (2010-01-14) | 1.4.4 | 76.7 | |
| 1.5 | январь 31, 2011 (2011-01-31) | 1.5.2 | 83.9 | Добавлены отложенные вызовы (Deferred), переписан модуль Ajax |
| 1.6 | май 3, 2011 (2011-05-03) | 1.6.4 (сентябрь 12, 2011 (2011-09-12))[10] | 89.5 | Существенно повышена производительность функцийattr() иval() |
| 1.7 | ноябрь 3, 2011 (2011-11-03) | 1.7.2 (март 21, 2012 (2012-03-21))[11] | 92.6 | Новые API для событий:.on() и.off(), старые ещё поддерживаются |
| 1.8 | август 9, 2012 (2012-08-09) | 1.8.3 (ноябрь 13, 2012 (2012-11-13))[12] | 91.4 | Переписан движок Sizzle, улучшена анимация и поддержка$(html, props) |
| 1.9 | январь 15, 2013 (2013-01-15) | 1.9.1 (февраль 4, 2013 (2013-02-04))[13] | 90.5 | Удалены устаревшие интерфейсы и произведена чистка кода |
| 1.10 | май 24, 2013 (2013-05-24) | 1.10.2 (июль 3, 2013 (2013-07-03))[14] | 90.9 | Исправления ошибок, выявленных в ходе тестов веток 1.9 и 2.0 |
| 1.11 | январь 24, 2014 (2014-01-24) | 1.11.3 (апрель 28, 2015 (2015-04-28))[15] | 93.7 | |
| 1.12 | январь 8, 2016 (2016-01-08) | 1.12.4 (май 20, 2016 (2016-05-20))[16] | 94.9 | |
| 2.0 | апрель 18, 2013 (2013-04-18) | 2.0.3 (июль 3, 2013 (2013-07-03)) | 81.7 | Удалена поддержка IE 6–8 ради ускорения и уменьшения размера файла |
| 2.1 | январь 24, 2014 (2014-01-24) | 2.1.4 (апрель 28, 2015 (2015-04-28)) | 82.4 | |
| 2.2 | январь 8, 2016 (2016-01-08) | 2.2.4 (май 20, 2016 (2016-05-20)) | 83.6 | |
| 3.0 | июнь 9, 2016 (2016-06-09)[17] | 3.0.0 (июнь 9, 2016 (2016-06-09)) | 84.3 | Поддержка Promises/A+,$.ajax и$.when обновлены,.data() стал совместим с HTML5 |
| 3.1 | июль 7, 2016 (2016-07-07) | 3.1.1 (сентябрь 23, 2016 (2016-09-23)) | 84.7 | ДобавленjQuery.readyException, ошибки обработчиков готовности теперь не игнорируются |
| 3.2 | март 16, 2017 (2017-03-16) | 3.2.1 (март 20, 2017 (2017-03-20)) | 84.6 | Поддержка элементов<template>, объявлено устаревание ряда старых методов |
| 3.3 | январь 19, 2018 (2018-01-19) | 3.3.1 (январь 20, 2018 (2018-01-20)) | 84.9 | Устаревание старых функций, поддержка массивов классов в аргументах функций |
| 3.4 | апрель 10, 2019 (2019-04-10) | 3.4.1 (май 1, 2019 (2019-05-01)) | 86.1 | Оптимизация производительности, поддержка атрибутовnonce иnomodule, исправления ошибок, связанных с радиоэлементами |
| 3.5 | апрель 10, 2020 (2020-04-10) | 3.5.1 (май 4, 2020 (2020-05-04)) | 87.4 | Исправления уязвимостей, методы.even() и.odd(), устареваниеjQuery.trim |
| 3.6 | март 2, 2021 (2021-03-02) | 3.6.4 (март 8, 2023 (2023-03-08)) | 88.2 | Исправления ошибок, корректная обработка JSONP и новых селекторов Chrome |
| 3.7 | май 11, 2023 (2023-05-11) | 3.7.1 (август 28, 2023 (2023-08-28)) | 85.4 | Добавлен метод.uniqueSort(), улучшена производительность, исправлены размеры строк таблиц и обработка фокуса |
| 4.0 | август 11, 2025 (2025-08-11) | 4.0.0-rc.1 (август 11, 2025 (2025-08-11)) | 78.8 | Прекращена поддержка IE 10 и ниже (IE 11 ещё поддерживается), удалены устаревшие API и методы массивов, переработаны события фокуса, добавлена поддержкаFormData, переход на ES-модули |
См. также
[править |править код]Примечания
[править |править код]- ↑Willison T.jQuery 4.0.0 (англ.) — 2026.
- ↑The jquery Open Source Project on Open Hub: Languages Page — 2006.
- ↑The jQuery Team . Дата обращения: 21 августа 2018. Архивировано 19 августа 2018 года.
- ↑Sizzle — движок кросс-браузерных CSS-селекторов . Дата обращения: 22 ноября 2010. Архивировано 18 ноября 2020 года.
- ↑Бер Бибо, Иегуда Кац. 1.3.5 Расширение jQuery // jQuery. Подробное руководство по продвинутому JavaScript = jQuery in Action. —СПб.: Символ-Плюс, 2009. — 384 с. —2000 экз. —ISBN 978-5-93286-135-6, 5-93286-135-5, 1-933988-35-5.
- ↑Официальный блог jQuery . Архивировано изоригинала 6 августа 2012 года.
- ↑Официальная страница jQuery UI . Дата обращения: 3 июня 2009. Архивировано изоригинала 29 февраля 2012 года.
- ↑Полный список контрибьюторов jQuery UI . Дата обращения: 3 июня 2009. Архивировано изоригинала 29 февраля 2012 года.
- ↑Официальная страница jQuery . Дата обращения: 3 июня 2009. Архивировано изоригинала 29 февраля 2012 года.
- ↑jQuery 1.6.4 Released . jQuery Blog (12 сентября 2011).
- ↑jQuery 1.7.2 Released . jQuery Blog (21 марта 2012).
- ↑jQuery 1.8.3 Released . jQuery Blog (13 ноября 2012).
- ↑jQuery 1.9.1 Released . jQuery Blog (4 февраля 2013).
- ↑jQuery 1.10.2 and 2.0.3 Released . jQuery Blog (3 июля 2013).
- ↑jQuery 1.11.3 and 2.1.4 Released – iOS Fail-Safe Edition . jQuery Blog (28 апреля 2015).
- ↑jQuery 1.12.4 and 2.2.4 Released . jQuery Blog (20 мая 2016).
- ↑Chesters, James. Long-awaited jQuery 3.0 Brings Slim Build . infoq.com (15 июня 2016). Дата обращения: 28 января 2017.
Литература
[править |править код]- Адам Фримен. jQuery для профессионалов = Pro jQuery. —М.: «Вильямс», 2012. — 960 с. —ISBN 978-5-8459-1799-7.
- Джейсон Ленгсторф. PHP и jQuery для профессионалов = Pro PHP and jQuery. —М.: «Вильямс», 2010. — С. 352. —ISBN 978-5-8459-1693-8.
- Самков Г. jQuery. Сборник рецептов. —СПб.: БХВ-Петербург, 2010. — С. 416. —ISBN 978-5-9775-0495-9.
Ссылки
[править |править код]- Программное обеспечение по алфавиту
- Программное обеспечение, разработанное в 2006 году
- Веб-фреймворки на JavaScript
- AJAX
- Библиотеки JavaScript
- Программное обеспечение с лицензией GNU GPL
- Программное обеспечение с лицензией MIT
- Свободные библиотеки программ
- Свободное программное обеспечение, написанное на JavaScript
- Страницы, использующие устаревший тег source
- Википедия:Cite web (не указан язык)
- Википедия:Cite web (заменить webcitation-архив: deadlink yes)
- Страницы, использующие волшебные ссылки ISBN
- Википедия:Статьи с источниками из Викиданных
- ПРО:ИТ:Статьи по алфавиту
- ПРО:ИТ:Последняя правка: в прошлом году
- Статьи с примерами кода JavaScript