Babel-preset-stage-0, babel-preset-stage-1 vb. Arasındaki fark nedir?


126

Sorum şu: arasındaki fark nedir babel-preset-stage-0, babel-preset-stage-1, babel-preset-stage-2ve babel-preset-stage-3, ve biz birlikte geliştirmek en iyi seçenek nedir ES6?

Yanıtlar:


97

Babel'in aşama ön ayarları, TC39 Sürecine ve olası bir dil değişikliği için her teklifin farklı durumlarına eşittir . Bu aşamada önerilen tüm değişiklikler için uygulamaları ve çoklu dolguları içerirler.

Şu anda içinde Stage-0bulunan her şey Strawman'dır, ES6 değil . Gelecekteki bir Javascripttir ve herhangi bir resmi ECMAScript spesifikasyonuna gireceği kesinlikle kesin değildir.

Lütfen bunun getireceği sonuçları anlamadan çalışacak şekilde ayarlamayınstage-0 .

Yalnızca ES6 özelliklerini içeren Babel Ön Ayarı, preset-es2015


3
Peki ya stage-1? Kullanmak için güvenli mi? stage-1Gelecekte bazı özellikler kullanımdan kaldırılıp API'ler değiştirilebilir mi?
notgiorgi

4
@notgiorgi Daha güvenli , stage-0ancak hiçbir şekilde değişiklikten ve hatta tamamen kullanımdan kaldırılmaya karşı tamamen güvenli ( bkz.Aşama 1'den sonra geri çekilen Çağrı oluşturucu önerisi ). Ancak 4. Aşama dışındaki herhangi bir Aşama için de aynı şey söylenebilir (yani Bitti).
CodingIntrigue

Sen değiştirmek isteyebilirsiniz preset-es2015ile babel-preset-node6daha iyi Düğümü 6 veya çalışan eğer, bu günlerde.
Dave Sag

5
Ya da daha iyisi, babel-preset-envherhangi bir ortamı hedef alabilir!
CodingIntrigue

5
Guyz Lütfen babel-preset-envINSTEAD OF kullanın babel-preset-es2015. babel-preset-es2015neredeyse modası geçmiş
vijay

53

Çoğunlukla diğer cevaplarla detaylandırıldığı gibi. 4. Aşama en Kararlıdır ve Aşama 0, en tehlikelidir. İşte önceki cevaplardan ve dokümantasyondan 5 aşama için yüksek düzeyde bir kırılım. Bunu ekliyorum çünkü buna geldiğimde, her bir aşamanın ne olduğuna dair daha üst düzey bir analiz bekliyordum:


4. Aşama: Bitti

ECMAScript Standardına dahil edilmeye hazır, testi geçti ve bir sonraki revizyonun parçası olacak


Aşama 3: Aday

Tam bir özellik metni içerir ve çoğunlukla test edilmiş ve geri bildirimlerle sağlanan eklentileri içerir. Çözüm tamamlandı ve diğer tüm değişiklikler uygulama deneyimine dayanıyor.


Aşama 2: Taslak

Eklentiler için daha fazla destek mümkün olduğunca tamamlandı. Bunların gereksinimleri çoğunlukla yolda yalnızca artan değişikliklerle karşılanmaktadır. Anlambilim ve API'nin tamamlanması bekleniyor. Büyük olasılıkla şartnamenin bir parçası olacak.


Aşama 1: Teklif Bu aşamada keşfedilmiş ve incelenmek üzere seçilen bir kavram çoğunlukla çoklu dolgular ve demolar beklenmektedir.


Aşama 0: Strawman Bu isim, TC-39'a göre beni kıkırdattı, herhangi bir sınırlaması yok, ancak bağlam göz önüne alındığında takip edilmek veya incelenmek üzere seçilmeyen kavramların kategorisidir.

Her seviye kapsayıcıdır, 4, 3'ü 2 içerir vb ... Umarım bu özet gelecekte birine yardımcı olur.


15

Aşamalar, çılgın ama yararlı fikirlerden ES6 gibi kabul edilmiş standartlara kadar özellikleri çalıştıran TC39 süreci tarafından tanımlanan aşamaları temsil eder. Süreç biraz zaman alır, çünkü her köşe vakası tartışılmalı, düşünülmeli, test edilmeli, çoklu doldurulmalı, biraz daha tartışılmalıdır, vb. Yani, standart bir kurumdur. Amaç, "ES5" demek gibi "ES6" demek de tam ve eksiksiz bir anlama sahip olacaktır.

Uygulamada, proje gereksinimleriniz denenmiş ve gerçek olmaktan çok kullanışlı, belirsiz olsa da dil özellikleriyle oynamaya kadar değişebilir. Muhtemelen şu bağlantılarla başlamak istersiniz:

  • TC39 Sürecine Genel Bakış : Bu, aşamaların ne anlama geldiğine ve özelliklerin aşamadan aşamaya nasıl ilerlediğine dair şık bir grafik içerir. Aşağıda TC39'a genel bir bakış bulunmaktadır.

  • Etkin Teklifler : Belirli tekliflerin hangi aşamada olduğuna dair hızlı bir genel bakış. Ayrıca Bitmiş, Etkin Değil ve Aşama 0 tekliflerine bağlantılar da içerir. Bugün, Nisan 2017, Herkese Açık Sınıf Alanları 2. aşamadadır, yani tam olarak tanımlanmıştır ve hakemler atanmıştır, ancak tam olarak incelenmemiştir.

  • Aşama 3 için Babel Hazır Ayar Paketi : Tüm Aşama 3 teklifleri için Git ve NPM bağlantılarının bulunduğu eklenti sayfası. Temel olarak, bu eklenti, teoride, TC39 aşama 3'teki mevcut önerileri çoklu dolduran paketlerin koleksiyonunu çeker. Pratikte, hatalar meydana gelebilir. Ayrıca, benzerini Benzer şekilde bulabilirsiniz, Aşama 2 ve altındaki eklenti sayfalarına bağlanır . Bu sayfalar, hem Aşama 3 tekliflerini hem de daha az kararlı teklifleri içeren paketlere bağlanacaktır.

  • Babel Ön Ayarı 'env' : Bu Babel ön ayarı, bilinen bir ortamda bu özellikleri desteklemek için gereken doğru paketleri seçerek tamamlanmış teklifleri destekler. Örneğin, yerel bir nodeyürütülebilir dosya, eski bir tarayıcıdan daha az eklenti gerektirir. Gelecekteki onaylanmış özellikleri destekleyen 'stage-4' eklentisi düşünülebilir.

Özetle, bu yayın öncesi özellikleri kullanıyorsanız, yalnızca bu ön sürüm özellikleriyle ilgilenmeniz gerekir. Bunları kullanmanız gerekiyorsa, ihtiyacınız olana sahip en yüksek sayıda aşama seçin. Su soğutucunun etrafında tartışmak için sadece çılgın özelliklere sahip bir oyuncak enstalasyonu istiyorsanız, devam edin ve 0. aşamayı alın.


teşekkürler, babel-env bir tür babel-recommanded-configuration
Webwoman

4

Bu, anlaşılması gereken en iyi başlangıç ​​noktasıdır. Babel ön ayarları nelerdir

Bağlantıdan bir alıntı:

Aşama 0 - Strawman: sadece bir fikir, olası Babel eklentisi.
Aşama 1 - Teklif: üzerinde çalışmaya değer.
2. Aşama - Taslak: ilk şartname.
3. Aşama - Aday: tam özellik ve ilk tarayıcı uygulamaları.
4. Aşama - Tamamlandı: sonraki yıllık sürüme eklenecek

Genel Resim :

  1. Zamanla Javascript gelişiyor ve dile daha fazla özellik ekleniyor.
  2. Tarayıcıların da bu yeni özelliklerin kendileri tarafından anlaşılması için uygulayabilmeleri için çok iş yapması gerekir. Bu süreç genel olarak Javascript'in gelişmekte olduğundan çok daha yavaştır.
  3. Ancak geliştiriciler, kodu yazmalarını, anlamalarını ve sürdürmelerini kolaylaştırdığı için dilin yeni özelliklerini kullanmak isterler.
  4. Böylece geliştiriciler kodlarını yeni Javascript özelliklerini kullanarak yazarlar, ancak bu kod tarayıcılara ulaşmadan önce, biraz sihir kullanarak, yeni özelliklere sahip tüm kodun tarayıcı tarafından anlaşılabilir koda dönüştürüldüğü bir oluşturma sürecinden geçer. Örneğin, Javascript'in yeni özellikleri, ancak tarayıcının anlaşılır dil yapıları kullanılarak kodlanmıştır.
  5. Yapı sihri, biri Babel olan aletler kullanılarak gerçekleştirilebilir.
  6. Babel'in çalışma şekli, bir dizi eklenti almasıdır. Bu eklentilerin her biri, Javscript'in belirli bir yeni özelliğini tarayıcının anlaşılır dil yapılarına dönüştürmeye atıfta bulunabilir.
  7. Her biri Javascript'in farklı yeni özelliklerine atıfta bulunan bu tür yüzlerce eklenti vardır. Bu özellikler, nihai Javascript spesifikasyonunun bir parçası olabilir veya olmayabilir. Ve hiçbir zaman nihai Javascript spesifikasyonuna gitmezse, tarayıcıların hiçbiri bu özelliği uygulamayacaktır. Dolayısıyla, herhangi bir geliştirici babel eklentisini kullanarak JS'nin herhangi bir deneysel özelliğini kullanırsa, bu onun aldığı risktir. Hiçbir zaman spesifikasyonda bitmezse, kodun bu bölümünün tarayıcılara dağıtılmadan önce her zaman aktarılması gerekir.
  8. Bu risk, herhangi bir özelliğin nihai spesifikasyona ulaşma şansını belirtmek için çeşitli düzeylere ayrılmıştır.
  9. Ayrıca babel, bu eklentileri çeşitli setler presethalinde gruplamıştır , buna babel'in tabiriyle a denir . Ve her ön ayar, çeşitli risk seviyelerinden eklentiler içerir.
  10. preset-0Bu, çok deneysel olan özellikler için eklentilere sahip olduğu ve dolayısıyla son spesifikasyonlara ulaşma riski yüksek olduğu anlamına gelir. Bu, bir geliştiriciye Javascript'in belirli bir özelliğe sahip olması gerektiği fikrine benziyor ve bunu TC-39 teklif sürecine getirmek için bazı çalışmalar yaptı.
  11. preset-1 TC-39 tarafından kabul edilen özellik fikirleri için eklentileri içerir ve üzerinde çalışmaya değer buluyorlar.
  12. preset-2Özellik için ilk taslağın hazır olduğu özellikler için eklentiler. Ve devam ediyor ..

Yani Aşama 0'daki bir özellik bir süre sonra Aşama 2'ye ulaşabilir ve bir süre sonra Javascript'in sonraki sürümünde yer alabilir.

Dolayısıyla, bu Babel Ön Ayarlarının her bir sürümünde, içinde farklı eklentiler bulabilirsiniz. Aşama 0'daki bir özelliğin bazı değişikliklerden geçmesi ve işleyişinde büyük değişiklikler yapması da olabilir. Tamamen farklı bir API ile aşama 2'ye ulaştı. Bu nedenle geliştiriciler, bu eklentileri güncellediklerinde kodlarında gerekli değişiklikleri yaptıklarından emin olmalıdır.


3

Asıl soru, "babel-preset-stage-0, babel-preset-stage-1, babel-preset-stage-2 ve babel-preset-stage-3 arasındaki fark nedir", odaklanan cevaplar tuhaftır "farkı TC39 arasında aşama-0, aşama-1 .. terminoloji "oylanırken, tek ilgili (doğru olmasa da) olumsuz oylanır. Babel sitesinden alıntı yapmak için:

Babel ön ayarı, paylaşılabilir bir eklenti listesidir.

Resmi Babel Stage ön ayarları, JavaScript'teki yeni sözdizimi önerileri için TC39 Staging sürecini izledi.

Her ön ayar (örn. Aşama-3, aşama-2, vb.) O aşama ve üstündeki tüm eklentileri içeriyordu. Örneğin, aşama-2, aşama-3'ü içeriyordu, vb.

Ana fikir, 'üstlerindekiler'dir. İkinci yarıya cevap vermeyeceğim çünkü yukarıdaki cevaplar o kısımda çok iyi.


-20

Anladım. Https://babeljs.io/docs/plugins/preset-stage-0/ adresine başvurabilirsiniz.

Kısa bir preset-stage-0deyişle preset-stage-1, sahip olan ve preset-stage-1tüm işlevselliği içeren tüm işlevleri içerir preset-stage-2ve benzeri ...

Alt rakam daha güçlüdür. Projenizde, problemlerle uğraşmazsanız, sadece ayarlayın stage-0...


15
Ama stage-0, vb. Gerçekte ne olduğunu anlıyor musunuz? "Alt rakam daha güçlü" dediğinize göre, inanmıyorum.
Felix Kling

2
Aslında, stageile karıştırdım ES6, @RGraham buna işaret etti The Babel Preset which contains only ES6 features is preset-es2015. Teşekkürler!
flyingzl

Daha sonra sorun yaşamak istiyorsanız, aşama 0'ı kullanın! Aşama 0 özelliklerinin bazıları veya tümü, onu ES spesifikasyonuna hiç girmeyebilir. Bu nedenle, aşama 0 özelliklerini kullanmaya dikkat edin.
devsnd

Bu cevabın neden bu kadar olumsuz oylandığından emin değilim. Söylediği doğru. TC39 stage-0 temelde çok güvenilmeyen tekliflerdir. Nihai teklife ulaşabilirler veya gelmeyebilirler. Ama babel-preset-stage-0arasında değişen tüm eklentileri içerir stage-0için stage-3. Bu, teklif edip edemeyeceklerine bakılmaksızın, önerilen tüm özellikleri istediğim anlamına geliyor.
Gaurav Kumar
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.