Odpowiedzi:
Ustawienia wstępne sceny Babel odpowiadają procesowi TC39 i różnym stanom każdej propozycji potencjalnej zmiany języka. Obejmują one wdrożenia i wypełniacze dla wszystkich proponowanych zmian na tym etapie.
Wszystko, co aktualnie Stage-0
jest w grze, to Strawman, a nie ES6. To przyszły Javascript i absolutnie nie jestem pewien, czy kiedykolwiek trafi do jakiejkolwiek oficjalnej specyfikacji ECMAScript.
Proszę nie tylko ustawiać, abystage-0
działało bez zrozumienia konsekwencji, jakie będzie to miało.
Babel Preset, który zawiera tylko funkcje ES6, jest preset-es2015
stage-0
ale w żadnym wypadku nie całkowicie bezpieczne przed zmianą lub nawet całkowitym wycofaniem (zobacz propozycję konstruktora wywołania, która została wycofana po etapie 1). Ale to samo można powiedzieć o każdym etapie innym niż etap 4 (tj. Ukończony).
preset-es2015
z babel-preset-node6
tych dni, jeśli uruchomiony węzeł 6 lub wyższej.
babel-preset-env
który może być skierowany do dowolnego środowiska!
babel-preset-env
ZAMIAST babel-preset-es2015
. babel-preset-es2015
jest prawie przestarzały
Jak w większości rozwinięte w innych odpowiedziach. Etap 4 jest najbardziej stabilny, a etap 0 - najbardziej niebezpieczny. Oto krótkie podsumowanie na wysokim poziomie dla 5 etapów z poprzednich odpowiedzi i dokumentacji. Dodam to, ponieważ kiedy do tego doszedłem, spodziewałem się bardziej szczegółowego wyjaśnienia tego, czym jest każdy etap:
Gotowy do włączenia do standardu ECMAScript, przeszedł testy i będzie częścią następnej wersji
Zawiera pełny tekst specyfikacji i obejmuje wtyczki, które w większości zostały przetestowane i otrzymały opinie. Rozwiązanie jest kompletne, a wszystkie dalsze zmiany oparte są na doświadczeniach wdrożeniowych.
Dalsze wsparcie dla wtyczek zostało ukończone w miarę możliwości. Wymagania w tym zakresie są spełniane głównie po wprowadzeniu jedynie stopniowych zmian. Oczekuje się, że semantyka i interfejs API będą kompletne. Najprawdopodobniej stanie się częścią specyfikacji.
Każdy poziom obejmuje, podczas gdy 4 obejmuje 3, obejmuje 2 i tak dalej ... Mam nadzieję, że to podsumowanie pomoże komuś w przyszłości.
Etapy reprezentują etapy zdefiniowane w procesie TC39, który obejmuje funkcje od szalonych, ale użytecznych pomysłów do zaakceptowanych standardów, takich jak ES6. Proces ten zajmuje trochę czasu, ponieważ każdy przypadek narożny musi zostać przedyskutowany, przemyślany, przetestowany, uzupełniony, przedyskutowany trochę więcej itd. To znaczy, że jest to organ normalizacyjny. Celem jest, aby powiedzenie „ES6” miało pełne i kompletne znaczenie, podobnie jak powiedzenie „ES5”.
W praktyce wymagania twojego projektu mogą wahać się od pozostania do wypróbowanych i wiernych do zabawy z tak wygodnymi, choć mglistymi funkcjami językowymi. Prawdopodobnie chcesz zacząć od tych linków:
Omówienie procesu TC39 : zawiera zgrabny wykres przedstawiający znaczenie poszczególnych etapów i postęp funkcji z etapu na etap. Poniżej znajduje się przegląd TC39.
Aktywne propozycje : Szybki przegląd tego, na jakim etapie znajdują się niektóre propozycje. Zawiera również łącza do propozycji gotowych, nieaktywnych i etapu 0. Dzisiaj, kwiecień 2017, Public Class Fields jest na etapie 2, co oznacza, że jest dokładnie opisany i przydzielono recenzentów, ale nie jest w pełni sprawdzony.
Pakiet ustawień wstępnych Babel dla etapu 3 : Strona wtyczki z linkami do Git i NPM dla wszystkich propozycji etapu 3. Zasadniczo ta wtyczka pobiera kolekcję pakietów, które teoretycznie wypełniają obecne propozycje w TC39 etap 3. W praktyce mogą wystąpić błędy. Możesz również znaleźć podobne. Podobnie prowadzi do stron wtyczek dla etapu 2 i poniżej. Strony te będą zawierać linki do pakietów zawierających zarówno propozycje etapu 3, jak i mniej stabilne propozycje.
Babel Preset 'env' : To ustawienie Babel obsługuje gotowe propozycje, wybierając odpowiednie pakiety potrzebne do obsługi tych funkcji w znanym środowisku. Na przykład lokalny node
plik wykonywalny wymaga mniej wtyczek niż starsza przeglądarka. Można sobie wyobrazić wtyczkę „stage-4”, która obsługuje zatwierdzone przyszłe funkcje.
Podsumowując, z tymi funkcjami w wersji wstępnej wystarczy korzystać, jeśli ich używasz. Jeśli musisz ich użyć, wybierz największą liczbę etapów, która ma to, czego potrzebujesz. Jeśli chcesz po prostu zabawkę z szalonymi funkcjami, aby porozmawiać o chłodnicy wody, przejdź do etapu 0.
To najlepszy punkt wyjścia do zrozumienia. Co to są ustawienia wstępne Babel
Fragment z linku:
Etap 0 - Strawman: tylko pomysł, możliwa wtyczka Babel.
Etap 1 - Propozycja: warto nad tym popracować.
Etap 2 - Projekt: wstępna specyfikacja.
Etap 3 - Kandydat: pełna specyfikacja i wstępne implementacje przeglądarki.
Etap 4 - Zakończony: zostanie dodany do następnego rocznego wydania
Ogólny obraz :
preset
w terminologii Babel nazywa się a . Każdy preset zawiera wtyczki z różnych poziomów ryzyka.preset-0
Oznacza to, że ma wtyczki dla funkcji, które są bardzo eksperymentalne, a zatem istnieje duże ryzyko, że dotrą do ostatecznej specyfikacji. To jak pomysł, który przyszedł do dewelopera, że Javascript powinien mieć określoną funkcję, i wykonał trochę pracy, aby doprowadzić ją do procesu propozycji TC-39.preset-1
Zawiera wtyczki do pomysłów na funkcje zaakceptowane przez TC-39 i uważają, że warto nad tym pracować.preset-2
Wtyczki do funkcji, w przypadku których wstępna wersja robocza jest gotowa dla funkcji. I to trwa ...Może się więc zdarzyć, że funkcja w etapie 0 osiągnęła etap 2 po jakimś czasie, a później pojawi się w następnej wersji Javascript.
Dlatego w każdej wersji tych ustawień Babel można znaleźć inny zestaw wtyczek. Może się również zdarzyć, że funkcja na etapie 0 przeszła pewne zmiany i wprowadziła istotne zmiany w sposobie działania. I osiągnął, powiedzmy, etap 2 z zupełnie innym API. Dlatego programiści muszą się upewnić, że aktualizując te wtyczki, wprowadzają niezbędne zmiany w swoim kodzie.
Pierwotne pytanie brzmi: „Jaka jest różnica między ustawieniem babel-etap-0, ustawieniem-babel-etap-1, ustawieniem-wstępnego-etapu-2-babel i ustawieniem-etapu-3-babel”, dziwne jest, że odpowiedzi skupiają się na „różnicy pomiędzy TC39 etap-0, etap-1 .. terminologia „zostanie głosowana, podczas gdy jedyna odpowiednia (choć nieprecyzyjna) jest głosowana w dół. Cytat ze strony babel:
Ustawienie wstępne Babel to lista wtyczek, którą można udostępniać.
Oficjalne presety Babel Stage śledziły proces TC39 Staging dla nowych propozycji składni w JavaScript.
Każdy preset (np. Stage-3, stage-2, itp.) Zawierał wszystkie wtyczki dla tego konkretnego etapu i te nad nim. Na przykład etap-2 obejmował etap-3 i tak dalej.
Podstawową ideą są „ci nad nim”. Nie odpowiadam na drugą połowę, ponieważ powyższe odpowiedzi są bardzo dobre w tej części.
Mam to. Możecie polecić https://babeljs.io/docs/plugins/preset-stage-0/
Krótko mówiąc, preset-stage-0
zawiera całą funkcjonalność, która preset-stage-1
ma i preset-stage-1
zawiera wszystkie funkcje, które preset-stage-2
ma i tak dalej ...
Niższa cyfra jest silniejsza. W swoim projekcie, jeśli nie chcesz zawracać sobie głowy problemami, po prostu ustaw stage-0
...
stage-0
właściwie jest itd.? Ponieważ mówisz „Niższa cyfra jest silniejsza”, uważam, że nie.
stage
z ES6
, @RGraham zwrócił na to uwagę The Babel Preset which contains only ES6 features is preset-es2015
. Dzięki!
babel-preset-stage-0
zawiera wszystkie wtyczki, od stage-0
do stage-3
. Oznacza to, że chcę wszystkich proponowanych funkcji, bez względu na to, czy mogą to być propozycje, czy nie.
stage-1
? Czy jest to bezpieczne w użyciu? Czystage-1
w przyszłości można wycofać niektóre funkcje i zmienić interfejsy API?