Cross menu icon

В нашем сегодняшнем обзоре поговорим о том, какими фишками обладает ES9 относительно привычного функционала jQuery для разработчиков.

Разрабатывается ES9 со стороны специального комитета по продвижению возможностей и функционала JavaScript под названием Technical Committee 39 или TC39. Входят в периодически меняющийся состав участников комитета представители крупнейших разработчиков десктопных и мобильных браузеров. Комитет проводит регулярные онлайн-встречи, на которые приглашаются эксперты в области разработки программного обеспечения и мобильных приложений. При этом протоколы проведения собраний можно легко найти в сети, что позволит быть в курсе современных веяний в области использования ES9, его предыдущих версий и особенности работы самого комитета. Важной особенностью работы комитета является принцип консенсуса принимаемых решений — то есть принятие общего решения должно быть одобрено всеми участниками собрания.

Основные этапы выпуска новой версии ES

Начиная с момента выхода ES7 в 2016 году, новые версии выходят практически каждый год. Каждая новая версия ES включает в себя небольшое количество кардинально новых функций и большое количество исправлений того, что было недоработано в предыдущих. Процесс выхода каждой новой версии включает в себя следующие этапы:

  1. Strawman: just an idea или possible Babel plugin. На этом этапе вносятся вообще все идеи, которые могут касаться нововведений в новой версии ES. Представить свою идею или лоббировать нововведение со стороны компании-разработчика может любой участник технического комитета.
  2. Proposal: this is working on worth. На русский язык название этапа можно перевести как «предложение». В процессе первоначального обсуждения выделяются идеи, которые будут реализовываться. Они включаются в рекомендательную документацию для разработки нового функционала. Также в этой документации сразу прорабатываются возможные при реализации идей проблемы, трудности со связями с иным функционалом и другое.
  3. Draft: initial spec. По сути это черновик плана реализации утверждённых для разработки идей. На этой стадии разрабатывается первая черновая версия будущей спецификации рабочего процесса. От окончательного варианта, как правило, он не сильно отличается. После составления черновика обычно добавляются только небольшие изменения, кардинально не влияющие на принятый в работу перечень задач. На этапе черновой работы уже начинается продумывание способов и вариантов реализации поставленных задач. В качестве механизмов реализации используются такие варианты, как polyfill (локальная работа над отдельными заданиями, входящими в черновик) или babel (компиляция с последующим пошаговым преобразованием).
  4. Candidate: initial browser implementations and complete spec. Стадия, на которой налаживается система обратной связи и взаимодействия с пользователем и особенности конкретной реализации проекта вместе со всеми поставленными задачами. После этого будут меняться только детали выполнения работы и проблемы, которые могут возникнуть при использовании результатов работы и её внедрении в жизнь. Также на этом этапе производится реализация работы разработанного сайта хотя бы в одном браузере с учётом особенностей работы polyfill или babel.
  5. Finished: will be added to the next yearly release. После проведения полного спектра работ над идеей, предложенной на первой стадии, появляется 100% вероятность того, что нововведение появится в следующем релизе ES.

Нововведения и фишки, реализованные в ES9

Новые функции, реализованные в версии ES9, выглядят так:

  • итерация асинхронного типа (предложена Кевином Смитом и Домиником Демикола);
  • атрибут «отдых» (реализована после предложения Себастьяна МакБейджа);
  • promise.prototype.finally () (Джордан Харбанд);
  • модификация строки написания шаблона (реализована Тимом Диснеем).

Новые функции, дополняющие уже имеющиеся:

  • RegExp named groups capture (Дэниэл Эренберг и Гёркем Якин);
  • RegExp Unicode Escapes Property (Матиас Биненс);
  • RegExp Lookbehind Assertions (Дэниэл Эренберг, Гёркем Якин и Нозому Като);
  • dotAll flag for regular expressions (Матиас Биненс).

Рассмотрим эти функции немного подробнее:

  1. Асинхронная итерация. Работает обычная синхронная итерация по следующему принципу:

    — объект, проходящий итерацию, легко дублируется с использованием функционала метода Symbol.iterator;
    — объект, заворачиваемый в итератор с использованием метода iterable [Symbol.iterator] (), разделяется на составные части, которые дублируются и возвращаются на исходное с использованием атрибута next;
    — IteratorResult: возвращаемый объект next (). В таком случае атрибут типа done является финальным после true.

    Асинхронная итерация значительно проще в плане реализации и последующей работы. Они включают в себя функции обещания, гарантирующие упрощение рутинных процессов и минимизацию кода в сравнении с механиками jQuery.
  2. Отдых или распространение свойств. Обычно определяется параметром rest, применяемым при написании кода. Фактически функция была введения в 6 версии ES, однако полноценное распространение получила именно в рамках ES9. Дело в том, что в ES6 имелось ограничение массивами, а в 9 версии есть расширенный функционал параметра и операторов для расширения функциональности.
  3. RegExp named groups capture. Использование старого механизма выделения групп с помощью ссылок имеет ряд негативных особенностей:

    — в поиске всех групп, которые нужно захватить, вы потратите море времени и сил, так как каждая должна обязательно заключаться в скобки;
    — для понимания реальной цели создания группы придётся потратить время на поиск и анализ выражения регулярного типа;
    — изменения порядка захватываемых групп требует работы над переписыванием части кода, указывающей на этот список.

    Группу, которую нужно захватить, в ES9 может быть определена одной строчкой кода по имени. Имя в данном случае определяется как атрибут или одна из подходящих переменных. Именованные группы имеют ряд весомых преимуществ:

    — идентификатор группы ищется гораздо проще даже при большом объёме кода;
    — фрагмент кода автоматически становится завершённым, так как идентификатор финально описывает весь процесс;
    — изменение порядка захвата групп не требует переписывания кода, нужно просто поменять блоки местами;
    — имя = назначению группы, что облегчает поиск нужных фрагментов и работу с ними.

Специалисты нашего сервиса, отвечающие за процессы разработки интернет-сайтов и мобильных приложений, сертифицированы официально в плане использования всех функциональных преимуществ ES9 в сравнении со стандартными возможностями jQuery. Готовы предложить вам минимальные сроки и максимальный результат в плане реализации ваших задумок и задач бизнеса путём создания качественного проекта, отвечающего всем требованиям функциональности, эргономичности и безопасности при использовании. Обращайтесь — мы гарантируем неизменно высокое качество нашей работы в минимально возможные сроки и реализацию проекта в мультиплатформенном формате для достижения максимального результата.