Кратко о jQuery
История jQuery января первый анонс о создании библиотеки 26 августа jQuery января jQuery сентября jQuery сентября jQuery UI января jQuery января jQuery 1.4
Популярность jQuery (Google Trends) jquery javascript 1.00 prototype javascript 0.78 dojo javascript 0.22 mootools javascript 0.16 yui javascript 0.12
Кто пользуется jQuery Wikipedia.org Microsoft.com IBM.com Amazon.com StackOverflow.com Bing.com Bit.ly Wordpress.com Mtv.com Whitehouse.gov... Nokia и Microsoft оказывают материальную поддержку проекту и включают в свои продукты. Доля jQuery на сайтах по данным BuiltWidth.com Каждый 5-й сайт использует jQuery
jQuery на каждом третьем сайте с JavaScript по данным BuiltWidth.com
Как работают селекторы Sizzle - открытый движок селекторов (4Кб min+gzip) разбор селекторов справа налево (как в браузерах) div.menu a оптимизации для самых популярных селекторов #id div в jQuery - начиная с элементы возвращаются в порядке следования их в DOM-дереве
Browser sniffing... определение браузера ($.browser) - устаревающий подход парсинг navigator.userAgent либо navigator.appName if ( /mozilla/.test( ua ) && !/compatible/.test( ua ) ) { ret = { browser: "mozilla", version: /rv:([\w.]+)/ }; } [-] неуниверсальный и трудноподерживаемый набор regexp'ов [-] легко подделать заголовок userAgent [-] код необходимо переписывать при выходе новых версий браузеров
... vs Feature Detection определение фич браузера ($.support) - правильный подход (v1.3+) hrefNormalized: a.getAttribute("href") === "/a", opacity: /^0.55$/.test( a.style.opacity ), [+] простой и легкочитаемый код [+] код готов к выходу новых браузеров, поддерживающих тестируемую фичу
Браузеры Safari 3.2, Safari 4 Firefox 2, Firefox 3, Firefox 3.5 IE 6, IE 7, IE 8 Opera Chrome Необходимо ограничить число 100% поддерживаемых браузеров самыми популярными Причина: сложность в тестировании
Тестирование jQuery QUnit (тестовый фреймворк для jQuery) Selenium IDE (функциональное тестирование) Swarm Grid (распределенное тестирование)
Развитие фреймворка Выход jQuery 1.4 в январе 2010 поддержка.live() для событий submit, change, mouseenter, mouseleave, focus и blur улучшена производительность операций над DOM: append, prepend, find, empty, remove, addClass, removeClass, hasClass, attr, css увеличена производительность базовых и самых популярных селекторов, множество оптимизаций Ускорение до 3-х раз
Развитие фреймворка (2) поддержка ECMAScript 5 (декабрь 2009) убраны устаревшие конструкции, добавлена поддержка JSON.parse починено 207 багов (в прошлой версии 97) число тест-кейсов удвоилось (3060 против 1504) Google Closure Compiler vs YUI Compressor (13% выигрыш) проект переехал на git (упрощение приёма патчей)
Внутренние оптимизации
Оптимизация работы с DOM
Результаты сравнения js-фреймворков
Шпаргалка Онлайн-версия документации на одной странице
Шпаргалка Оффлайн-версия (pdf, png) более 5000 скачиваний за первые сутки
Будущее jQuery модульность фреймворка - core.js - attributes.js - css.js - manipulations.js - traversing.js асинхронная подгрузка модулей ( $.require ) фабрика плагинов-виджетов ( $.plugin ) jQuery на мобильных устройствах (iPhone, Palm Pre, Android, Fennec) репозиторий официальных плагинов и полная переделка существющего сайта плагинов
Конец