Какая разница между babel-preset-stage-0, babel-preset-stage-1 и т.д.?

Мой вопрос: в чем разница между babel-preset-stage-0, babel-preset-stage-1, babel-preset-stage-2 и babel-preset-stage-3, и какой лучший выбор, когда мы развиваемся с ES6?

Ответ 1

Предустановки бабельной сцены приравниваются к TC39 Process и различным состояниям каждого предложения для потенциального изменения языка. Они включают в себя реализации и полиполнения для всех предлагаемых изменений на этом этапе.

Все, что в настоящее время находится в Stage-0, это Strawman, не ES6. Это будущий Javascript и абсолютно не уверен, что он когда-либо превратится в какую-либо официальную спецификацию ECMAScript.

Пожалуйста, не просто установите Stage-0, чтобы он работал без понимания последствий, которые это может иметь.

Предустановка Babel, которая содержит только функции ES6, preset-es2015

Ответ 2

Как в основном, разработаны другие ответы. Этап 4 является наиболее стабильным, а этап 0 - наиболее опасным. Вот небольшая разбивка на высоком уровне для 5 этапов из предыдущих ответов и документации. Я добавляю это, потому что, когда я пришел к этому, я ожидал более высокого уровня разбивки того, что представляет собой каждый этап:


Этап 4: Закончено

Готов к включению в стандарт ECMAScript, прошел тестирование и станет частью следующей редакции


Этап 3: Кандидат

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


Этап 2: Черновик

Дальнейшая поддержка плагинов завершена в максимально возможной степени. Требования к ним встречаются в основном только с постепенными изменениями на пути. Семантика и API, как ожидается, будет завершена. Скорее всего, он станет частью спецификации.


Этап 1: Предложение. Концепция, которая была обнаружена и отобрана для изучения на этом этапе, ожидается, что в основном будут многократные заполнения и демонстрации.


Стадия 0: Strawman. Это имя заставило меня посмеяться в соответствии с TC-39, оно вроде не имеет каких-либо ограничений, но с учетом контекста это категория для концепций, которые не были выбраны для дальнейшего изучения или изучения.

Каждый уровень включительно, тогда как 4 включает 3 включает 2 и так далее... Я надеюсь, что это суммирование поможет кому-то в будущем.

Ответ 3

Этапы представляют этапы, определенные в процессе TC39, который работает с безумными, но полезными идеями, в принятые стандарты, такие как ES6. Процесс занимает некоторое время, так как каждый краевой вопрос должен обсуждаться, анализироваться, проверяться, заполняться, обсуждать еще и т.д. То есть, это орган стандартов. Цель состоит в том, что выражение "ES6" будет иметь полный и полный смысл, как говорит "ES5".

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

  • Обзор процесса TC39: включает в себя отличный график того, что означают этапы и как продвигаются функции с этапа на сцену. Ниже приведен обзор TC39.

  • Активные предложения: быстрый обзор того, на каком этапе находятся определенные предложения. Он также включает ссылки на законченные, неактивные, и предложения этапа 0. Сегодня, апрель 2017 года, Public Class Fields находится на этапе 2, то есть он точно описан и рецензенты назначены, но не полностью пересмотрены.

  • Пакет предустановок Babel для этапа 3: Страница подключаемого модуля со ссылками на Git и NPM для всех Предложения 3-го этапа. В принципе, этот подключаемый модуль втягивает коллекцию пакетов, которые, теоретически, polyfill текущие предложения на этапе TC39 3. На практике могут возникать ошибки. Кроме того, вы можете найти похожее аналогично, оно ссылается на страницы подключаемого модуля для Этап 2 и ниже. Эти страницы будут ссылаться на пакеты, которые включают в себя как этапы 3-го предложения, так и менее стабильные предложения.

  • Babel Preset 'env': эта предварительная настройка Babel поддерживает завершенные предложения, выбирая правильные пакеты, необходимые для поддержки этих функций в известном Окружающая среда. Например, локальный исполняемый файл node требует меньше плагинов, чем более старый браузер. Можно подумать о плагине "stage-4", который поддерживает утвержденные функции будущего.

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

Ответ 4

Это лучшая отправная точка для понимания. Что такое предустановки?

Выдержка из ссылки:

Стадия 0 - Strawman: просто идея, возможен плагин Babel.
Этап 1 - Предложение: над этим стоит поработать.
Этап 2 - Черновик: начальная спец.
Этап 3 - Кандидат: полная спецификация и начальная реализация браузера.
Этап 4 - Закончено: будет добавлено к следующему ежегодному выпуску

