jQuery - достаточно мощный и удобный javascript framework. Последняя версия 1.4.4 имеет размер 179KB для разработчиков и всего-лишь 26KB для использования в production. 26 килобайт кода не много, но в таком сжатом формате разобраться практически не возможно даже с помощью дебаггера. В неупакованный версии разобраться проще, в дебаггере всё выглядит хорошо, но всё-равно все тонкости работы и устройства jQuery проходят мимо нас. В 7180-ти строках javascript-кода даже с помощью средств IDE и не менее мощной комбинации Ctrl+F найти нужный кусок кода не так уж и просто.Что же делать тем, кто хочет разобраться к том, как работает jQuery? Ответ достаточно простой: скачать исходники. Звучит странно и непонятно. В голове возникает вопрос: какие могут быть исходники у библиотеки, написанной на javascript? Под фразой “исходники jQuery” я подразумеваю то, что лежит у них в репозитории http://github.com/jquery/jquery.
Сразу уточню, что описываю я бранч версии 1.4.4. В текуoем master branch (trunk), в котором идёт работа над версией 1.5, переработан модуль ajax, из-за чего все, что к нему относится, вынесено в каталог /src/ajax. Кроме того, разработчики настоятельно не рекомендуют использовать последнюю версию из репозитария для production использования. На момент написания этого поста последняя версия - 1.5pre.
Итак, вернёмся к нашим баранам исходникам. В корне у нас есть следующие 4 каталога, файлы лицензий и файлы для build-систем (make и ant):
- build - файлы, необходимые для сборки;
- speed - тесты на производительность (benchmarks): необходимы для того, чтобы измерить производительность текущей версии, по сравнению со собранной из исходников; если вы не вносили никаких изменений - время выполнения обоих скриптов будет одинаковым;
- test - unit tests (модульные тесты), написанные с помощью qunit;
- src - сами исходники jQuery.
Для сборки необходимы Java 1.6.0 и выше и NodeJS, если вы будете собирать из master branch. Сборка выполняется одним из двух способов: с помощью ant, которому нужно передать в качестве параметра файл build.xml, либо с помощью выполнения команды make, которая доступна во всех *nix-системах. После сборки файлы jquery.js и jquery.min.js будут находится в папке /dist.
Какие же есть преимущества у использования такой версии jQuery? На мой взгляд, стоит выделить такие:
- В исходниках значительно проще разобраться, чем в одном собранном файле. Здесь каждый модуль расположен в отдельном файле (css.js, event.js и т.д.), что даёт возможность быстро и легко узнать как это всё работает. Этот способ и натолкнул меня на этот подход к использованию jQuery и написанию этого поста.
- Есть возможность отключить ненужные/не используемые модули для уменьшения размера итогового файла. Этот подход применяется при скачивании http://jqueryui.com/download с нужными компонентами.
- Можно вносить необходимые для проекта изменения и с помощью тестов убедиться что всё работает. Эти изменения также можно будет предлагать разработчикам jQuery в виде патчей.
- При использовании последней версии вы становитесь бета-тестерами и вносите свой, пусть и небольшой, но всё же вклад в развитие проектов :).
По своему опыту могу сказать, что даже для тестовых приложений использование самых последних исходников приносит достаточно много проблем: иногда это просто не собирается (http://forum.jquery.com/topic/can-t-build-latest-jquery-from-the-git-repository, могут не работать многие плагины, особенно с учетом переработанного в версии 1.5pre модуля ajax. Но при использовании бранча с последнего стабильного релиза, inho, плюсов значительно больше.