Мой вопрос: В чем разница между babel-preset-stage-0
, babel-preset-stage-1
, babel-preset-stage-2
и babel-preset-stage-3
, и что это лучший выбор , когда мы начинаем с ES6
?
ecmascript-6
babel
flyingzl
источник
источник
stage-1
? Насколько безопасно использовать? Могут ли некоторыеstage-1
функции быть устаревшими и изменены API в будущем?stage-0
но отнюдь не полностью безопасным от изменения или даже полного устаревания (см вызов конструктора предложение , которое было снято после того, как 1 этап). Но то же самое можно сказать о любом этапе, кроме этапа 4 (т.е. завершенного).preset-es2015
наbabel-preset-node6
эти дни, если используете Node 6 или лучше.babel-preset-env
который может быть нацелен на любую среду!babel-preset-env
ВМЕСТОbabel-preset-es2015
.babel-preset-es2015
почти устарелоКак в основном описано другими ответами. Этап 4 является наиболее стабильным, а этап 0 - наиболее опасным. Вот небольшая разбивка на высоком уровне для 5 этапов из предыдущих ответов и документации. Я добавляю это, потому что, когда я подошел к этому, я ожидал более подробного разбора того, что представляет собой каждый этап:
Этап 4: Завершено
Готов к включению в стандарт ECMAScript, прошел тестирование и будет частью следующей версии
Этап 3: Кандидат
Включает полный текст спецификации и включает плагины, которые в основном были протестированы и предоставлены с отзывами. Решение готово, и все дальнейшие изменения основаны на опыте внедрения.
Этап 2: Проект
Дальнейшая поддержка плагинов завершена в максимально возможной степени. Требования к ним выполняются в основном с постепенными изменениями. Ожидается, что семантика и api будут полными. Скорее всего, он станет частью спецификации.
Этап 1: Предложение . Концепция, которая была обнаружена и выбрана для изучения на этом этапе, в основном ожидаются полифиллы и демонстрации.
Стадия 0: Strawman Это имя заставило меня усмехнуться: в соответствии с TC-39 у него нет никаких ограничений, но, учитывая контекст, это категория для концепций, которые не были выбраны для дальнейшего изучения или изучения.
Каждый уровень включает в себя, тогда как 4 включает 3 включает 2 и так далее ... Я надеюсь, что это суммирование поможет кому-то в будущем.
источник
Этапы представляют собой этапы, как определено процессом TC39, который превращает функции из сумасшедших, но полезных идей в принятые стандарты, такие как ES6. Процесс занимает некоторое время, так как каждый угловой случай необходимо обсудить, обдумать, протестировать, заполнить полифиллами, еще немного обсудить и т. Д. То есть это орган стандартизации. Цель состоит в том, чтобы сказать «ES6» было полное и законченное значение, так же как и «ES5».
На практике требования к вашему проекту могут варьироваться от использования проверенных и верных до экспериментов с очень удобными, хотя и туманными языковыми функциями. Возможно, вы захотите начать с этих ссылок:
Обзор процесса TC39 : он включает в себя изящную диаграмму того, что означают этапы и как функции переходят от этапа к этапу. Ниже представлен обзор TC39.
Активные предложения : краткий обзор того, на каком этапе находятся определенные предложения. Он также включает ссылки на завершенные, неактивные и нулевые предложения. Сегодня, в апреле 2017 года, поля общедоступных классов находятся на этапе 2, что означает, что они точно описаны и рецензенты назначены, но не полностью проверены.
Предустановленный пакет Babel для этапа 3 : страница плагина со ссылками на Git и NPM для всех предложений этапа 3. По сути, этот подключаемый модуль извлекает набор пакетов, которые теоретически полифицируют текущие предложения на этапе 3 TC39. На практике могут возникать ошибки. Кроме того, вы можете найти аналогичные. Аналогично, это ссылки на страницы плагинов для Этапа 2 и ниже. Эти страницы будут ссылаться на пакеты, включающие как предложения этапа 3, так и менее стабильные предложения.
Предустановка Babel 'env' : эта предустановка Babel поддерживает завершенные предложения, выбирая правильные пакеты, необходимые для поддержки этих функций в известной среде. Например, для локального
node
исполняемого файла требуется меньше подключаемых модулей, чем для более старого браузера. Это может быть плагин "stage-4", который поддерживает утвержденные будущие функции.Таким образом, вам нужно иметь дело с этими предварительными функциями, только если вы их используете. Если вам все же нужно их использовать, выберите наибольшее количество ступеней, на которых есть то, что вам нужно. Если вы просто хотите, чтобы вокруг кулера для воды обсуждалась игрушечная инсталляция с сумасшедшими функциями, возьмите стадию 0.
источник
Это лучшая отправная точка для понимания. Что такое пресеты Babel
Отрывок из ссылки:
Этап 0 - Strawman: только идея, возможный плагин Babel.
Этап 1 - Предложение: над этим стоит поработать.
2 этап - Эскиз: начальная спец.
Этап 3 - Кандидат: полная спецификация и начальные реализации браузера.
Этап 4 - Завершено: будет добавлено в следующий годовой выпуск
Общая картина :
preset
в терминах babel называются a . И каждый пресет содержит плагины с разным уровнем риска.preset-0
Это означает, что у него есть плагины для функций, которые являются очень экспериментальными и, следовательно, имеют высокий риск дойти до окончательной спецификации. Это похоже на идею, которая пришла к разработчику, что в Javascript должна быть определенная функция, и он проделал некоторую работу, чтобы внести ее в процесс предложения TC-39.preset-1
Он содержит плагины для идей, принятых TC-39, и они считают, что над этим стоит поработать.preset-2
Плагины для функций, для которых готов первоначальный черновик. И так продолжается ..Таким образом, может случиться так, что функция на Этапе 0 через некоторое время достигнет Этапа 2 и в конечном итоге появится в следующем выпуске Javascript еще некоторое время спустя.
Следовательно, в каждой версии этих пресетов Babel вы можете найти разные наборы плагинов. Также может случиться так, что функция на этапе 0 претерпела некоторые изменения и внесла критические изменения в то, как она функционирует. И он достиг, скажем, второй стадии с совершенно другим API. Поэтому разработчики должны убедиться, что при обновлении этих плагинов они вносят необходимые изменения в свой код.
источник
Исходный вопрос: «В чем разница между babel-preset-stage-0, babel-preset-stage-1, babel-preset-stage-2 и babel-preset-stage-3». Странно, что ответы сосредоточены на «разнице». между TC39 этап-0, этап-1 .. терминология "проголосовали против, в то время как единственный релевантный (хотя и не точный) был проголосован против. Цитата с сайта Babel:
Основная идея - «те, кто выше». Я не отвечаю на вторую половину, поскольку ответы выше очень хороши по этой части.
источник
У меня есть его. Ребята, вы можете сослаться на https://babeljs.io/docs/plugins/preset-stage-0/
Короче говоря,
preset-stage-0
содержит всю функциональность, котораяpreset-stage-1
есть, иpreset-stage-1
содержит все функции, которыеpreset-stage-2
есть, и так далее ...Младший разряд более мощный. В вашем проекте, если вас не беспокоят проблемы, просто установите
stage-0
...источник
stage-0
самом деле? Поскольку вы говорите: «Нижняя цифра более сильная», я не верю.stage
сES6
, @RGraham указал на этоThe Babel Preset which contains only ES6 features is preset-es2015
. Спасибо!babel-preset-stage-0
включает в себя все плагины, отstage-0
доstage-3
. Это означает, что мне нужны все предлагаемые функции, независимо от того, могут ли они быть внесены в предложение или нет.