Книга "ES6 и не только" автора Симпсон Кайл - Скачать бесплатно, читать онлайн. Es6 книга


Книга «ES6 и не только» / Блог компании Издательский дом «Питер» / Хабр

Даже если у вас уже есть опыт работы с JavaScript, скорее всего, язык вы в полной мере не знаете. Особое внимание в этой книге уделяется новым функциям, появившимся в Ecmascript 6 (ES6) — последней версии стандарта JavaScript.

ES6 повествует о тонкостях языка, малознакомых большинству работающих на JavaScript программистов. Вооружившись этими знаниями, вы достигнете подлинного мастерства; выучите новый синтаксис; научитесь корректно использовать итераторы, генераторы, модули и классы; сможете более эффективно работать с данными; познакомитесь с новыми API, например Array, Object, Math, Number и String; расширите функционал программ с помощью мета-программирования.

Цели и задачи

Если вы склонны заносить в черный список все, что в JavaScript кажется странным или непонятным (а некоторые привыкли поступать именно так), в какой-то момент от богатого возможностями языка у вас останется лишь пустая оболочка. Такое доступное всем подмножество механизмов JavaScript принято считать сильными сторонами этого языка, но правильнее назвать это легкими в освоении, безопасными или даже минимальными возможностями.

Я (автор) предлагаю вам поступить наоборот: досконально изучить JavaScript, чтобы понять даже самые сложные его особенности. Именно о них пойдет речь в этой книге.

Мне известна склонность JS-разработчиков изучать лишь минимум, необходимый для решения конкретной задачи, но в моей книге вы не встретите распространенной рекомендации избегать сложностей.

Даже если что-то работает нужным мне образом, я не готов удовлетвориться самим этим фактом — мне важно понять, почему и как оно работает. Хотелось бы, чтобы вы разделили мой подход. Я ненавязчиво зову вас пройти по тернистой дороге, которой мало кто ходил, и полностью осмыслить, что представляет собой язык JavaScript и какие возможности он дает. И когда вы будете обладать этими знаниями, ни одна техника, ни одна платформа, ни один новый подход не окажутся за пределами вашего понимания.

Каждая из книг серии You Don’t Know JS глубоко и исчерпывающе раскрывает конкретные ключевые элементы языка, которые зачастую толкуются неверно или поверхностно. После прочтения этой литературы вы получите твердую уверенность в том, что понимаете не только теоретические, но и практические нюансы.

Те познания в JavaScript, что у вас есть, скорее всего, вы получили от людей, которые сами попали в ловушку недостаточного понимания. Это всего лишь тень того, чем JavaScript является на самом деле. Вы еще толком не знаете его, но книги серии You Don’t Know JS помогут вам наверстать упущенное. Поэтому вперед, дорогие друзья, язык JavaScript ждет вас!

ES: современность и будущее

Для чтения этой книги вы должны хорошо владеть языком JavaScript вплоть до последнего (на момент написания книги) стандарта, который называется ES5 (точнее, ES5.1), поскольку мы с вами будем рассматривать новый стандарт ES6, попутно пытаясь понять, какие перспективы ждут JS.

• Up & Going: Вы только начинаете изучать программирование и JS? Перед вами карта, которая поможет вам в путешествии по новой области знаний.

• Scope & Closures: Известно ли вам, что в основе лексического контекста JS лежит семантика компилятора (а не интерпретатора)? Можете ли вы объяснить, каким образом замыкания являются прямым результатом лексической области видимости и функций как значений?

• this & Object Prototypes: Можете ли вы назвать четыре варианта значения ключевого слова this в зависимости от контекста вызова? Приходилось ли вам путаться в псевдоклассах JS, вместо того чтобы воспользоваться более простым шаблоном проектирования behavior delegation? А слышали ли вы когда-нибудь про объекты, связанные с другими объектами (OLOO)?

• Types & Grammar: Знакомы ли вы со встроенными типами в JS и, что более важно, знаете ли способы корректного и безопасного приведения типов? Насколько уверенно вы разбираетесь в нюансах грамматики и синтаксиса этого языка?

