Это редакционная статья нашего последнего JavaScript-бюллетеня, вы можете подписаться здесь.
Когда вы в последний раз писали код ES6? Недавний опрос разработчиков под названием «Состояние JavaScript» показал, что 74% респондентов уже использовали новый синтаксис и намерены сделать это снова. Еще 21% слышали об этом и заинтересованы в обучении. Версия JavaScript для ES2015 (далее именуемая ES6) уже почти полтора года является официальным стандартом, но кажется, что все еще публикуется множество постов, статей и руководств в блогах, в которых используется старый синтаксис ES5.
На прошлой неделе я провел некоторое время, работая над расширением Chrome. Одна из приятных сторон разработки расширений для Chrome заключается в том, что браузер исправлен, и вы знаете, какие функции поддерживаются. Было принято решение, что расширение будет написано на языке JavaScript со вкусом ES6, что хорошо сработало для меня, поскольку я недавно пытался использовать ES6 в своем коде, когда это возможно, для того, чтобы свободно владеть новым синтаксисом.
Конечно, не только Chrome может запускать ES6 изначально. Поддержка нового стандарта пришла не покладая рук: последние версии основных браузеров для настольных компьютеров соответствуют более чем 90% спецификации (при этом последняя важная функция — оптимизация хвостового вызова). Текущие версии Node 6 и 7 имеют одинаково хорошие уровни поддержки. Конечно, в большинстве случаев мы не можем позволить себе роскошь просто кодировать совместимые браузеры — мы должны поддерживать мобильные браузеры (которые все еще отстают в поддержке ES6) и, естественно, более старые версии IE.
К счастью, нам не нужно отказываться от использования современного JavaScript для поддержки устаревших движков благодаря способности переносить (конвертировать исходный код) в ES5-совместимый код. Это иногда упоминается как причина против принятия ES6 в настоящее время, но я не считаю это убедительным аргументом. Для начала, большинство реальных приложений уже используют какой-то этап сборки; компилирование SASS / Less, объединение модулей или, по крайней мере, объединение файлов. Что еще более важно, похоже, что трансплантация будет с нами в обозримом будущем. Даже когда большинство браузеров пользователей изначально поддерживают ES6, мы, скорее всего, все равно будем использовать эту новейшую и лучшую версию стандарта (ES2020, кто-нибудь?).
На мой взгляд, переход на ES6 стоит только для изменения синтаксиса. Возможно, вы качаете головой, но я думаю, что такие вещи, как функции стрелок , свойства объекта и сокращения методов , параметры по умолчанию и строки шаблонов, действительно могут помочь упростить ваш код. «Это просто синтаксический сахар», — скажете вы. Принимая параметры функции по умолчанию в качестве примера, может потребоваться только дополнительная строка кода, чтобы сделать это в ES5, но каждая дополнительная строка, которую вам не нужно вводить, делает ваш код более кратким и более читабельным. Вы можете сосредоточиться на логике над образцом.
Само собой разумеется, что не все были в восторге от обновлений языка. Вероятно, наиболее спорный вопрос стало введением нового синтаксиса класса , который пытается прототипной природе скрыть в JavaScript позади фасада , что делает его выглядеть более традиционными объектно-ориентированные языки. Критики утверждают, что это заслоняет важные детали того, как на самом деле работает наследование прототипов JavaScript, в то время как некоторые зашли так далеко, что рекомендуют вообще избегать использования классов в пользу более идиоматических методов, таких как фабричные функции. Лично я думаю, что с какой бы стороной вы ни согласились, это не аргумент, чтобы избежать других преимуществ использования ES6 — брать или оставлять занятия по своему усмотрению.
Итак, когда вы в последний раз писали код ES6? Может быть, вы уже используете его изо дня в день, или, возможно, вы ненавидите новый синтаксис и поклялись избегать его любой ценой? Должны ли мы оставить ES5 здесь в SitePoint и начать публиковать исключительно контент в современном синтаксисе? Я хотел бы услышать ваши мысли, поэтому, пожалуйста, оставьте комментарий или напишите мне свои мысли @sitepointjs