jQuery 1.5 готов для использования!

Этот долгожданный релиз вынудил приложить команду разработчиков немалые усилия. Поэтому, огромнейшее им спасибо!

Загрузка


Как правило, предлагается два варианта использования jQuery — минимизированная и распакованная (для отладки и изучения).


Вы можете свободно использовать эти URLы прямо в вашем проекте, тем самым получая все преимущества производительности в связи с быстрой загрузкой jQuery.

Также вы можете загрузить jQuery из Microsoft и Google’s CDNs:

О релизе


В этом выпуске было исправлено 83 ошибок и 460 закрытых тикетов в общем количестве.

Набор тестов (включающий в себя теперь 4437 тестов) выполняется успешно во всех браузерах, на которых работает jQuery. Команда разработчиков уверяет, что тесты успешны в следующих браузерах:
  • Safari 5.0.3 / 4.0.5 / 3.2.3 / 3.1.2
  • Opera 11.01 / 11 / 10.63 / 10.54 / 10.10 / 9.64
  • IE 6 / 7 / 8
  • Firefox 4.0b9 / 3.6.13 / 3.5.11 / 3.0.19 / 2.0.0.20
  • Chrome 8.0.552.215 / 8.0.552.237 / 9.0.597.67 Beta / 10.0.642.2 Dev


Ссылка на новость на офсайте: http://blog.jquery.com/2011/01/31/jquery-15-released/

API-документация традиционно может быть найдена на сайте: jQuery 1.5 API Documentation.

Полное расписание предстоящих выпусков можно найти по ссылке. Сейчас команда планирует делать выпуски мажорных версий jQuery чаще, чем раньше (скажем так, несколько раз в году против ранешнего плана — 1 в год).

Итак, без лишних слов, что же нового в jQuery 1.5?


Полная переработка Ajax

Наибольшее изменение в этом выпуске — это переработка модуля Ajax. Это позволяет исправлять множество дыр, которые имели место в старой версии данного модуля наряду с обеспечением высокого уровня согласованности из API-интерфейсом.

Возможно, наибольшее изменение касается вызова jQuery.ajax (или же jQuery.get, jQuery.post, и т. д.). Теперь результат выполнения этого метода возвращает jXHR-объект, обеспечивающий согласованность с объектом XMLHttpRequest между различными платформами (что позволяет теперь выполнять ранее невозможные задачи в связи с прерыванием запросов JSONP).

Больше информации касательно нового jXHR-объекта можно найти в документации по jQuery.ajax().

В качестве дополнения к более согласованному API, система Ajax также теперь более поддается расширению, тем позволяя присоединять разного рода обработки, фильтры и транспорты. Данные изменения должны дать основу для нового поколения плагинов к Ajax, взаимодействуя с новой реализацией. Больше информации можно найти в документации по расширению Ajax.
Команда активно работает над расширяемостью Ajax API и если вам есть, что сказать — пожалуйста, не стесняйтесь обратиться на форум разработчиков jQuery

Отложенные (deffered) объекты

Наряду с переделанным модулем Ajax также стала доступной новая возможность, так называемая, «Отложенные объекты» (сделана, кстати, на основании Promisess/A, — прим. перев.). Этот API позволяет работать с результирующим набором данных, которого фактически пока не существует (например, полученный результат выполнения асинхронного Ajax-запроса). Это дополнительно предоставляет возможность присоединять несколько обработчиков событий (что ранее не было возможным в предыдущем Ajax API).

Например, следующие операции теперь возможны с новым jQuery Ajax API:

  1. // Присоединить обработчики непосредственно после запроса,
  2. // и запомним jxhr-объект этого запроса
  3. var jxhr = $.ajax({ url: "example.php" })
  4.     .success(function() { alert("успешно"); })
  5.     .error(function() { alert("ошибка"); })
  6.     .complete(function() { alert("выполнено"); });
  7.  
  8. // выполним какую-то работу здесь ...
  9.  
  10. // Определим другую функцию для обработки события complete
  11. jxhr.complete(function(){ alert("выполнено опять"); });


Также вы можете создавать собственные «отложенные объекты» используя jQuery.Deferred. Больше информации вы найдете в документации по Deferred-объектам.

jQuery.sub()

jQuery теперь предоставляет новый способ, благодаря которому вы можете создавать и изменять и клонировать jQuery — делать все, пользуясь полноценным jQuery API. Например, вы можете использовать его для переопределения собственных методов jQuery, фактически не затрагивая методы, с которыми, возможно, работают другие пользователи, или даже создавать инкапсулированные API-интерфейсы для ваших плагинов, что избегает коллизию имен.

Для наглядной демонстрации — пример создания плагина, инкапсулировашего методы, которые не конфликтуют с любым другим плагином:

  1. (function() {
  2.  // Делаем копию jQuery, используя sub()
  3.  var plugin = jQuery.sub();
  4.  
  5.  // Расширим возможности полученной копии с новыми методами плагина
  6.  plugin.fn.extend({
  7.     open: function() {
  8.      return this.show();
  9.     },
  10.     close: function() {
  11.      return this.hide();
  12.     }
  13.  });
  14.  
  15.  // Добавим наш плагин к оригинальной копии jQuery
  16.  jQuery.fn.myplugin = function() {
  17.     this.addClass("plugin");
  18.  
  19.     // Убеждаемся, что наш плагин возвращает нашу "скопированную" версию jQuery
  20.     return plugin( this );
  21.  };
  22. })();
  23.  
  24. $(document).ready(function() {
  25.  // Вызываем плагин, метод open уже существует
  26.  $('#main').myplugin().open();
  27.  
  28.  // Внимание: вызов $("#main").open() не будет работать, поскольку метод open() не существует!
  29. });
* This source code was highlighted with Source Code Highlighter.


Больше информации о jQuery.sub() можно также найти в документации по API.

Производительность смежного перебора элементов

В этом выпуске также было улучшено несколько часто используемых методов: .children(), .prev(), and .next(). Разница в скоростях обработки, которые мы уже можем наблюдать, весьма существенна (возможно, намного быстрее, в зависимости также от браузера).







Тест на производительность или голые цифры

Система сборки


Ну, и, наконец, были сделаны о внутренней системе сборки jQuery. Команда работала в части стандартизации всего процесса сборки касательно отличной JavaScript-среды NodeJS. С их слов, особенно команда довольна уменьшением зависимости от систем Java/Rhino, фокусируя взгляд на среды будущего JavaScript (неуж-то следует ждать server-side реализации jQuery? — прим. перев.).

Вместе с этим также был выполнен переход из Google Closure Compiler на UglifyJS. Также были замечены изменения в лучшую сторону относительно размера файла, в связи с чем разработчики еще более удовлетворены данным переходом.

Ну, и, конечно, команда jQuery и дальше активно всех приглашает содействовать в поддержке в jQuery-ядра.

Пиши меньше, делай больше!

(обновлено)