Релиз свободной JavaScript-библиотеки jQuery 1.9

16.01.2013 16:09

Доступен релиз популярной JavaScript-библиотеки jQuery 1.9, используемой на более чем половине из 10 тысяч наиболее посещаемых сайтов в сети. После отказа проекта от практики двойного лицензирования (GPL+MIT) код jQuery теперь распространяется только под лицензией MIT. Большая часть изменений в новой версии связана с проведением чистки кодовой базы и удалением устаревших возможностей. Для обеспечения работы кода, написанного для старых версий jQuery, представлен специальный плагин jQuery Migrate.

Одновременно доступна для тестирования бета-версия jQuery 2.0, функционально полностью эквивалентная jQuery 1.9 на уровне API и отличающаяся прекращением поддержки браузеров Internet Explorer 6, 7 и 8. Поддержка устаревших версий Internet Explorer вынуждала разработчиков использовать множество обходных путей и "хаков", которые в итоге отрицательно влияли на производительность. Удаление устаревшего кода позволило обеспечить более быструю реализацию некоторых функций и примерно на 10% сократить размер библиотеки.

Прекращение поддержки ещё находящегося в обиходе выпуска Internet Explorer 8 связано с тем, что несмотря на существенный прогресс в обработке CSS, реализация DOM API в IE8 оставляет желать лучшего и мало чем отличается от IE6 и IE7, поэтому имеет смысл или прекратить поддержку всех трёх версий или продолжать мучиться с поддержкой устаревшего кода. В обозримом будущем поддержка будет обеспечена для обоих веток jQuery, поэтому выбор версии 1.9 и 2.0 зависит от того готовы ли разработчики web-приложений отказаться от поддержки устаревших версий Internet Explorer. В качестве оптимального варианта предлагается по умолчанию загружать версию jQuery 2.0, но если запрос поступил от пользователя IE выдавать jQuery 1.9.

Из особенностей API jQuery 1.9 и 2.0 можно отметить:

  • Значительная модернизация API и прекращение поддержки устаревших функций, таких как .toggle(function, function, ...), .browser(), .live(), .die() и .sub;
  • Новый опциональный синтаксис метода .css() для формирования на основе произвольного набора имён CSS-свойств готового CSS-объекта с указанием значений данных свойств. Например,
    var dims = $("#box").css([ "width", "height", "backgroundColor" ]);
    вернёт { width: "10px", height: "20px", backgroundColor: "#D00DAD" };
  • Улучшенная поддержка CSS3, учитывающая особенности различных браузеров. Добавлена поддержка селекторов: nth-last-child, :nth-of-type, :nth-last-of-type, :first-of-type, :last-of-type, :only-of-type, :target, :root, :lang;
  • Новый метод .finish() для мгновенного завершения всех находящихся в очереди анимаций для указанного элемента.