Сегодня команда jQuery объявила о выпуске точно по расписанию версии 1.5 (почти) любимой всеми библиотеки JavaScript.
Ajax
Самое большое изменение в кодовой базе в jQuery 1.5 — это полная перезапись модуля Ajax. Многое из того, что было сделано, в основном прозрачно для обычных разработчиков, но есть некоторые важные моменты, о которых стоит знать.
Во-первых, все вызовы Ajax (через метод $.ajax()
) теперь возвращают объект jqXHR вместо родного для браузера XMLHttpRequest. Прежде всего, функция нового объекта заключается в том, чтобы обернуть реализации XMLHttpRequest в браузере, чтобы дать вам хороший стандартизированный интерфейс для работы. Но помимо этого у него есть еще один фантастический трюк в рукаве. Объект jqXHR реализует новый интерфейс, называемый отложенным объектом . Отложенный объект — это классная конструкция, которая обрабатывает очереди обратного вызова намного $.ajax()
чем то, что $.ajax()
делал в прошлом Вы можете добавить сколько угодно обратных вызовов к отложенному объекту, и все они будут помещены в аккуратную очередь, которая будет выполнена после завершения вызова Ajax. Но что, если вы добавите больше обратных вызовов после того, как вызов уже завершен? Нет пота. JQuery знает, что случилось, поэтому он все равно будет запускать ваши обратные вызовы, как требуется.
Это означает, что вы делаете Ajax-вызов и возвращаете объект jqXHR. Вы можете сразу же связать ваши обратные вызовы с этим объектом, например так:
var jqxhr = $.ajax({ url: "example.php" }) .success(function() { alert("that went well"); }) .error(function() { alert("ack! an error!"); });
Вы можете добавить в запрос столько колбэков каждого типа, сколько захотите. Более того, поскольку у вас есть этот отложенный объект, вы можете добавить к нему больше обратных вызовов в любое время, потенциально намного позже в своем коде:
jqxhr.error(function() { alert("did you hear me? there was an error!") });
Если к тому времени, когда вы назначите этот дополнительный обратный вызов, запрос уже вернул ошибку, ваш дополнительный код все равно будет запущен.
Эта новая функциональность даже полезна за пределами Ajax: поскольку Deferred является универсальным служебным объектом, вы можете использовать его самостоятельно для любого своего кода, который требует прозрачного управления группой обратных вызовов. Довольно гладко. Чтобы больше узнать об использовании отложенных объектов, в сообщении, опубликованном в блоге jQuery, рекомендуется этот пост Эрика Хиндса , который предлагает хорошее всестороннее освещение этой темы.
Другим важным дополнением к Ajax API является набор методов для расширения базовой функциональности. Они будут представлять особый интерес для разработчиков плагинов, но любой, кто использует больше, чем базовые методы Ajax, может получить что-то от способности делать всевозможные настройки. Проверьте подробности на странице Расширения Ajax в документации по API.
Производительность
Команде jQuery также удалось значительно улучшить производительность нескольких методов обхода DOM библиотеки, а именно prev()
, next()
и children()
. Улучшения варьируются от огромных до массовых, в зависимости от используемого браузера. В качестве наиболее яркого примера, большинство версий Chrome прошли от выполнения чуть более тысячи операций child children()
в секунду в jQuery 1.4 до примерно 20000 в jQuery 1.5.
В сообщении блога анонса есть графики сравнения производительности, поэтому, если вам нравится какой-то вкус глаз (и мы все делаем), обязательно ознакомьтесь с ним.
Исправление ошибок
Конечно, это только большие изменения. Как и в любом основном выпуске библиотеки с открытым исходным кодом, jQuery 1.5 содержит множество исправлений ошибок, которые вы можете просмотреть здесь .
Взломать!
Так что у вас есть это! Еще один год, еще один JQuery. Ознакомьтесь с полными примечаниями к выпуску для более подробного описания того, что нового, затем запустите выбранный вами редактор и начните использовать его в своих проектах. Удачного кодирования!