Pertanyaan saya adalah: Apa perbedaan antara babel-preset-stage-0
, babel-preset-stage-1
, babel-preset-stage-2
dan babel-preset-stage-3
, dan apa pilihan terbaik ketika kita mengembangkan dengan ES6
?
sumber
Pertanyaan saya adalah: Apa perbedaan antara babel-preset-stage-0
, babel-preset-stage-1
, babel-preset-stage-2
dan babel-preset-stage-3
, dan apa pilihan terbaik ketika kita mengembangkan dengan ES6
?
Prasetel panggung Babel menyamakan dengan Proses TC39 dan status yang berbeda dari setiap proposal untuk perubahan bahasa potensial. Mereka termasuk implementasi dan polyfill untuk semua perubahan yang diusulkan pada tahap itu.
Apa pun yang ada di saat ini Stage-0
adalah Strawman, bukan ES6. Ini adalah Javascript masa depan dan sama sekali tidak yakin bahwa itu akan membuatnya menjadi spesifikasi ECMAScript resmi.
Tolong jangan hanya mengaturstage-0
agar itu akan bekerja tanpa memahami konsekuensi yang akan terjadi.
Babel Preset yang hanya berisi fitur ES6 adalah preset-es2015
stage-1
? Apakah ini aman untuk digunakan? Bisakah beberapastage-1
fitur tidak digunakan lagi dan API-s akan berubah di masa mendatang?stage-0
tetapi sama sekali tidak sepenuhnya aman dari perubahan atau bahkan penghentian total (lihat proposal konstruktor Panggilan yang ditarik setelah Tahap 1). Tetapi hal yang sama dapat dikatakan tentang Tahap selain Tahap 4 (yaitu Selesai).preset-es2015
denganbabel-preset-node6
hari-hari ini, jika menjalankan Node 6 atau lebih baik.babel-preset-env
yang dapat menargetkan lingkungan apa pun!babel-preset-env
BUKAN DARIbabel-preset-es2015
.babel-preset-es2015
hampir ketinggalan jamanSeperti kebanyakan diuraikan oleh jawaban lain. Tahap 4 adalah yang paling Stabil dan Tahap 0, yang paling berbahaya. Berikut adalah sedikit gangguan pada tingkat tinggi untuk 5 tahap dari jawaban sebelumnya dan dokumentasi. Saya menambahkan ini karena ketika saya sampai pada hal ini saya mengharapkan pemecahan tingkat yang lebih tinggi dari setiap tahap:
Tahap 4: Selesai
Siap untuk dimasukkan dalam ECMAScript Standard, telah lulus pengujian dan akan menjadi bagian dari revisi berikutnya
Tahap 3: Kandidat
Termasuk teks spesifikasi lengkap dan termasuk plugin yang sebagian besar telah diuji dan diberikan umpan balik. Solusi selesai dan semua perubahan lebih lanjut didasarkan pada pengalaman implementasi.
Tahap 2: Konsep
Dukungan lebih lanjut untuk plugin selesai sebanyak mungkin. Persyaratan untuk ini sebagian besar dipenuhi dengan hanya perubahan bertahap di jalan. Semantik dan api diharapkan lengkap. Kemungkinan besar akan menjadi bagian dari spec.
Tahap 1: Proposal Konsep yang telah ditemukan dan dipilih untuk diperiksa pada fase ini sebagian besar poli-isi dan demo diharapkan.
Tahap 0: Strawman Nama ini membuat saya berdecak menurut TC-39 itu jenis tidak memiliki ikatan apa pun tetapi mengingat konteksnya itu adalah kategori untuk konsep yang belum dipilih untuk ditindaklanjuti atau diperiksa.
Setiap level inklusif sedangkan 4 termasuk 3 termasuk 2 dan seterusnya ... Saya berharap bahwa penjumlahan ini membantu seseorang di masa depan.
sumber
Tahapan mewakili tahapan sebagaimana didefinisikan oleh proses TC39 yang berfungsi fitur dari ide-ide gila tapi berguna menjadi standar yang diterima, seperti ES6. Prosesnya memakan waktu, karena setiap kasus sudut harus didiskusikan, dipikirkan, diuji, diisi lebih banyak, dibahas lebih banyak, dll. Artinya, ini adalah badan standar. Tujuannya adalah mengatakan "ES6" akan memiliki makna yang lengkap dan lengkap, seperti halnya yang dikatakan "ES5".
Dalam praktiknya, persyaratan proyek Anda dapat berkisar dari tinggal sampai yang dicoba dan benar untuk bermain-main dengan fitur bahasa yang sangat nyaman, jika samar-samar. Anda mungkin ingin memulai dengan tautan ini:
Gambaran Umum Proses TC39 : Ini mencakup bagan yang bagus tentang apa arti tahapan dan bagaimana kemajuan fitur dari tahap ke tahap. Di bawah ini adalah gambaran umum tentang TC39.
Proposal Aktif : Tinjauan singkat tentang tahap apa proposal tertentu. Ini juga termasuk tautan ke proposal Selesai, Tidak Aktif, dan Tahap 0. Hari ini, April 2017, Lapangan Kelas Publik berada di tahap 2, yang berarti dijelaskan dengan tepat dan pengulas telah ditugaskan, tetapi belum sepenuhnya ditinjau.
Paket Preset Babel untuk Tahap 3 : Halaman plug-in, dengan tautan ke Git dan NPM, untuk semua proposal Tahap 3. Pada dasarnya, plug-in ini menarik kumpulan paket yang, secara teori, mengisi proposal saat ini di TC39 tahap 3. Dalam praktiknya, bug dapat terjadi. Selain itu, Anda dapat menemukan hal serupa yang serupa, yang menghubungkan ke halaman plug-in untuk Tahap 2 dan di bawah. Halaman-halaman itu akan ditautkan ke paket yang mencakup proposal Tahap 3 dan proposal yang kurang stabil.
Babel Preset 'env' : Preset Babel ini mendukung proposal yang lengkap, memilih paket yang tepat yang diperlukan untuk mendukung fitur-fitur ini di lingkungan yang diketahui. Sebagai contoh,
node
executable lokal membutuhkan lebih sedikit plugin daripada browser yang lebih lama. Dapat dipikirkan plugin 'stage-4' yang mendukung fitur-fitur masa depan yang disetujui.Singkatnya, Anda hanya perlu berurusan dengan fitur-fitur pra-rilis ini jika Anda menggunakannya. Jika Anda benar-benar perlu menggunakannya, pilih tahap tertinggi yang memiliki apa yang Anda butuhkan. Jika Anda hanya ingin instalasi mainan dengan fitur-fitur gila untuk didiskusikan di sekitar pendingin air, silakan dan ambil tahap 0.
sumber
Ini adalah titik awal terbaik untuk dipahami. Apa itu babel preset
Kutipan dari tautan:
Tahap 0 - Strawman: hanya sebuah ide, kemungkinan plugin Babel.
Tahap 1 - Proposal: ini layak untuk dikerjakan.
Tahap 2 - Draft: spec awal.
Tahap 3 - Kandidat: spesifikasi lengkap dan implementasi browser awal.
Tahap 4 - Selesai: akan ditambahkan ke rilis tahunan berikutnya
Gambaran Keseluruhan :
preset
dalam istilah babel. Dan setiap preset berisi plugin dari berbagai tingkat risiko.preset-0
Ini berarti memiliki plugin untuk fitur yang sangat eksperimental dan karenanya berisiko tinggi untuk mencapai spesifikasi akhir. Ini seperti ide yang datang ke pengembang bahwa Javascript harus memiliki fitur tertentu, dan dia melakukan beberapa pekerjaan untuk mendapatkannya ke proses proposal TC-39.preset-1
Ini berisi plugin untuk ide-ide fitur yang diterima oleh TC-39, dan mereka merasa itu layak untuk dikerjakan.preset-2
Pengaya untuk fitur di mana konsep awal siap untuk fitur. Dan itu berlanjut ..Jadi bisa saja suatu fitur di Tahap 0 mencapai Tahap 2 dalam beberapa waktu dan berakhir di rilis Javascript berikutnya beberapa waktu kemudian.
Karenanya dengan setiap versi Preset Babel ini, Anda dapat menemukan set plugin yang berbeda di dalamnya. Bisa juga terjadi bahwa fitur di tahap 0 mengalami beberapa perubahan dan membuat perubahan pada bagaimana fungsinya. Dan itu tercapai, katakanlah tahap-2 dengan API yang sama sekali berbeda. Jadi pengembang harus memastikan bahwa ketika mereka memperbarui plugin ini mereka membuat perubahan yang diperlukan untuk kode mereka.
sumber
Pertanyaan aslinya adalah "Apa perbedaan antara babel-preset-stage-0, babel-preset-stage-1, babel-preset-stage-2 dan babel-preset-stage-3", aneh bahwa jawaban berfokus pada "perbedaan antara TC39 tahap-0, tahap-1 .. terminologi "dapat dipilih, sedangkan satu-satunya yang relevan (meskipun tidak akurat) tidak dipilih. Mengutip dari situs babel:
Gagasan intinya adalah 'yang di atasnya'. Saya tidak menjawab bagian kedua karena jawaban di atas sangat bagus pada bagian itu.
sumber
Saya mengerti. Kalian bisa merujuk https://babeljs.io/docs/plugins/preset-stage-0/
Singkatnya,
preset-stage-0
berisi semua fungsi yangpreset-stage-1
dimiliki, danpreset-stage-1
berisi semua fungsi yangpreset-stage-2
dimiliki dan seterusnya ...Digit yang lebih rendah lebih kuat. Dalam proyek Anda, Jika Anda tidak ingin repot dengan masalah, hanya mengatur
stage-0
...sumber
stage-0
, dll sebenarnya? Karena Anda mengatakan "Digit lebih rendah lebih kuat.", Saya tidak percaya.stage
denganES6
, @RGraham telah menunjukkan ituThe Babel Preset which contains only ES6 features is preset-es2015
. Terima kasih!babel-preset-stage-0
termasuk semua plugin, mulai daristage-0
hinggastage-3
. Itu berarti saya ingin semua fitur yang diusulkan, tidak peduli apakah mereka dapat mengajukan proposal atau tidak.