• Async & Performance: Вы все еще используете обратные вызовы для управления асинхронными действиями? А можете ли вы объяснить, что такое объект promise и как он позволяет избежать ситуации, когда каждая фоновая операция возвращает свой результат (или ошибку) в обратном вызове? Знаете ли вы, как с помощью генераторов улучшить читабельность асинхронного кода? Наконец, известно ли вам, что представляет собой полноценная оптимизация JS-программ и отдельных операций?

Если вы уже прочитали все эти книги и освоили рассматриваемые там темы, значит, пришло время погрузиться в эволюцию языка JS и исследовать перемены, которые ждут нас как в ближайшее время, так и в отдаленной перспективе.

В отличие от предыдущего стандарта, ES6 нельзя назвать еще одним скромным набором добавленных к языку API. Он принес с собой множество новых синтаксических форм, и к некоторым из них, вполне возможно, будет не так-то просто привыкнуть. Появились также новые структуры и новые вспомогательные модули API для различных типов данных.

ES6 — это шаг далеко вперед. Даже если вы считаете, что хорошо знаете JS стандарта ES5, вы столкнетесь с множеством незнакомых вещей, так что будьте готовы! В книге рассмотрены все основные нововведения ES6, без которых невозможно войти в курс дела, а также дан краткий обзор планируемых функций — о них имеет смысл знать уже сейчас.

Поддержка версий

Стандарт JavaScript официально называется ECMAScript (или сокращенно ES), и до недавнего времени все его версии обозначались только целыми числами. ES1 и ES2 не получили известности и массовой реализации. Первой широко распространившейся основой для JavaScript стал ES3 — стандарт этого языка для браузеров Internet Explorer с 6-й по 8-ю версию и для мобильных браузеров Android 2.x. По политическим причинам, о которых я умолчу, злополучная версия ES4 так и не увидела света.

В 2009 году был официально завершен ES5 (ES5.1 появился в 2011-м), получивший распространение в качестве стандарта для множества современных браузеров, таких как Firefox, Chrome, Opera, Safari и др.

Следующая версия JS (появление которой было перенесено с 2013-го сначала на 2014-й, а затем на 2015 год) в обсуждениях фигурировала под очевидным именем ES6. Но позднее стали поступать предложения перейти к схеме именования, основанной на годе выхода очередной версии, например ES2016 (она же ES7), которая будет закончена до конца 2016 года. Согласны с таким подходом далеко не все, но есть вероятность, что стандарт ES6 станет известен пользователям под названием ES2015. А появление версии ES2016 станет свидетельством окончательного перехода на новую схему именования.

Кроме того, было отмечено, что скорость эволюции JS превышает одну версию в год. Как только в обсуждениях стандарта возникает новая идея, разработчики браузеров предлагают прототипы нового функционала, а программисты-первопроходцы принимаются экспериментировать с кодом.

Обычно задолго до официального одобрения новый функционал становится стандартом де-факто благодаря ранним прототипам движка и инструментария. Соответственно, имеет смысл рассматривать будущие версии JS как связанные с появлением нового функционала, а не с произвольным набором основных особенностей (как делается сейчас) или с годом (как планируется).

В этом случае номер версии перестает иметь ту важность, которой обладал раньше, а JavaScript превращается в живой, постоянно меняющийся стандарт. И лучше не говорить о коде как о «написанном в соответствии с таким-то стандартом», а рассматривать его в зависимости от поддерживаемых функциональных особенностейподдерживаемых функциональных особенностей.

Транскомпиляция

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

По всей видимости, ES5 не прижился во многих местах, потому что в основном базу кода не приводили в соответствие с новым стандартом до тех пор, пока не прекратилась поддержка большинства, если не всех, предшествующих платформ. В результате многие разработчики только недавно начали пользоваться такими вещами, как, к примеру, строгий режим, появившийся в ES5 более пяти лет назад.

Подобные многолетние промедления повсеместно считаются вредными для будущего экосистемы JS. Люди, занимающиеся развитием языка, мечтают, чтобы разработчики начинали создавать код с учетом новых функциональных особенностей и шаблонов, сразу же после того, как будет утверждена спецификация, и браузеры смогут все это реализовывать.

Как же разрешить противоречие? Здесь на помощь приходят специальные инструменты, в частности техника транскомпиляции2. Грубо говоря, вы посредством специального инструмента преобразуете код ES6 в эквивалент (или нечто близкое к таковому), работающий в окружениях ES5.

