BabelJS - Ikhtisar
BabelJSadalah transpiler JavaScript yang memindahkan fitur-fitur baru ke dalam standar lama. Dengan ini, fitur dapat dijalankan di browser lama dan baru, tanpa repot. Pengembang Australia, Sebastian McKenzie memulai BabelJS.
Mengapa BabelJS?
JavaScript adalah bahasa yang dimengerti browser. Kami menggunakan browser yang berbeda untuk menjalankan aplikasi kami - Chrome, Firefox, Internet Explorer, Microsoft Edge, Opera, UC browser dll. ECMA Script adalah spesifikasi bahasa JavaScript; ECMA Script 2015 ES6 adalah versi stabil yang berfungsi dengan baik di semua browser baru dan lama.
Setelah ES5, kami memiliki ES6, ES7, dan ES8. ES6 dirilis dengan banyak fitur baru yang tidak didukung sepenuhnya oleh semua browser. Hal yang sama berlaku untuk ES7, ES8 dan ESNext (versi ECMA Script berikutnya). Sekarang tidak pasti kapan semua browser dapat kompatibel dengan semua versi ES yang dirilis.
Jika kami berencana untuk menggunakan fitur ES6 atau ES7 atau ES8 untuk menulis kode kami, itu akan cenderung rusak di beberapa browser lama karena kurangnya dukungan dari perubahan baru. Oleh karena itu, jika kita ingin menggunakan fitur-fitur baru ECMA Script dalam kode kita dan ingin menjalankannya pada semua kemungkinan browser yang tersedia, kita membutuhkan alat yang akan mengkompilasi kode terakhir kita di ES5.
Babelmelakukan hal yang sama dan disebut transpiler yang mentranspilasi kode dalam versi Script ECMA yang kita inginkan. Ini memiliki fitur seperti preset dan plugin, yang mengkonfigurasi versi ECMA yang kita butuhkan untuk mentranspilasi kode kita. Dengan Babel, pengembang dapat menulis kode mereka menggunakan fitur baru di JavaScript. Pengguna bisa mendapatkan kode-kode tersebut ditranspilasi menggunakan Babel; kode tersebut nantinya dapat digunakan di browser apa pun tanpa masalah apa pun.
The following table lists down the features available in ES6, ES7 and ES8 −
fitur | Versi ECMA Script |
---|---|
Biarkan + Const | ES6 |
Fungsi Panah | ES6 |
Kelas | ES6 |
Janji | ES6 |
Generator | ES6 |
Iterator | ES6 |
Modul | ES6 |
Merusak | ES6 |
Template Literals | ES6 |
Objek yang Ditingkatkan | ES6 |
Properti Default, Istirahat & Sebarkan | ES6 |
Async - Tunggu | ES7 |
Operator Eksponensial | ES7 |
Array.prototype.includes () | ES7 |
String Padding | ES8 |
BabelJS mengelola dua bagian berikut -
- transpiling
- polyfilling
Apa itu Babel-Transpiler?
Babel-transpiler mengubah sintaks JavaScript modern menjadi bentuk, yang dapat dengan mudah dipahami oleh browser lama. Misalnya, fungsi panah, konst, biarkan kelas akan diubah menjadi fungsi, var, dll. Di sini sintaksnya, yaitu, fungsi panah diubah ke fungsi normal dengan menjaga fungsionalitas tetap sama di kedua kasus.
Apa itu Babel-polyfill?
Ada fitur baru yang ditambahkan dalam JavaScript seperti janji, peta, dan penyertaan. Fitur dapat digunakan pada array; sama, bila digunakan dan ditranspilasi menggunakan babel tidak akan dikonversi. Jika fitur baru adalah metode atau objek, kita perlu menggunakan Babel-polyfill bersama dengan transpiling untuk membuatnya berfungsi di browser lama.
Berikut adalah daftar fitur ECMA Script yang tersedia dalam JavaScript, yang dapat ditranspilasi dan di-polyfill -
- Classes
- Decorators
- Const
- Modules
- Destructing
- Parameter default
- Nama properti yang dihitung
- Objek istirahat / menyebar
- Fungsi asinkron
- Fungsi panah
- Parameter istirahat
- Spread
- Template Literals
ECMA Script features that can be polyfilled −
- Promises
- Map
- Set
- Symbol
- Weakmap
- Weakset
- includess
- Array.from, Array.of, Array # find, Array.buffer, Array # findIndex
- Object.assign,Object.entries,Object.values
Fitur BabelJS
Pada bagian ini, kita akan belajar tentang berbagai fitur BabelJS. Berikut adalah fitur inti terpenting dari BabelJS -
Babel-Plugins
Plugin dan Preset adalah detail konfigurasi untuk Babel untuk mentranspilasi kode. Babel mendukung sejumlah plugin, yang dapat digunakan secara individual, jika kita mengetahui lingkungan tempat kode akan dijalankan.
Babel-Preset
Prasetel Babel adalah sekumpulan plugin, yaitu detail konfigurasi ke babel-transpiler yang memerintahkan Babel untuk mentranspilasi dalam mode tertentu. Kita perlu menggunakan preset, yang memiliki lingkungan tempat kita ingin kode diubah. Misalnya, preset es2015 akan mengubah kode menjadi es5 .
Babel-Polyfills
Ada beberapa fitur seperti metode dan objek, yang tidak dapat ditransformasikan. Pada contoh seperti itu, kita dapat menggunakan babel-polyfill untuk memfasilitasi penggunaan fitur di browser apa pun. Mari kita perhatikan contoh janji; agar fitur berfungsi di browser lama, kita perlu menggunakan polyfills.
Babel-Polyfills
Babel-cli hadir dengan banyak perintah di mana kodenya dapat dengan mudah dikompilasi pada baris perintah. Ia juga memiliki fitur seperti plugin dan preset untuk digunakan bersama dengan perintah sehingga mudah untuk mentranspilasi kode sekaligus.
Keuntungan menggunakan BabelJS
Pada bagian ini, kita akan mempelajari tentang keuntungan berbeda yang terkait dengan penggunaan BabelJS -
BabelJS menyediakan kompatibilitas mundur ke semua fitur baru yang ditambahkan ke JavaScript dan dapat digunakan di browser apa pun.
BabelJS memiliki kemampuan transpile untuk mengambil JavaScript versi berikutnya - ES6, ES7, ESNext, dll.
BabelJS dapat digunakan bersama dengan gulp, webpack, flow, react, typescript, dll. Membuatnya sangat kuat dan dapat digunakan dengan proyek besar yang memudahkan hidup developer.
BabelJS juga bekerja dengan sintaks react JSX dan dapat dikompilasi dalam bentuk JSX.
BabelJS memiliki dukungan untuk plugin, polyfills, babel-cli yang memudahkan pengerjaan proyek besar.
Kekurangan menggunakan BabelJS
Di bagian ini, kita akan belajar tentang berbagai kerugian menggunakan BabelJS -
Kode BabelJS mengubah sintaks saat transpiling yang membuat kode sulit dipahami saat dirilis pada produksi.
Kode yang ditranspilasi lebih besar ukurannya jika dibandingkan dengan kode aslinya.
Tidak semua ES6 / 7/8 atau fitur baru yang akan datang dapat ditranspilasi dan kami harus menggunakan polyfill agar dapat berfungsi di browser lama.
Berikut adalah situs resmi babeljs https://babeljs.io/.