Просматривая веб-сайт Babel вчера, я увидел новую статью в его блоге, в которой говорилось, что Babel выпустил новый код для поддержки частных свойств и методов класса.
Это действительно сбивает меня с толку, где я могу узнать о последних спецификациях? И поддерживаются ли эти спецификации? Насколько это поддерживается? Совершенно без понятия.
С момента выпуска спецификации ES6 она принесла много новых функций, и пока мы перевариваем этот большой объем знаний, спецификация ES постоянно корректируется и добавляется контент. Однако у нас нет определенного процесса и канала для получения самой свежей информации, которая будет все больше и больше отставать от передовых технологий.
Итак, в конце 2018 года я разобрался с процессом изучения фич ES и терминами, которые будут затронуты в процессе.
Что такое Экма?
С распространением компьютеров в 1960-х годах разные производители разрабатывали программное обеспечение, используя свои собственные стандарты, что усложняло написание языков для этих разных устройств.
Для того чтобы унифицировать некоторые стандарты в компьютерной сфере, известные в Европе производители компьютеров решили создать в городе ассоциацию для формулирования положений и правил.Эта ассоциация называется «Европейская ассоциация производителей компьютеров» (European Computer Manufacturers Association). как "ЭКМА"
В 1994 году, чтобы отразить процесс глобализации, ассоциация изменила свое название на «Европейскую ассоциацию стандартизации информационных и коммуникационных систем» (European Association for Standardization Information and Communication Systems), именуемую «Ecma International», хотя название изменилось. , но по некоторым историческим причинам торговая марка «Экма» сохраняется и используется по сей день.
Что такое ТС39?
Полное название «TC39» — «Технический комитет 39», что переводится как «Технический комитет № 39» и является частью организационной структуры Ecma. Это комитет, отвечающий за итерацию и разработку спецификации языка ECMAScript. В его состав входят представители различных крупных производителей браузеров. Обычно он проводит около 6 встреч в год для обсуждения хода рассмотрения предложений. Одобрение людей, а не можно преодолеть сильную оппозицию.
TC39 в основном отвечает за:
- Поддерживает и обновляет стандарт языка программирования ECMAScript.
- Определите, разработайте и поддерживайте библиотеку расширенных функций для ECMAScript.
- Разработайте набор тестов.
- Предоставляет стандарты для ISO/IEC JTC 1.
- Оцените и рассмотрите новые добавленные технические опции.
Как работает ТС39
ECMAScript потребовалось 6 лет, чтобы перейти от версии ES5 к версии ES6, что принесло две проблемы:
- Даже очень раннее завершение определенной функции, вы должны дождаться до того, как его выпустить его опубликовать.
- Настройка некоторых функций занимает много времени, поэтому она должна быть под большим давлением, прежде чем она будет реализована, потому что, если она не догонит этот релиз, придется долго ждать до следующего релиза.
Поэтому TC39 изменил длительный процесс выпуска в прошлом, начиная с ECMAScript 2016 (ES7), и выпуская версию каждый год, эта версия будет содержать все функции, завершенные в этом году.
Итак, какие функции считать выполненными, а какие можно добавить в повестку дня?
Это требует понимания рабочего процесса TC39, который собирает различные предложения от членов TC39 или не членов, зарегистрированных в качестве участников TC39. Предложения проходят процесс проверки, начиная с этапа 0, и в конечном итоге превращаются в стандарты ECMAScript или отбрасываются. Он будет подробно описан в последующих главах.
Что такое ECMAScript?
ECMAScript — это спецификация для компьютерного языка и спецификация организации Ecma № 262 (Ecma-262).
Теперь мы также используем ESX для обозначения ECMAScript X версии (X для 6, 2016, 2017 и т. Д.).
Javascript — это реализация ECMAScript. Причина использования такого странного способа описания в том, что любой человек или организация могут быть реализованы в соответствии с языком спецификации. Например, Microsoft также разработала в соответствии со стандартом ECMAScript язык под названием JScript, язык, используемый в этом браузере IE.
Но термины Javascript и ECMAScript уже взаимозаменяемы в универсальном контексте, и между ними действительно есть глубокая связь.
В августе 1996 года Microsoft имитировала JavaScript для разработки аналогичного языка под названием JScript (JavaScript является зарегистрированным товарным знаком Netscape, Microsoft не может его использовать), который впервые был встроен в IE 3.0. Netscape сталкивается с потерей доминирующего положения языка сценариев браузера. Netscape решила передать JavaScript в Ecma, надеясь, что JavaScript станет международным стандартом, чтобы противостоять Microsoft.
Причина, по которой он не называется JavaScript в представлении Ecma, связана с отношениями между товарными знаками. Java является товарным знаком корпорации Sun. Согласно лицензионному соглашению, только Netscape может на законных основаниях использовать имя JavaScript, а JavaScript использовался С другой стороны, регистрация товарного знака Netscape также отражает тот факт, что создателем этого языка является Ecma, а не Netscape, что помогает обеспечить открытость и нейтральность этого языка.
ECMAScript® 2018 Language Specification
История языка JavaScript - Учебник по JavaScript - Веб-канал
What is language and what is dialect for computers?
Как называются версии ECMAScript?
В 1997 году Ecma выпустила «Спецификацию языка ECMAScript, издание 1», именуемую «ES1», и каждый последующий выпуск будет добавлять 1 к исходной версии.
ES5 был официально выпущен в 2009 году, а ES5.1 — двумя годами позже.
Прошло еще 6 лет, прежде чем вышел ES6.
Было замечено, что Javascript развивается намного быстрее, чем его спецификация, и как только идея выходит на стадию обсуждения, браузеры пытаются создать прототип этой функции, а сообщество начинает эксперименты по кодированию.
Поэтому было предложено, чтобы будущие выпуски основывались на годе, например ES2016, для обозначения любой спецификации функций, которая была завершена до конца 2016 года.
Хотя ES6 официально переименовали в ES2015, люди привыкли называть его ES6. Однако, начиная с ES6 и более поздних версий спецификации, официально используется метод именования года.
Кроме того, спецификации, которые не были официально выпущены, то есть функции, которые все еще находятся в стадии настройки, называются ESNext.
JavaScript, которого вы не знаете (Том 2) - Сообщество Books-Turing
What is ESNext? Is it same as ECMAScript? - Web, Design, Programming
Каков процесс обновления спецификации для ECMAScript?
Как упоминалось ранее, TC39 будет собирать различные предложения и шаг за шагом включать их в процесс рассмотрения. Всего в процессе 5 этапов, и каждый этап имеет определенные пороги входа и критерии оценки.Нам не нужно заботиться об этих стандартных пунктах.Нам нужно только знать вероятность того,что предложение будет включено в спецификацию по мере его достигает более поздней стадии.
этап-0 - соломенный человек Порога входа в принципе нет, и на эту стадию может выйти любая идея соответствия.
этап-1 - предложение Необходимо определить промоутера предложения. Затем обрисуйте проблему или требование и сформулируйте решение, перечислив используемые методы или API, предоставляемые новым предложением. Обсудите ключевые алгоритмы, концепции и семантику.
этап-2 - Проект Этот этап требует точного описания синтаксиса и семантики с использованием формального языка спецификации.
этап-3 - Кандидат Когда черновик достигает этой стадии, его необходимо доработать и получить отзывы пользователей, а также описать всю семантику, синтаксис и API.
этап-4 - Закончено При входе на этот этап предложение будет протестировано и принято, а после прохождения оно войдет в стандарт для следующей версии спецификации ES.
Каждый июль TC39 официально выпускает спецификацию ES года.
The TC39 process for ECMAScript features
Где отслеживать изменения спецификаций после ES6?
Рад, что ECMAScript охватил сообщество GitHub, развивая себя и возвращая сообществу силу самого сообщества.
TC39 имеет много складов:
- ecma262Репозиторий в основном поддерживает документы спецификации ECMAScript.
- proposalsСклад в основном поддерживает список и ход предложений.
- Есть также множество наборов тестов и некоторые другие спецификации.
Поэтому вернемся к вопросу о главе, если мы хотим отслеживать изменения спецификации после ES6, нам нужно найти ответ в репозитории предложений. Этот репозиторий содержит 4 части, а именно"Список предложений для этапа-0",«Перечень предложений по этапам-1-3»,«Конец (стадия-4) списка предложений»а также«Список неактивных предложений».
Мы можем найти все функции, добавленные после ES6, в окончательном списке предложений, и вот список этих функций и выпущенная версия спецификации:
ЕС2016:
- Array.prototype.includes
- оператор возведения в степень
ES2017
- Object.values / Object.entries
- заполнение строки
- Object.getOwnPropertyDescriptors
- Разрешить запятые в конце для аргументов функции
- Асинхронная функция
- Разделение памяти и атомарные операции
ES2018
- флаг регулярного выражения
- Именование групп захвата в регулярных выражениях
- Разрушение присвоения свойств объекта
- Обратное утверждение регулярного выражения
- Экранирующий символ свойства Unicode регулярного выражения
- Promise.prototype.finally
- асинхронный итератор
В «Конец списка предложений» также содержится некоторые из функций, запланированных для выпуска в 2019 году, поскольку он официально не выпущен, я буду кратко известен в ESNext, не указанном здесь.
Release ES2016 Draft 1 · tc39/ecma262 · GitHub
proposals/finished-proposals.md · tc39/proposals · GitHub
Различия между стандартами ES и реализациями браузера
Быстрое развитие функций также вызвало проблемы у разработчиков JavaScript, новые функции могут сделать написание более эффективного и надежного кода, но наш веб-сайт должен поддерживать старые браузеры, которые не предоставляют эти новые функции. Эта проблема усугубляется в среде, где функции быстро развиваются.
Зеленая часть на рисунке выше — это разница между функцией ECMAScript и функцией, поддерживаемой браузером, которую можно разделить на две части:новый APIа такженовый синтаксис.
Новый API является расширением исходного объекта, например
Array.includes
Это расширение объекта массива. Обычно он решает некоторые исторические проблемы или инкапсулирует общую логику кода.
Например,Object.is()
— это новый интерфейс для проверки того, являются ли два значения строго равными.===
обработкаNaN
а также-0
Существует тонкая двусмысленность, когда такие значенияObject.is()
используется для решения этой проблемы.
NaN === NaN; // false
Object.is(NaN, NaN) // true
Для разницы между функциями спецификации и функциями браузера, предоставляемыми расширением API, обычно существуетpolyfillилиshimрежим плавный. Значения этих двух слов — замазка и прокладка соответственно, что уже может ярко описать их функцию с точки зрения значения слова.
И полифилы могут использовать код ES5 для реализации этих новых API, так же, какObject.is()
Например, для достижения цели можно использовать следующий код:
if (!Object.is) {
Object.is = function(x, y) {
// SameValue algorithm
if (x === y) { // Steps 1-5, 7-10
// Steps 6.b-6.e: +0 != -0
return x !== 0 || 1 / x === 1 / y;
} else {
// Step 6.a: NaN == NaN
return x !== x && y !== y;
}
};
}
Новый синтаксис для таких
let
, является расширением функции. Если вы хотите использовать неподдерживаемый синтаксис в старых браузерах, вы должны использовать технологию «трансформация + компиляция», используя специальные инструменты для преобразования кода в эквивалентный (или приблизительный) код, который может работать в среде ES5.
Компиляция новых синтаксисов ES с помощью Babel будет представлена в последующих главах.
JavaScript, которого вы не знаете (Том 2) - Сообщество Books-Turing
Где я могу проверить совместимость функций ECMAScript в среде выполнения?
Вот сайт, посвященный просмотру таблиц совместимости. Включая браузер, мобильный терминал и серверную часть.
Кратко, вверсия [1]внизособенность [2]существуетКомпилятор или браузер[3]серединаСовместимость[4].
ECMAScript 6 compatibility table
Что такое Вавилон?
Babel — это инструмент компилятора JavaScript, предназначенный для компиляции кода ECMAScript 6+, чтобы сделать его совместимым с браузерами или средами выполнения. Он преобразует синтаксис, дополняет API.
В библейской истории Вавилон переводится как «Вавилонская башня».В то время мир говорил только на одном языке, и люди решили построить башню, которая могла бы достигать неба, чтобы распространить свою репутацию. Бог знал об этом и беспокоился, что люди слишком сильны, поэтому он разрушил человеческий язык, чтобы люди не говорили на одном языке и не соглашались друг с другом. Так человеческий род разделился, и башня больше не строилась.
И этот компилятор заимствует имя Babel, похоже, он хочет помочь людям унифицировать язык Javascript (смеется.
Учитывая его высокую популярность в сообществе, в этой статье описывается не его конкретное использование, а то, как он вписывается в рабочий процесс TC39.
Сегодняшний Babel развился до седьмой основной версии, и разделение обязанностей подфункций, которые он обеспечивает, становится все яснее и яснее.Для разработчиков необходимо заботиться о двух аспектах:
- Как далеко скомпилирован код?
- Насколько хорошо Babel поддерживает новые функции ES?
Обычно безопаснее компилировать код в версию ES5, которая поддерживается большинством браузеров, но увеличивает размер файла скомпилированного кода. Но мы не можем сделать это в 2030 году, и нам не нужно компилировать все функции в ES5, поскольку старые браузеры устаревают.
Седьмая версия этого обновления Babel, представляющая@babel/preset-env
для динамического управления уровнями компиляции. Если вы войдете в этот пакет без каких-либо настроек, код по умолчанию будет скомпилирован в версию ES5.
Главное на этот раз@babel/preset-env
Включена поддержка только официально выпущенной спецификации ES. Если вы хотите использовать либоФункции от стадии 0 до стадии 3 или функции, существующие на стадии 4, но официально не выпущенные в этом году., необходимо установить соответствующий плагин.
Если новые функции реализованы в виде API, их необходимо просмотреть в полифилле, который включает в себя список core-js, конкретно включающий эти API.
Вавилонская башня — Википедия, свободная энциклопедия
GitHub - zloirock/core-js: Standard Library
Как использовать новейшие функции с TC39 и Babel?
Это окончательный обзор этой статьи о том, как опробовать новую функцию.
Что делать, если вы нашли синтаксис JS-кода, которого не видели ни в чужом коде, ни в Интернете?
Сначала вы должны попытаться найти официальное имя этого синтаксиса через поисковую систему. Затем вы можете пойти в Github TC39, чтобы найти его, вы можете найти его в официальном документе ECMA-262 (но этот документ слишком длинный), или вы можете найти его в списке предложений, не пропустите список готовых предложений и Неактивные предложения, и, наконец, вы найдете введение и использование случаев для этого синтаксиса.
Затем вы захотите увидеть, насколько хорошо этот синтаксис поддерживается в разных средах, поэтому вам нужно будет открыть страницу поиска Матрицы совместимости, чтобы найти этот синтаксис.
Затем вы можете попробовать написать вариант использования и запустить его.Затем вам нужно проверить, поддерживает ли список плагинов этот синтаксис на официальном сайте Babel.Если это новый API, вам нужно найти его в core-js список.
Затем вы можете настроить Babel и написать варианты использования, скомпилировать его в код, совместимый с браузером, и запустить его в браузере.
Изучите коллекцию справочных страниц JS
TC39 on GitHub- Аккаунт TC39 на GitHub
ECMAScript® Language Specification- Последняя редакция ECMAScript (документы будут опубликованы в текущем году)
ECMAScript® Language Specification- Последняя официальная версия ECMAScript (опубликована последняя документация)
proposals- Список предложений
ECMAScript 6 compatibility table- Страница запроса таблицы совместимости
@babel/Plugins · Babel- Список плагинов синтаксиса, поддерживаемых Babel
GitHub - zloirock/core-js- Список API, поддерживаемых полифиллом Babel.
Exploring JS- Автор сайта, который изучает JS онлайн, очень хорош
ES.next News- Подписка на новости ES
Написано в январе 2019 года.
Луо Сяо черный написание письма
Если вам понравилась статья, ставьте лайк~ Если вам понравилась статья, поделитесь ею с другими людьми~
существуетНаггетсПодписывайтесь на меня существуеткороткая книгаПодписывайтесь на меня
Бесплатная перепечатка - некоммерческая - не производная - сохранить подпись (Лицензия Creative Commons 3.0) Пожалуйста, сохраняйте исходную ссылку при перепечатке, чтобы обеспечить своевременный доступ к исправлениям и изменениям к статье.
Ежегодный конкурс статей Nuggets | 2018 My Road to Technology Конкурс статей продолжается...