बैबेल-प्रीसेट-स्टेज -0, बैबल-प्रीसेट-स्टेज -1 आदि में क्या अंतर है?


126

मेरा प्रश्न है: क्या अंतर है babel-preset-stage-0, babel-preset-stage-1, babel-preset-stage-2और babel-preset-stage-3, और क्या सबसे अच्छा विकल्प है जब हम साथ विकसित है ES6?

जवाबों:


97

बाबेल का चरण प्रीसेट एक संभावित भाषा परिवर्तन के लिए TC39 प्रक्रिया और प्रत्येक प्रस्ताव के विभिन्न राज्यों के बराबर है । वे उस चरण में प्रस्तावित सभी परिवर्तनों के लिए कार्यान्वयन और पॉलीफ़िल शामिल हैं।

वर्तमान में कुछ भी Stage-0है, स्ट्रॉमन है, ईएस 6 नहीं । यह भविष्य का जावास्क्रिप्ट है और बिल्कुल निश्चित नहीं है कि यह कभी भी किसी भी आधिकारिक ईसीएमएस्क्रिप्ट विनिर्देश में बना देगा।

कृपया इसे केवलstage-0 इसके परिणामों के बिना समझे काम नहीं करेंगे।

बैबेल प्रीसेट जिसमें केवल ES6 विशेषताएं हैं preset-es2015


3
किस बारे में stage-1? क्या यह उपयोग करने के लिए सुरक्षित है? क्या stage-1भविष्य में कुछ सुविधाओं को अपदस्थ किया जा सकता है और एपीआई-एस को बदल दिया गया है?
नॉटिजीर्गी

4
@notgiorgi से अधिक सुरक्षित है stage-0लेकिन किसी भी तरह से पूरी तरह से परिवर्तन या यहां तक ​​कि कुल पदावनति से सुरक्षित नहीं है (देखें चरण निर्माण प्रस्ताव जो चरण 1 के बाद वापस ले लिया गया था)। लेकिन वही स्टेज 4 (यानी समाप्त) के अलावा किसी भी स्टेज के बारे में कहा जा सकता है।
कोडिंगइंट्रीग्यू 10

आप को बदलने के लिए चाहते हो सकता है preset-es2015के साथ babel-preset-node6, इन दिनों नोड 6 या बेहतर चल रहा है।
डेव सग

5
या बेहतर अभी तक, babel-preset-envजो किसी भी वातावरण को लक्षित कर सकता है!
कोडिंगइंट्रिग्यू

5
गेज़ कृपया babel-preset-envINSTEAD OF का उपयोग करें babel-preset-es2015babel-preset-es2015लगभग पुराना है
vijay

53

जैसा कि ज्यादातर अन्य उत्तरों द्वारा विस्तृत है। स्टेज 4 सबसे स्थिर और स्टेज 0 सबसे खतरनाक है। पिछले उत्तरों और दस्तावेज़ीकरण से 5 चरणों के लिए उच्च स्तर पर थोड़ा विराम होता है। मैं इसे जोड़ रहा हूं क्योंकि जब मैं इसके पास आया था तो मैं उम्मीद कर रहा था कि प्रत्येक चरण क्या है?


चरण 4: समाप्त

ECMAScript स्टैंडर्ड में शामिल करने के लिए तैयार, परीक्षण पास कर चुका है और अगले संशोधन का हिस्सा होगा


चरण 3: उम्मीदवार

एक पूर्ण कल्पना पाठ शामिल है और इसमें प्लगइन्स शामिल हैं जिन्हें ज्यादातर परीक्षण किया गया है और प्रतिक्रिया के साथ प्रदान किया गया है। समाधान पूर्ण है और आगे के सभी परिवर्तन कार्यान्वयन के अनुभव पर आधारित हैं।


स्टेज 2: ड्राफ्ट

जितना संभव हो सके, प्लगइन्स के लिए आगे का समर्थन। इनके लिए आवश्यकताएं ज्यादातर रास्ते में केवल वृद्धिशील परिवर्तनों के साथ पूरी होती हैं। अर्थ और एपि के पूरे होने की उम्मीद है। यह सबसे अधिक संभावना युक्ति का हिस्सा बन जाएगा।


चरण 1: प्रस्ताव एक अवधारणा जिसे खोजा गया है और इस चरण में जांच की जानी है, ज्यादातर पाली-फिल और डेमो की उम्मीद की जाती है।


स्टेज ०: स्ट्रॉमन इस नाम ने मुझे टीसी -३ ९ के हिसाब से चौका दिया, इसमें किसी भी प्रकार की बाध्यता नहीं है, लेकिन इस संदर्भ को देखते हुए यह उन अवधारणाओं की श्रेणी है, जिनका चयन नहीं किया गया है।

