Enterra
Компания
41,23
рейтинг
30 октября 2014 в 13:09

Разработка → jQuery 3.0: будущие поколения перевод



Невероятно, но факт: с момента релиза 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, Opera 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 Dave Methvin
Enterra
рейтинг 41,23
Компания прекратила активность на сайте

Комментарии (11)

  • –26
    Выглядит все круто. Надеюсь, что не будет так же, как с Оперой.
  • +2
    Использую <!--[if lt IE 9]> для загрузки 1.x, для остальных — 2.х
    Сейчас они советуют использовать Compat для большинства проектов, а 3.х только для специфических задач.
    Они как-то скрестят 2.х и 1.х в Compat? Или всё останется по-старому, просто именование изменится?
    • 0
      Сейчас главное число версии означает наличие костылей для старых обозревателей или их осутствие. При этом оба пакета (более-менее) содержат одну и ту же версию API, просто засчёт костылей compat-версия более тяжёлая. Суть данного изменения в том, что они хотят поменять семантику версии с обозначения «совместимость-не совместимость» на обозначение версии API, как это должно быть в семвере. Теперь будет два пакета версии 3 (которые, по факту, имеют один API) и они будут обновляться параллельно.

      3.х только для специфических задач
      Разработка под мобильные обозреватели (при известных целевых платформах) может вестись с модерновым вариантом библиотеки. Если ведётся разработка какого-то модного сервиса для специалистов, или внутренний сервис, когда известно, что ретроградов нет, то тоже можно пользоваться модерновой версией. По-моему сейчас, наоборот, скорее проще сказать когда нужна compat-версия, а в остальных случаях пользоваться модерновой.
      • 0
        Вам так же не приходилось заходить на модерновый сайт со старого livecd с древним браузером.
        Мне кажется, что правильней было бы подгружать разные версии, в зависимости от версии браузера — раз API jQuery одинаковый.
    • 0
      видимо вам не нужно дружить с жоперой по 11.50. там нет defineProperty и из-за этого ломается jq2 bugs.jquery.com/ticket/14032
  • +2
    Главное чтобы про Firefox ESR не забывали. Частая проблема.
  • +2
    > Один из лучших способов это сделать — семантическое версионирование
    Которому jQuery 1.x не следует, между прочим: обратной совместимости в рамках первой мажорной версии не было.
    • +2
      так речь как раз о том, что они сейчас все приводят в соответствие с semver
  • 0
    >>> Речь идет о двух разных пакетах на npm и Bower...
    *Скупая мужская слеза скатилась по небритой щеке разработчика* Ну наконец-то bower будет лежать две версии. Это целое колдовство засунуть в bower_components две версии jQuery с последующим их обновлением в минорных релизах.

    P.S. Если они еще в репозитарий bower jquery-migrate засунут, то будут вообще супер, но насколько я знаю/слышал, у них на это дело табу :-/
    • 0
          "dependencies": {
              "jquery":      "~2.1.0",
              "jquery-1.x":  "jquery#~1.11.0",
      


      Не испытываю никаких проблем
      • 0
        Спасибо большое, и правда простой способ

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.

Самое читаемое Разработка