В качестве примера возьмем сокращенные определения свойства (см. раздел «Расширения объектных литералов» в главе 2). Вот как это делается в ES6:

var    foo = [1,2,3]; var    obj = {     foo     // означает 'foo: foo' };   obj.foo;     // [1,2,3] А вот каким образом (примерно) он транскомпилируется: var    foo = [1,2,3];   var    obj = {     foo: foo }; obj.foo;    // [1,2,3]

Такое небольшое, но удобное преобразование позволяет в случае одинаковых имен сократить объявление объектного литерала foo: foo до foo. Действия транскомпилятора в этом случае представляют собой встроенный рабочий процесс, аналогичный линтингу, минификации и другим подобным операциям.

Библиотеки Shim (полизаполнения)

Далеко не всем новым функциональным особенностям ES6 требуется транскомпилятор. Полизаполнения (polyfills), которые также называют библиотеками Shim, представляют собой шаблоны для определения поведений из новой среды для более старых сред. В синтаксисе полизаполнения недопустимы, но для различных API их вполне можно использовать.

Давайте рассмотрим новый метод Object.is(..), предназначенный для проверки строгой эквивалентности двух значений, но без подробных исключений, которые есть у оператора === для значений NaN и -0. Полизаполнение для метода Object.is(..) создается очень просто:

if (!Object.is) {     Object.is = function(v1, v2) {         // проверка для значения '-0'         if (v1 === 0 && v2 === 0) {             return 1 / v1 === 1 / v2;         }         // проверка для значения 'NaN'         if (v1 !== v1) {             return v2 !== v2;         }         // все остальное         return v1 === v2;     }; }

Есть замечательная коллекция ES6 Shim, которую стоит включать во все новые JS-проекты.

Предполагается, что JS ждет непрерывное развитие и что поддержка в браузерах новых функций будет реализовываться постепенно по мере их появления, а не большими фрагментами. Так что самая лучшая стратегия сохранения актуальности — это добавление в базу кода полизаполнений, включение транскомпиляции в процесс сборки и постоянная готовность самого разработчика к изменениям.

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

Подводим итоги

На момент написания книги стандарт ES6 только появился, поэтому вам предстоит многому научиться. Однако куда важнее перестроить свое мировоззрение в соответствии с новым вариантом развития языка JavaScript. Обыкновение годами ждать официальных документов, одобряющих смену стандарта, должно остаться в прошлом.

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

Вы должны принять новую реальность JavaScript, где разработчикам настоятельно рекомендуется перейти от выжидания к активной позиции. А начнется все с изучения ES6

» Более подробно с книгой можно ознакомиться на сайте издательства » Оглавление » Отрывок

Для Хаброжителей скидка 25% по купону — ES6

habr.com

Перед тем, как вы начнёте

Перед тем, как вы приступите к изучению ES6 и начнете читать данный цикл статей, я настоятельно рекомендую вам ознакомиться с предыдущим стандартом ES5.

Если вы всё ещё не достаточно уверены в своих знаниях, то данные ресурсы помогут вам освоить всё самое необходимое.

Материалы на русском языке:

  1. JavaScript.ru − самый объемный и полный онлайн учебник. Первая часть учебника полностью посвящена стандарту ES и разбору всех синтаксических конструкций.

  2. Выразительный JavaScript − бесплатная книга, полностью переведенная на Хабре. Книга послужит очень прочным фундаментом для дальнейшего изучения JavaScript и подойдет абсолютно для всех − в независимости от вашего уровня подготовки вы обязательно узнаете что-нибудь новое.

  3. JavaScript. Подробное руководство − наиболее полное изложение всех особенностей языка JavaScript, включая стандарт ES5.

  4. JavaScript. Сильные стороны − книга, полностью посвященная лучшим сторонам JavaScript. Перед прочтением рекомендую ознакомиться с докладом Дугласа Крокфорда (автора книги). В докладе кратко излагаются основные идеи, описанные в книге.

  5. Секреты JavaScript ниндзя − книга, написанная создателем jQuery (Джоном Резигом). Вся книга посвящена использованию функционального программирования в JavaScript. Ясное представление того, что JavaScript − язык функционального программирование, отличает мастера от середнячка.

Материалы на английском языке:

Лучшее, что сможете найти для детального изучения всех особенностей JavaScript − серия книг You Don’t Know JS. Все книги бесплатные, подробно и без лишней воды описывают всё, что вы вообще можете захотеть знать о JavaScript, а также сложности и неочевидные моменты, которые часто возникают при изучении JavaScript. Серия содержит книги для людей с разным уровнем подготовки, поэтому рекомендую придержитваться следующего порядка прочтения:

  1. Up & Going − В книге описаны основы JavaScript. Именно на знания полученные из этой книги вы будете опираться в будущем.
  2. Types & Grammar − подробно рассмотрен каждый тип данных и “грамматика” (как работают синтаксические конструкции).
  3. Scope & Closures − области видимости и замыкания.
  4. this & Object Prototypes − ключевое слово this и принципы прототипного наследования (основы объектно-ориентированного программирования).

Проверьте свои знания

Для проверки своих знаний прошлых спецификаций вы можете ответить на следующие вопросы:

  1. Что такое strict mode? Для чего он используется и какие ошибки способен предотвратить?
  2. Чем отличаются операторы == и ===?
  3. В чем отличия null от undefined?
  4. Что такое замыкания (closures)? Как их можно использовать?
  5. Что такое функции высшего порядка?
  6. В чем разница между function declaration и function expression?
  7. Чем отличается метод Object.create() от оператора new?

jsraccoon.ru

ES6 и не только (pdf)

fagus про Тюрин: Чужой среди своих Напоминает раннего П[цензура], только Тюрин лучше описывает и владеет языком. Но содержание - лютый треш. Сотрудник МВД, попав в 1940, думает взять на гоп-стоп инкассатора, потому что привык жить хорошо. :) Через два абзаца он уже думает, как бы предупредить Сталина... И примерно так вся книга (насколько я осилил). Клюква развесиста в каждой детали, Том Клэнси рыдает в уголке. Типичное "ГГ/АМ".ОранжевыйКот про Коробкова: Рай для закалённых (СИ) Ниже уже спойлерили, так что я это дело продолжу. Книга - ерундень с вкраплениями гениальности. Именно эти "вкрапления" держат читателя. Почитайте отзывы ниже, почти все пишут "почему-то дочитал(а)" и употребляют слово "странный" в отношении этой книги. Именно потому, что всплески гениальности чередуются с явной анимэшностью, а то и - периодически - явной безграмотностью. Мне следовало насторожиться, когда я наткнулась на этот "бАрдовый" бич, так свойственный ЙАшкам. А ведь ничто, как говорится, не предвещало, и до этого текст был вполне грамотным и качественным. И так во всём! Например, автор смогла создать действительно оригинальный мир, эдакую необычную утопию-антиутопию (я так и не определилась, что именно в итоге получилось) с совершенно шикарными ироническими приколами вроде "Нашей страны", "Другой страны" и пр.. Именно это я подразумевала под "вкраплениями гениальности", кстати, и в этом сеттинге такой мощный шпионский боевичок можно было бы забабахать! Но нет, автор наддала социальной драмы, а все экшновые моменты опустила и описала только их результат. М-м-м, ну ладно, и такое можно читать. Но если пишешь соц.драму, нужно красиво и достоверно передать отношения между людьми, не так ли? В этом и смысл. А автор тему семьи и семейных отношений слила полностью. Удивительно недостоверно получилось, будто подросток писал, ну или человек редкой душевной чёрствости. Зато в противовес этому сливу с семьёй ГГни, сама Лора удалась автору на отлично - непростая, очень живая, по-настоящему необычная, автор смогла на её примере показать все отличия мышления нового поколения от старого, а это очень здорово, но... почему же автору совсем не удались другие персонажи? Всё вдохновение ушло на ГГ? Жаль. Идём дальше, интрига и загадка, которые имеются в наличии, довольно неплохи, ровно до тех пор, пока автор не решила накрутить на интригу ещё один слой. Как сову на глобус, честно. Бедная сова. Ну и, конечно, концовка. Она окончательно показала, что автор ещё очень молода. Начиная с подсадки Лоре фальшивой личности повествование превращается в бред, а венчает всё вишенка на торте: ГГ просыпается, а у неё нет ног... Но она не унывает, да... Подумаешь, ноги, "они ей никогда не нравились"©. Я как-то общалась с человеком без ног. В больнице, не сразу после ампутации, конечно, а когда он туда после очередных осложнений попал. После получала беседы мне стало дурно, пришлось на воздух выйти, продышаться. А ведь он не ныл и даже не жаловался особо. Но вы, автор, не переживайте, молодость, как и наивность - это такая беда, которая с возрастом проходит. Насчёт чёрствости - не уверена, но хочется надеяться на лучшее. Оценку не ставлю. Писательский потенциал есть и очень мощный, фантазия тоже отличная, но нужен жизненный опыт. (пардон за гигантский отзыв)Xardas про Божок: DZA (Дневник Зомби Апокалипсиса) Представляете, в этой книге чел работающий слесарем и ездящий на Ниве живет в доме где лестницы в подезде моют регулярно, в одно и то же время. Вот где фантастика. Книга, косноязычный бред.Все впечатления

flibusta.site

Книга "ES6 и не только" автора Симпсон Кайл

Последние комментарии

 
 

ES6 и не только

Автор: Симпсон Кайл Жанр: Программы Серия: Бестселлеры O'Reilly Год: 2017 Добавил: Admin 12 Янв 18 Проверил: Admin 12 Янв 18 Формат:  PDF (3517 Kb)

Рейтинг: 0.0/5 (Всего голосов: 0)

Аннотация

Даже если у вас уже есть опыт работы с JavaScript, скорее всего, язык вы в полной мере не знаете. Особое внимание в этой книге уделяется новым функциям, появившимся в Ecmascript 6 (ES6) - последней версии стандарта JavaScript. ES6 повествует о тонкостях языка, малознакомых большинству работающих на JavaScript программистов. Вооружившись этими знаниями, вы достигните подлинного мастерства; выучите новый синтаксис; научитесь корректно использовать итераторы, генераторы, модули и классы; сможете более эффективно работы с данными; познакомитесь с новыми API, например, Array, Object, Math, Number и String; расширите функционал программ с помощью мета-программирования.

Объявления

Где купить?

Нравится книга? Поделись с друзьями!

Другие книги серии "Бестселлеры O'Reilly"

Похожие книги

Комментарии к книге "ES6 и не только"

Комментарий не найдено
Чтобы оставить комментарий или поставить оценку книге Вам нужно зайти на сайт или зарегистрироваться
 

 

2011 - 2018

www.rulit.me

Книга "ES6 и не только" из жанра Программы

Последние комментарии

 
 

ES6 и не только

Автор: Симпсон Кайл Жанр: Программы Серия: Бестселлеры O'Reilly Год: 2017 Добавил: Admin 12 Янв 18 Проверил: Admin 12 Янв 18 Формат:  PDF (3517 Kb)

Рейтинг: 0.0/5 (Всего голосов: 0)

Аннотация

Даже если у вас уже есть опыт работы с JavaScript, скорее всего, язык вы в полной мере не знаете. Особое внимание в этой книге уделяется новым функциям, появившимся в Ecmascript 6 (ES6) - последней версии стандарта JavaScript. ES6 повествует о тонкостях языка, малознакомых большинству работающих на JavaScript программистов. Вооружившись этими знаниями, вы достигните подлинного мастерства; выучите новый синтаксис; научитесь корректно использовать итераторы, генераторы, модули и классы; сможете более эффективно работы с данными; познакомитесь с новыми API, например, Array, Object, Math, Number и String; расширите функционал программ с помощью мета-программирования.

Объявления

Где купить?

Нравится книга? Поделись с друзьями!

Другие книги серии "Бестселлеры O'Reilly"

Похожие книги

Комментарии к книге "ES6 и не только"

Комментарий не найдено
Чтобы оставить комментарий или поставить оценку книге Вам нужно зайти на сайт или зарегистрироваться
 

 

2011 - 2018

www.rulit.me

Книга "ES6 и не только" из серии Бестселлеры O'Reilly

Последние комментарии

 
 

ES6 и не только

Автор: Симпсон Кайл Жанр: Программы Серия: Бестселлеры O'Reilly Год: 2017 Добавил: Admin 12 Янв 18 Проверил: Admin 12 Янв 18 Формат:  PDF (3517 Kb)

Рейтинг: 0.0/5 (Всего голосов: 0)

Аннотация

Даже если у вас уже есть опыт работы с JavaScript, скорее всего, язык вы в полной мере не знаете. Особое внимание в этой книге уделяется новым функциям, появившимся в Ecmascript 6 (ES6) - последней версии стандарта JavaScript. ES6 повествует о тонкостях языка, малознакомых большинству работающих на JavaScript программистов. Вооружившись этими знаниями, вы достигните подлинного мастерства; выучите новый синтаксис; научитесь корректно использовать итераторы, генераторы, модули и классы; сможете более эффективно работы с данными; познакомитесь с новыми API, например, Array, Object, Math, Number и String; расширите функционал программ с помощью мета-программирования.

Объявления

Где купить?

Нравится книга? Поделись с друзьями!

Другие книги серии "Бестселлеры O'Reilly"

Похожие книги

Комментарии к книге "ES6 и не только"

Комментарий не найдено
Чтобы оставить комментарий или поставить оценку книге Вам нужно зайти на сайт или зарегистрироваться
 

 

2011 - 2018

www.rulit.me

Книга «ES6 и не только»

Даже если у вас уже есть опыт работы с JavaScript, скорее всего, язык вы в полной мере не знаете. Особое внимание в этой книге уделяется новым функциям, появившимся в Ecmascript 6 (ES6) — последней версии стандарта JavaScript.

ES6 повествует о тонкостях языка, малознакомых большинству работающих на JavaScript программистов. Вооружившись этими знаниями, вы достигнете подлинного мастерства; выучите новый синтаксис; научитесь корректно использовать итераторы, генераторы, модули и классы; сможете более эффективно работать с данными; познакомитесь с новыми API, например Array, Object, Math, Number и String; расширите функционал программ с помощью мета-программирования.

Цели и задачиЕсли вы склонны заносить в черный список все, что в JavaScript кажется странным или непонятным (а некоторые привыкли поступать именно так), в какой-то момент от богатого возможностями языка у вас останется лишь пустая оболочка.

Такое доступное всем подмножество механизмов JavaScript принято считать сильными сторонами этого языка, но правильнее назвать это легкими в освоении, безопасными или даже минимальными возможностями.

Я (автор) предлагаю вам поступить наоборот: досконально изучить JavaScript, чтобы понять даже самые сложные его особенности. Именно о них пойдет речь в этой книге.

Мне известна склонность JS-разработчиков изучать лишь минимум, необходимый для решения конкретной задачи, но в моей книге вы не встретите распространенной рекомендации избегать сложностей.

Даже если что-то работает нужным мне образом, я не готов удовлетвориться самим этим фактом — мне важно понять, почему и как оно работает. Хотелось бы, чтобы вы разделили мой подход. Я ненавязчиво зову вас пройти по тернистой дороге, которой мало кто ходил, и полностью осмыслить, что представляет собой язык JavaScript и какие возможности он дает. И когда вы будете обладать этими знаниями, ни одна техника, ни одна платформа, ни один новый подход не окажутся за пределами вашего понимания.

Каждая из книг серии You Don’t Know JS глубоко и исчерпывающе раскрывает конкретные ключевые элементы языка, которые зачастую толкуются неверно или поверхностно. После прочтения этой литературы вы получите твердую уверенность в том, что понимаете не только теоретические, но и практические нюансы.

Те познания в JavaScript, что у вас есть, скорее всего, вы получили от людей, которые сами попали в ловушку недостаточного понимания. Это всего лишь тень того, чем JavaScript является на самом деле. Вы еще толком не знаете его, но книги серии You Don’t Know JS помогут вам наверстать упущенное. Поэтому вперед, дорогие друзья, язык JavaScript ждет вас!

ES: современность и будущееДля чтения этой книги вы должны хорошо владеть языком JavaScript вплоть до последнего (на момент написания книги) стандарта, который называется ES5 (точнее, ES5.1), поскольку мы с вами будем рассматривать новый стандарт ES6, попутно пытаясь понять, какие перспективы ждут JS.

• Up & Going: Вы только начинаете изучать программирование и JS? Перед вами карта, которая поможет вам в путешествии по новой области знаний.

• Scope & Closures: Известно ли вам, что в основе лексического контекста JS лежит семантика компилятора (а не интерпретатора)? Можете ли вы объяснить, каким образом замыкания являются прямым результатом лексической области видимости и функций как значений?

• this & Object Prototypes: Можете ли вы назвать четыре варианта значения ключевого слова this в зависимости от контекста вызова? Приходилось ли вам путаться в псевдоклассах JS, вместо того чтобы воспользоваться более простым шаблоном проектирования behavior delegation? А слышали ли вы когда-нибудь про объекты, связанные с другими объектами (OLOO)?

• Types & Grammar: Знакомы ли вы со встроенными типами в JS и, что более важно, знаете ли способы корректного и безопасного приведения типов? Насколько уверенно вы разбираетесь в нюансах грамматики и синтаксиса этого языка?

• Async & Performance: Вы все еще используете обратные вызовы для управления асинхронными действиями? А можете ли вы объяснить, что такое объект promise и как он позволяет избежать ситуации, когда каждая фоновая операция возвращает свой результат (или ошибку) в обратном вызове? Знаете ли вы, как с помощью генераторов улучшить читабельность асинхронного кода? Наконец, известно ли вам, что представляет собой полноценная оптимизация JS-программ и отдельных операций?

Если вы уже прочитали все эти книги и освоили рассматриваемые там темы, значит, пришло время погрузиться в эволюцию языка JS и исследовать перемены, которые ждут нас как в ближайшее время, так и в отдаленной перспективе.

В отличие от предыдущего стандарта, ES6 нельзя назвать еще одним скромным набором добавленных к языку API. Он принес с собой множество новых синтаксических форм, и к некоторым из них, вполне возможно, будет не так-то просто привыкнуть. Появились также новые структуры и новые вспомогательные модули API для различных типов данных.

ES6 — это шаг далеко вперед. Даже если вы считаете, что хорошо знаете JS стандарта ES5, вы столкнетесь с множеством незнакомых вещей, так что будьте готовы! В книге рассмотрены все основные нововведения ES6, без которых невозможно войти в курс дела, а также дан краткий обзор планируемых функций — о них имеет смысл знать уже сейчас.

Поддержка версийСтандарт JavaScript официально называется ECMAScript (или сокращенно ES), и до недавнего времени все его версии обозначались только целыми числами. ES1 и ES2 не получили известности и массовой реализации. Первой широко распространившейся основой для JavaScript стал ES3 — стандарт этого языка для браузеров Internet Explorer с 6-й по 8-ю версию и для мобильных браузеров Android 2.x. По политическим причинам, о которых я умолчу, злополучная версия ES4 так и не увидела света.

В 2009 году был официально завершен ES5 (ES5.1 появился в 2011-м), получивший распространение в качестве стандарта для множества современных браузеров, таких как Firefox, Chrome, Opera, Safari и др.

Следующая версия JS (появление которой было перенесено с 2013-го сначала на 2014-й, а затем на 2015 год) в обсуждениях фигурировала под очевидным именем ES6. Но позднее стали поступать предложения перейти к схеме именования, основанной на годе выхода очередной версии, например ES2016 (она же ES7), которая будет закончена до конца 2016 года. Согласны с таким подходом далеко не все, но есть вероятность, что стандарт ES6 станет известен пользователям под названием ES2015. А появление версии ES2016 станет свидетельством окончательного перехода на новую схему именования.

Кроме того, было отмечено, что скорость эволюции JS превышает одну версию в год. Как только в обсуждениях стандарта возникает новая идея, разработчики браузеров предлагают прототипы нового функционала, а программисты-первопроходцы принимаются экспериментировать с кодом.

Обычно задолго до официального одобрения новый функционал становится стандартом де-факто благодаря ранним прототипам движка и инструментария. Соответственно, имеет смысл рассматривать будущие версии JS как связанные с появлением нового функционала, а не с произвольным набором основных особенностей (как делается сейчас) или с годом (как планируется).

В этом случае номер версии перестает иметь ту важность, которой обладал раньше, а JavaScript превращается в живой, постоянно меняющийся стандарт. И лучше не говорить о коде как о «написанном в соответствии с таким-то стандартом», а рассматривать его в зависимости от поддерживаемых функциональных особенностейподдерживаемых функциональных особенностей.

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

По всей видимости, ES5 не прижился во многих местах, потому что в основном базу кода не приводили в соответствие с новым стандартом до тех пор, пока не прекратилась поддержка большинства, если не всех, предшествующих платформ. В результате многие разработчики только недавно начали пользоваться такими вещами, как, к примеру, строгий режим, появившийся в ES5 более пяти лет назад.

Подобные многолетние промедления повсеместно считаются вредными для будущего экосистемы JS. Люди, занимающиеся развитием языка, мечтают, чтобы разработчики начинали создавать код с учетом новых функциональных особенностей и шаблонов, сразу же после того, как будет утверждена спецификация, и браузеры смогут все это реализовывать.

Как же разрешить противоречие? Здесь на помощь приходят специальные инструменты, в частности техника транскомпиляции2. Грубо говоря, вы посредством специального инструмента преобразуете код ES6 в эквивалент (или нечто близкое к таковому), работающий в окружениях ES5.

В качестве примера возьмем сокращенные определения свойства (см. раздел «Расширения объектных литералов» в главе 2). Вот как это делается в ES6:

var    foo = [1,2,3];var    obj = {    foo     // означает ‘foo: foo’}; obj.foo;     // [1,2,3]А вот каким образом (примерно) он транскомпилируется:var    foo = [1,2,3]; var    obj = {    foo: foo};obj.foo;    // [1,2,3]

Такое небольшое, но удобное преобразование позволяет в случае одинаковых имен сократить объявление объектного литерала foo: foo до foo. Действия транскомпилятора в этом случае представляют собой встроенный рабочий процесс, аналогичный линтингу, минификации и другим подобным операциям.

Библиотеки Shim (полизаполнения)Далеко не всем новым функциональным особенностям ES6 требуется транскомпилятор. Полизаполнения (polyfills), которые также называют библиотеками Shim, представляют собой шаблоны для определения поведений из новой среды для более старых сред. В синтаксисе полизаполнения недопустимы, но для различных API их вполне можно использовать.

Давайте рассмотрим новый метод Object.is(..), предназначенный для проверки строгой эквивалентности двух значений, но без подробных исключений, которые есть у оператора === для значений NaN и -0. Полизаполнение для метода Object.is(..) создается очень просто:

if (!Object.is) {    Object.is = function(v1, v2) {        // проверка для значения ‘-0’        if (v1 === 0 && v2 === 0) {            return 1 / v1 === 1 / v2;        }        // проверка для значения ‘NaN’        if (v1 !== v1) {            return v2 !== v2;        }        // все остальное        return v1 === v2;    };}

Есть замечательная коллекция ES6 Shim, которую стоит включать во все новые JS-проекты.

Предполагается, что JS ждет непрерывное развитие и что поддержка в браузерах новых функций будет реализовываться постепенно по мере их появления, а не большими фрагментами. Так что самая лучшая стратегия сохранения актуальности — это добавление в базу кода полизаполнений, включение транскомпиляции в процесс сборки и постоянная готовность самого разработчика к изменениям.

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

Подводим итогиНа момент написания книги стандарт ES6 только появился, поэтому вам предстоит многому научиться. Однако куда важнее перестроить свое мировоззрение в соответствии с новым вариантом развития языка JavaScript. Обыкновение годами ждать официальных документов, одобряющих смену стандарта, должно остаться в прошлом.

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

Вы должны принять новую реальность JavaScript, где разработчикам настоятельно рекомендуется перейти от выжидания к активной позиции. А начнется все с изучения ES6

» Более подробно с книгой можно ознакомиться на сайте издательства» Оглавление» Отрывок

Для Хаброжителей скидка 25% по купону — ES6По факту оплаты бумажной книги отправляем на e-mail электронные версии книги.

Издательство будет благодарно за обратную связь по поводу целесообразности перевода всей серии книг (или нескольких). Нужно ли издать всю серию? 1. Нужно каждую книгу по отдельности 2. Все в одном томе 3. Не нужно <p>Проголосовало 85 человек. Воздержалось 26 человек.</p> <p>Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.</p>

Источник

www.marketopic.ru