प्रत्येक स्तर समावेशी है जबकि 4 में 3 शामिल हैं 2 और इसी तरह ... मुझे आशा है कि यह योग भविष्य में किसी की मदद करता है।


15

चरण TC39 प्रक्रिया द्वारा परिभाषित चरणों का प्रतिनिधित्व करते हैं जो पागल लेकिन उपयोगी विचारों से स्वीकृत मानकों जैसे कि ES6 में काम करता है। प्रक्रिया में कुछ समय लगता है, क्योंकि हर कोने के मामले पर चर्चा की जानी चाहिए, परीक्षण, पॉलीफ़िल्ड के बारे में सोचा जाना चाहिए, कुछ और चर्चा की गई, आदि, यह एक मानक निकाय है। लक्ष्य यह है कि "ईएस 6" कहने का एक पूर्ण और पूर्ण अर्थ होगा, जितना कि "ईएस 5" करता है।

व्यवहार में, आपकी परियोजना की आवश्यकताएं, रहने की कोशिश और सच से लेकर ओह-सो-सुविधाजनक के साथ खेलने तक हो सकती हैं, अगर नेबुलस, भाषा सुविधाएँ। आप शायद इन लिंक्स से शुरुआत करना चाहते हैं:

  • TC39 प्रोसेस ओवरव्यू : इसमें एक निफ्टी चार्ट शामिल है जैसे कि चरणों का क्या मतलब है और चरण से चरण तक की प्रगति कैसे होती है। नीचे वह TC39 का अवलोकन है।

  • सक्रिय प्रस्ताव : कुछ प्रस्तावों के किस चरण में एक त्वरित अवलोकन है। इसमें समाप्त, निष्क्रिय और चरण 0 प्रस्तावों के लिंक भी शामिल हैं। आज, अप्रैल 2017, पब्लिक क्लास फील्ड्स स्टेज 2 में है, जिसका अर्थ है कि यह ठीक वर्णित है और समीक्षकों को सौंपा गया है, लेकिन पूरी तरह से समीक्षा नहीं की गई है।

  • स्टेज 3 के लिए बैबल प्रीसेट पैकेज : सभी स्टेज 3 प्रस्तावों के लिए Git और NPM के लिंक के साथ प्लग-इन पेज। मूल रूप से, यह प्लग-इन पैकेजों के संग्रह में खींचती है, सिद्धांत रूप में, TC39 चरण 3 में वर्तमान प्रस्तावों को पॉलीफ़िल करती है। व्यवहार में, बग्स हो सकते हैं। इसके अलावा, आप समान समान पा सकते हैं, यह चरण 2 और नीचे के प्लग-इन पृष्ठों से लिंक करता है । वे पृष्ठ उन पैकेजों से जुड़ेंगे जिनमें स्टेज 3 प्रस्ताव और कम स्थिर प्रस्ताव शामिल हैं।

  • बैबेल प्रीसेट 'env' : यह बैबेल प्रीसेट पूर्ण प्रस्तावों का समर्थन करता है, एक ज्ञात वातावरण में इन सुविधाओं का समर्थन करने के लिए आवश्यक सही संकुल का चयन करता है। उदाहरण के लिए, एक स्थानीय nodeनिष्पादन योग्य को पुराने ब्राउज़र की तुलना में कम प्लग इन की आवश्यकता होती है। यह 'स्टेज -4' प्लगइन के बारे में सोचा जा सकता है जो अनुमोदित भविष्य की सुविधाओं का समर्थन करता है।

सारांश में, यदि आप उनका उपयोग करते हैं, तो आपको केवल इन प्रीलेरेज सुविधाओं से निपटने की आवश्यकता है। यदि आपको उनका उपयोग करने की आवश्यकता है, तो उस चरण की उच्चतम संख्या चुनें, जिसकी आपको आवश्यकता है। यदि आप वाटर कूलर के चारों ओर चर्चा करने के लिए पागल सुविधाओं के साथ खिलौना स्थापना चाहते हैं, तो आगे बढ़ें और चरण 0 को पकड़ो।


धन्यवाद, इसलिए babel-env एक तरह का
बैबेल

4

यह समझने का सबसे अच्छा प्रारंभिक बिंदु है। बेबल प्रीसेट क्या हैं

लिंक का एक अंश:

स्टेज 0 - स्ट्रॉमैन: सिर्फ एक विचार, संभव बैबल प्लगइन।
चरण 1 - प्रस्ताव: यह काम करने के लायक है।
स्टेज 2 - ड्राफ्ट: प्रारंभिक कल्पना।
चरण 3 - उम्मीदवार: पूर्ण कल्पना और प्रारंभिक ब्राउज़र कार्यान्वयन।
चरण 4 - समाप्त: अगले वार्षिक रिलीज में जोड़ा जाएगा

कुल मिलाकर चित्र :

  1. समय के साथ जावास्क्रिप्ट विकसित हो रहा है और अधिक से अधिक सुविधाओं को भाषा में जोड़ा जा रहा है।
  2. ब्राउज़रों को भी बहुत काम करना पड़ता है ताकि वे इन नई सुविधाओं को उनके द्वारा समझा जा सके। सामान्य रूप से यह प्रक्रिया बहुत धीमी है, जिस गति से जावास्क्रिप्ट विकसित हो रहा है।
  3. लेकिन डेवलपर्स भाषा की नई विशेषताओं का उपयोग करना चाहते हैं क्योंकि इससे उन्हें लिखना, समझना, कोड बनाए रखना आसान हो जाता है।
  4. इसलिए डेवलपर्स नई जावास्क्रिप्ट सुविधाओं का उपयोग करके अपना कोड लिखते हैं, लेकिन इससे पहले कि कोड ब्राउज़रों तक पहुंचता है, यह एक बिल्ड प्रक्रिया से गुजरता है जहां कुछ जादू का उपयोग करते हुए, नई सुविधाओं वाले सभी कोड को ब्राउज़र द्वारा समझा जा सकने वाले कोड में ट्रांसप्लड किया जाता है। जावास्क्रिप्ट की नई सुविधाओं यानी, लेकिन भाषा के समझ में आने वाले निर्माणों का उपयोग करके कोडित किया गया।
  5. बिल्ड मैजिक का उपयोग टूल के जरिए किया जा सकता है, उनमें से एक बैबल है।
  6. बाबेल के काम करने का तरीका यह है कि यह प्लगइन्स का एक सेट लेता है। इनमें से प्रत्येक प्लगइन भाषा के समझ में आने वाले निर्माणों में जावास्क्रिप्ट की एक विशेष नई सुविधा को बदलने का उल्लेख कर सकता है।
  7. ऐसे सैकड़ों प्लगइन्स हैं, जिनमें से प्रत्येक में जावास्क्रिप्ट की विभिन्न नई विशेषताओं का जिक्र है। ये सुविधाएँ अंतिम जावास्क्रिप्ट युक्ति का हिस्सा हो भी सकती हैं और नहीं भी। और अगर यह अंतिम रूप से जावास्क्रिप्ट युक्ति पर जाकर समाप्त नहीं होता है, तो कोई भी ब्राउज़र इस सुविधा को लागू नहीं करेगा। इसलिए यदि कोई भी डेवलपर जेएसएल की किसी प्रायोगिक विशेषता का उपयोग करता है, तो वह बैबल प्लगइन का उपयोग करता है, जो वह / वह ले रहा है। यदि यह कभी भी समाप्त नहीं होता है, तो कोड का वह हिस्सा हमेशा ब्राउज़रों को तैनात करने से पहले ट्रांसप्लान्ट करना होगा।
  8. यह जोखिम विभिन्न स्तरों में वर्गीकृत किया गया है ताकि किसी भी विशेषता को अंतिम कल्पना तक पहुंचने की संभावना को इंगित किया जा सके।
  9. इसके अलावा, बैबेल ने इन प्लग को विभिन्न सेटों में वर्गीकृत किया है, जिसे presetएबेल की शर्तों में कहा जाता है । और प्रत्येक पूर्व निर्धारित में जोखिम के विभिन्न स्तरों से प्लगइन्स शामिल हैं।
  10. preset-0इसका मतलब है कि इसमें ऐसे फीचर्स के लिए प्लगइन्स हैं जो बहुत ही प्रायोगिक हैं और इसलिए इसे अंतिम रूप देने के उच्च जोखिम में हैं। इसका एक विचार जो एक डेवलपर के पास आया कि जावास्क्रिप्ट में एक विशेष सुविधा होनी चाहिए, और उसने इसे टीसी -39 प्रस्ताव प्रक्रिया में लाने के लिए कुछ काम किया।
  11. preset-1 इसमें TC-39 द्वारा स्वीकार किए गए फीचर विचारों के लिए प्लगइन्स शामिल हैं, और वे इसे काम करने के लायक पाते हैं।
  12. preset-2सुविधाओं के लिए प्लगइन्स जहां सुविधा के लिए प्रारंभिक मसौदा तैयार है। और आगे बढ़ता है ।।

