31-го января команда JQuery объявила о выпуске, точно по графику, версии 1.5 (почти) всеми любимой библиотеки JavaScript.
Чем же версия Jquery 1.5 отличается от 1.4.4, не с проста увеличена мажорная цифра после точки. Напомню, что до этого мы видели лишь релизы 1.4.2,1.4.3,…
AJAX
Самым большим изменением в коде в JQuery 1.5 является полностью переписанный модуль AJAX. Много, что было сделано, но это в основном не влияет на js разработчиков, так как переписаны лишь «внутренности» , а все API осталось прежним. Но есть некоторые значимые моменты, относительно которых стоит быть в курсе.
Первое, все AJAX вызовы (метода $.ajax()) теперь возвращают jqXHR объект, вместо нативного XMLHttpRequest. В первую очередь, функция нового объекта в том, чтобы обернуть браузерные реализации XMLHttpRequest в единую структуру, чтобы дать вам хороший, стандартизированный интерфейс для работы с ним. Но помимо этого, он имеет еще один фантастический трюк в рукаве.
Объект jqXHR реализует новый интерфейс, который называется Отложенный объект (Deferred object ). Отложенный объект является более крутой конструкцией, которая обрабатывает очереди callback функций гораздо чище, чем $.ajax () делал в прошлом. Вы можете добавить столько callback функций, сколько вашей душе угодно, и все они будут помещены в аккуратные очереди, которые выполняются при завершении ajax запроса. Но что, если вы добавите callback функцию после того как ajax запрос уже завершен? Нет проблем. JQuery знает, в чем дело, поэтому он будет просто запускать callback в любом случае по мере необходимости.
Это означает, что вы делаете ваш ajax-вызов, и получите обратно объект jqXHR. Вы можете установить цепочки callback функций на этот объект сразу, например так:
var jqxhr = $.ajax({ url: "primer.php" }) .success(function() { alert("Хорошо, что хорошо кончается!!!"); }) .error(function() { alert("Ошибка отправки!"); });
Вы можете добавить столько callback-ов каждого типа, сколько хотите. Удобно то, что вы можете добавить новые callback-и в любое время, в принципе даже после ajax запроса.
К примеру, добавим к коду выше еще один обработчик неудачного ajax запроса
jqxhr.error(function() { alert("Ты меня кажется не понял!? У меня ошибка =(") });
Если к тому времени, как вы устанавливаете этот обработчик ajax запрос уже отработал и завершился, то ваш обработчик все равно сработает.
Эта новая функциональность полезна и вне сферы ajax: отложенный объект вы можете использовать для любого кода, который требует кучу обратных вызовов для прозрачного управления стеком вызова. Это довольно удобно, если вы не хотите городить огород с функцией в функции, или описать обработчик после самой операции. Для дополнительной информации об использовании отложенных объектов блог JQuery рекомендует этот пост Эрик Хайндс , который предлагает хорошую всестороннее освещение данной темы.
Другие основные дополнения к AJAX API представляет собой набор методов для расширения базовой функциональности. Они будут представлять особый интерес для разработчиков плагинов, но только тех, которые используют методы ajax. Более подробная информация на странице расширенный Ajax в документации JQuery API.
Производительность
JQuery команде удалось также значительно повысить производительность некоторых методов библиотеки обхода DOM дерева, а именно pred(), next (), и children(). Улучшения диапазоне от огромных к гигантским, в зависимости от используемого браузера. Наиболее яркий пример - большинство версий Chrome потратили на обход немногим более тысячи дочерних элементов операцией children() в секунду в JQuery 1.4 и до 20.000 в JQuery 1.5.
Конечно эти тесты не показатель, так как очень многое могло повлиять на производительность, так что если не верите проведите свои тесты, на своих приложениях. Уверен останетесь довольны.
Устраненные ошибки
Конечно кроме больших изменений, релиз JQuery, как и всегда, содержит очень много мелких исправлений ошибок, полный список которых вы можете посмотреть тут
Радость и счастье каждому разработчику!
Ну так что же, мне почему-то думается что недалек тот час, когда JQuery станет непосредственной частью всех браузеров из-под коробки. Уже сейчас подавляющее большинство сайтов использует эту библиотеку. И частые выходы новых релизов только подогревают любовь комьюнити к ней. Желаю и вам полюбить эту библиотеку так, как это сделал я. И ни чуть не жалею уже 3-ий год. Удачного программирования!!!
Комментарии