Общая картина:

  1. Со временем Javascript развивается, и к нему добавляются все новые и новые функции.
  2. Браузеры также должны проделать большую работу, чтобы они могли реализовать эти новые функции для понимания ими. Этот процесс в целом намного медленнее, чем скорость развития Javascript.
  3. Но разработчики хотят использовать новые возможности языка, так как им легче писать, понимать, поддерживать код.
  4. Таким образом, разработчики пишут свой код, используя новые функции Javascript, но прежде чем этот код достигнет браузеров, он проходит процесс сборки, где, используя некоторую магию, весь код с новыми функциями транслируется в код, понятный браузеру. то есть новые функции Javascript, но закодированные с использованием понятных браузером конструкций языка.
  5. Магию сборки можно выполнить с помощью инструментов, одним из которых является Вавилон.
  6. Бабель работает так, что для этого требуется набор плагинов. Каждый из этих плагинов может относиться к преобразованию конкретной новой функции Javscript в понятные браузеру конструкции языка.
  7. Существуют сотни таких плагинов, каждый из которых ссылается на различные новые функции Javascript. Эти функции могут быть или не быть частью окончательной спецификации Javascript. И если это никогда не закончится переходом к финальной спецификации Javascript, ни один из браузеров не будет реализовывать эту функцию. Так что, если какой-либо разработчик использует какую-либо экспериментальную функцию JS с использованием плагина babel, это риск, который он/она берет на себя. Если это никогда не заканчивается в спецификации, эта часть кода всегда должна быть передана до его развертывания в браузерах.
  8. Этот риск подразделяется на различные уровни, чтобы обозначить вероятность того, что какая-либо функция достигнет окончательной спецификации.
  9. Также babel сгруппировала эти плагины в различные наборы, что в терминах babel называется preset. И каждый пресет содержит плагины с различными уровнями риска.
  10. preset-0 Это означает, что у него есть плагины для функций, которые являются очень экспериментальными и, следовательно, с высоким риском выхода на финальную спецификацию. Это похоже на идею, пришедшую к разработчику, о том, что Javascript должен иметь определенную функцию, и он проделал некоторую работу, чтобы получить ее в процессе предложения TC-39.
  11. preset-1 Он содержит плагины для идей об особенностях, принятых TC-39, и они считают, что над этим стоит поработать.
  12. preset-2 Плагины для функций, для которых готов черновик. И это продолжается..

Так что может случиться так, что функция на стадии 0 через некоторое время достигнет стадии 2 и в конечном итоге появится в следующем выпуске Javascript.

Следовательно, с каждой версией этих пресетов Babel вы можете найти в ней различный набор плагинов. Также может случиться, что функция на этапе 0 претерпела некоторые изменения и внесла существенные изменения в ее функционирование. И он достиг, скажем, этапа 2 с совершенно другим API. Поэтому разработчики должны убедиться, что, когда они обновляют эти плагины, они вносят необходимые изменения в свой код.

Ответ 5

Оригинальный вопрос "Какая разница между babel-preset-stage-0, babel-preset-stage-1, babel-preset-stage-2 и babel-preset-stage-3", странно, что ответы фокусируются на "разнице" между TC39, этапом-0, этапом-1.. терминология "получает право голоса, в то время как единственная релевантная (хотя и не точная) является проголосовавшей вниз. Цитировать с сайта Babel:

Предустановка Babel - это общий список плагинов.

Официальные предустановки Babel Stage отслеживали процесс подготовки TC39 для новых предложений синтаксиса в JavaScript.

Каждый пресет (например, stage-3, stage-2 и т.д.) Включал в себя все плагины для этой конкретной стадии и надстройки над ней. Например, этап 2 включает этап 3 и так далее.

Основная идея - "над ней". Я не отвечаю на вторую половину, так как ответы выше очень хороши с этой стороны.

Ответ 6

У меня это есть. Вы, ребята, можете ссылаться https://babeljs.io/docs/plugins/preset-stage-0/

В кратком слове preset-stage-0 содержит все функции, которые preset-stage-1 имеет, а preset-stage-1 содержит все функции, которые имеет preset-stage-2 и т.д....

Более низкая цифра более мощная. В вашем проекте, если вы не станете беспокоиться о проблемах, просто установите stage-0...