Невероятно, но факт: с момента релиза JQuery прошло уже почти восемь лет. Веб-разработка сильно изменилась за эти годы, и JQuery менялась вместе с ней. И всё это время наша команда старалась сохранить безупречный баланс между совместимостью с устаревшим кодом и поддержкой самых современных методов веб-разработки.
Один из лучших способов это сделать — семантическое версионирование (semver). В практическом плане, для разработчиков и инструментов разработки, SemVer дает представление о рисках, связанных с переходом на новую версию программного обеспечения. Номера версий представлены в формате MAJOR.MINOR.PATCH, где каждый из трёх компонентов – целое число. Согласно SemVer, если меняется номер MAJOR, это указывает на существенные изменения API, с которыми разработчикам нужно быть очень осторожными.
Эта концепция версионирования обрастает нюансами, если говорить о jQuery, ведь совместимость с браузерами может быть так же важна, как совместимость API. В попытке создать более изящную jQuery, команда выпустила две версии в 2013 году. Первая осталась в линейке 1.* (сегодня это 1.11.1) и обеспечивает совместимость с максимальным количеством браузеров. Вторая версия, начиная с 2.0.0 и до сегодняшней 2.1.1, исключает поддержку ряда браузеров типа IE8 и ниже, чтобы оптимизировать код. Как 1.*, так и 2.* версии jQuery имеют одинаковый публичный API, хотя в их внутренней реализации есть некоторые различия.
Наши будущие релизы будут использовать другую номенклатуру. Как прежде, речь идет о двух разных пакетах. Преемником сегодняшней версии 1.11.1 будет jQuery Compat 3.0. Преемником jQuery 2.1.1 станет jQuery 3.0. Речь идет о двух разных пакетах на npm и Bower, но при этом они будут иметь одинаковую версию, чтобы обозначить тот факт, что их API одинаков.
Также мы пересматриваем нашу политику поддержки браузеров, начиная с этих релизов. Основной пакет jQuery остаётся компактным и строгим, благодаря поддержке только новых браузеров (текущая и предыдущая версии каждого), распространённых на момент релиза. Возможно, мы включим поддержку дополнительных браузеров на основании долей на рынке. Пакет jQuery Compat предлагает более широкие возможности поддержки браузеров, но за счет большего размера и, потенциально, меньшей производительности.
Несмотря на большую разницу в нумерации версий, мы не ждём серьёзных проблем при миграции с большинства существующих вариантов jQuery. Мы всего лишь хотим соблюсти все правила SemVer относительно версий. Изменения вроде удаления устаревших методов будет определять новая версия плагина jQuery Migrate – для облегчения их поиска и исправления. Мы расскажем чуть больше подробностей об изменениях в следующих постах блога.
Итак, коротко о главном версии 3.0 API jQuery для тех, кто не хочет читать много букв:
- Если вам нужна поддержка максимального количества браузеров, в том числе IE8, Oper 12, Safari 5 и подобных, используйте пакет jQuery Compat 3.0. Мы рекомендуем эту версию для большинства вновь создаваемых сайтов, так как она обеспечивает лучшую совместимость для всех без исключения посетителей.
- Если ваш сайт создан только для новых и популярных браузеров, или вы разрабатываете приложение на HTML для WebView (вроде PhoneGap или Cordova), когда вы знаете, движки каких браузеров будете использовать, — пакет jQuery 3.0.0 подойдет лучше.
- Пока мы не сообщим обратное, оба пакета содержат одинаковый публичный API в соответствующих мажорных и минорных версиях. Это должно облегчить разработчикам переключение между ними и улучшить совместить со сторонними плагинами jQuery.
С каждым будущим релизом, мы будем выкладывать оба пакета на npm и Bower. Оба пакета также будут доступны одним сборочным файлом на jQuery CDN. Использовать их будет просто как дважды два: просто включить jquery-compat-3.0.0 или jquery-3.0.0, в зависимости от необходимости. Мы пообщались с коллегами из Google CDN, и они тоже будут поддерживать оба пакета.
По мере того, как будет идти работа над версией 3.0, мы будем рассказывать детали об изменениях кода, поддержке браузеров и тому подобном. Оставайтесь на связи!
Автор: DreamWalker