तो यह हो सकता है कि स्टेज ० में एक फीचर कुछ समय में स्टेज २ तक पहुँच गया और अंत में जावास्क्रिप्ट के अगले रिलीज़ में कुछ और समय बाद समाप्त हो गया।

इसलिए इन बैबेल प्रीसेट के प्रत्येक संस्करण के साथ, आप इसमें प्लगइन्स के विभिन्न सेट पा सकते हैं। यह भी हो सकता है कि चरण ० में एक विशेषता कुछ बदलावों से गुज़री और इसने कैसे कार्यों में परिवर्तन किए। और यह पहुंच गया, चरण 2 को पूरी तरह से अलग एपीआई के साथ कहने देता है। इसलिए डेवलपर्स को यह सुनिश्चित करना होगा कि जब वे इन प्लगइन्स को अपडेट कर रहे हैं तो वे अपने कोड में आवश्यक बदलाव करें।


3

मूल प्रश्न "बाबेल-प्रीसेट-स्टेज -0, बैबल-प्रीसेट-स्टेज -1, बैबेल-प्रीसेट-स्टेज -2 और बैबेल-प्रीसेट-स्टेज -3" में क्या अंतर है, यह अजीब है कि इस अंतर पर ध्यान देने वाले उत्तर हैं TC39 चरण -०, चरण -१ के बीच .. शब्दावली "से मतदान होता है, जबकि एकमात्र प्रासंगिक (हालांकि सटीक नहीं) नीचे मतदान होता है। कोलाहल साइट से उद्धृत करने के लिए:

एक Babel प्रीसेट प्लगइन्स की एक साझा करने योग्य सूची है।

आधिकारिक बबेल स्टेज प्रीसेट ने जावास्क्रिप्ट में नए सिंटैक्स प्रस्तावों के लिए TC39 स्टेजिंग प्रक्रिया को ट्रैक किया।

प्रत्येक पूर्व निर्धारित (पूर्व चरण -3, चरण -2, आदि) में उस विशेष चरण के लिए सभी प्लगइन्स और इसके ऊपर वाले शामिल थे। उदाहरण के लिए, स्टेज -2 में स्टेज -3 शामिल है, और इसी तरह।

मूल विचार 'इसके ऊपर वाले' हैं। मैं उत्तरार्ध का उत्तर नहीं दे रहा हूं क्योंकि ऊपर दिए गए उत्तर उस हिस्से पर बहुत अच्छे हैं।


-20

मुझे यह मिल गया है। आप लोग https://babeljs.io/docs/plugins/preset-stage-0/ का उल्लेख कर सकते हैं

एक संक्षिप्त शब्द में, preset-stage-0सभी प्रकार की कार्यक्षमता समाहित preset-stage-1है, और preset-stage-1इसमें सभी प्रकार की कार्यक्षमता शामिल preset-stage-2है और इसी तरह ...

कम अंक अधिक शक्तिशाली है। अपने प्रोजेक्ट में, यदि आप समस्याओं से परेशान नहीं हैं, तो बस सेट करें stage-0...


15
लेकिन क्या आप समझते हैं stage-0, आदि वास्तव में क्या है? चूंकि आप कहते हैं कि "निचला अंक अधिक शक्तिशाली है।", मेरा मानना ​​है कि नहीं।
फेलिक्स क्लिंग

2
वास्तव में, मैं के stageसाथ उलझन में है ES6, @Rrahamham ने बताया है कि The Babel Preset which contains only ES6 features is preset-es2015। धन्यवाद!
फ्लाइंग्ज़ल

यदि आप बाद में समस्याओं का सामना करना चाहते हैं, तो बस चरण -0 का उपयोग करें! स्टेज -० के कुछ या सभी फीचर्स इसे ES- स्पेक में नहीं बना सकते हैं। इसलिए स्टेज -० सुविधाओं का उपयोग करने से सावधान रहें।
devsnd

यकीन नहीं होता कि यह जवाब इतना नीचे क्यों है। वह जो कह रहा है वह सही है। TC39 चरण -0 मूल रूप से ऐसे प्रस्ताव हैं जो बहुत अविश्वसनीय हैं। वे अंतिम प्रस्ताव के लिए इसे बना सकते हैं या नहीं कर सकते हैं। लेकिन babel-preset-stage-0सभी प्लग-इन में शामिल हैं, से लेकर stage-0के लिए stage-3। इसका मतलब है कि मैं प्रस्तावित सभी सुविधाओं को चाहता हूं, भले ही वे इसे प्रस्ताव करने के लिए बना सकें या नहीं।
गौरव कुमार
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.