Skip to main content

Belajar Babel Loader Javascript ES6

2020031319583407bf63e74fd402a5583504377dfd8829.png

Apa itu babel atau babel.js? Babel merupakan sebuah transpiler yang bertugas untuk mengubah sintaks JavaScript modern (ES6+) menjadi sintaks yang dapat didukung penuh oleh seluruh browser.

JavaScript merupakan bahasa pemrograman yang berkembang sangat pesat. Komunitasnya besar, dan tiap tahun selalu terdapat versi yang baru. 
Namun perkembangan yang pesat tadi ternyata membutuhkan waktu yang lama untuk diadaptasi oleh browser atau Node.js. Lalu jika kita ingin mencoba sintaks terbaru di JavaScript apakah kita perlu menunggu hingga seluruh browser berhasil mengadaptasi pembaharuan tersebut? Tentu tidak! 
Dengan babel Anda dapat menuliskan sintaks JavaScript versi terbaru tanpa khawatir memikirkan dukungan pada browser. Karena babel akan mengubah sintaks yang kita tuliskan menjadi kode yang dapat diterima browser.
Jika Anda penasaran bagaimana cara babel bekerja, babel menyediakan sebuah playground yang dapat kita manfaatkan untuk mengubah sintaks JavaScript modern (ES6+) menjadi sintaks lama. Untuk mencobanya, silakan Anda buka tautan berikut: https://babeljs.io/repl.
20200313195932ff6b88f0352e20c9c08f27fd89aff700.png
Pada playground tersebut kita juga dapat memilih preset yang kita inginkan. Secara default preset akan mengarah ES2015 (ES6).
Anda sudah tahu  sekilas mengenai babel. Nah pada webpack kita juga dapat menggunakan babel dalam bentuk loader. 
Walaupun webpack secara standarnya dapat memproses berkas JavaScript tanpa perlu bantuan loader, namun proses tersebut tidak mengubah sintaks yang kita tuliskan. 
Artinya jika kita menuliskan sintaks JavaScript modern, maka kita akan menemukannya juga pada berkas bundle.js.
2020031320001286d0cce40a7f1f8ac22836dcbab4867b.png
Walaupun saat ini Google Chrome dan Mozilla Firefox sudah mendukung penulisan sintaks ES6, namun setidaknya kita perlu sedikit peduli terhadap dukungan browser lama seperti Internet Explorer atau browser versi lama lainnya.
Untuk menggunakan babel pada webpack sebagai loader, kita perlu memasang tiga package menggunakan npm pada devDependencies. 
Yang pertama package @babel/core, yang kedua babel-loader, dan yang ketiga @babel/preset-env.

  1. npm install @babel/core babel-loader @babel/preset-env --save-dev


Package @babel/core merupakan package inti yang harus dipasang ketika kita hendak menggunakan babel, baik pada webpack maupun tools yang lain.
Package babel-loader merupakan package yang diperlukan untuk menggunakan babel sebagai loader pada webpack.
Yang terakhir package @babel/preset-env merupakan package preset yang akan kita gunakan untuk membantu babel-loader dalam melakukan tugasnya. 
@babel/preset-env merupakan preset cerdas yang memungkinkan kita menggunakan sintaks JavaScript terbaru tanpa menetapkan secara spesifik sintaks JavaScript versi apa yang kita gunakan.
Berkas package.json akan tampak seperti ini setelah memasang ketiga package tersebut:

  1. {

  2.   "name": "webclock",

  3.   "version": "1.0.0",

  4.   "description": "",

  5.   "main": "index.js",

  6.   "scripts": {

  7.     "build": "webpack"

  8.   },

  9.   "author": "",

  10.   "license": "ISC",

  11.   "dependencies": {

  12.     "jquery": "^3.4.1",

  13.     "moment": "^2.24.0"

  14.   },

  15.   "devDependencies": {

  16.     "@babel/core": "^7.8.4",

  17.     "@babel/preset-env": "^7.8.4",

  18.     "babel-loader": "^8.0.6",

  19.     "css-loader": "^3.4.2",

  20.     "style-loader": "^1.1.3",

  21.     "webpack": "^4.41.6",

  22.     "webpack-cli": "^3.3.11"

  23.   }

  24. }


Setelah berhasil memasang ketiga package tersebut, langkah selanjutnya kita dapat gunakan babel-loader dan preset-nya pada webpack configuration.

  1. const path = require("path");

  2.  

  3. module.exports = {

  4.     entry: "./src/index.js",

  5.     output: {

  6.         path: path.resolve(__dirname, "dist"),

  7.         filename: "bundle.js"

  8.     },

  9.     mode: "production",

  10.     module: {

  11.         rules: [

  12.             /* style and css loader */

  13.             {

  14.                 test: /\.css$/,

  15.                 use: [

  16.                     {

  17.                         loader: "style-loader"

  18.                     },

  19.                     {

  20.                         loader: "css-loader"

  21.                     }

  22.                 ]

  23.             },

  24.             /* babel loader */

  25.             {

  26.                 test: /\.js$/,

  27.                 exclude: "/node_modules/",

  28.                 use: [

  29.                     {

  30.                         loader: "babel-loader",

  31.                         options: {

  32.                             presets: ["@babel/preset-env"]

  33.                         }

  34.                     }

  35.                 ]

  36.             }

  37.         ]

  38.     }

  39. }


Ketika menerapkan rule untuk berkas .js, jangan lupa untuk menetapkan properti exclude dengan nilai “/node_modules/”. 
Apa artinya? Dengan menetapkan properti exclude itu berarti kita mengecualikan webpack untuk memproses berkas .js yang berada pada folder “node_modules”. 
Hal ini dapat meminimalisir proses yang tidak diperlukan, sehingga mempercepat proses build pada proyek kita.  
Lalu pada penerapan babel-loader juga kita menggunakan properti options dengan menetapkan properti presets di dalamnya. Pada properti presets kita tetapkan preset (dalam bentuk array literas) yang sudah kita pasang menggunakan npm, yaitu @babel/preset-env.
Setelah menggunakan babel loader pada webpack configuration, mari kita coba build dan buka kembali berkas bundle.js. 
Maka kode yang kita tuliskan dalam ES6 akan diubah dalam sintaks yang dapat diterima oleh seluruh browser.
20200313200507f7a720e39de819c62a15f1be147aa62e.png
Bahkan pada berkas bundle tersebut dipastikan sudah tidak terdapat lagi sintaks yang dituliskan menggunakan ES6.
20200313200535f035aab9b99622b9e95be3f0d98fc827.png
Namun walaupun sintaksnya sudah diubah, proyek akan tetap berjalan normal seperti biasanya.
Contoh: 
https://github.com/dicodingacademy/a163-bfwd-labs/tree/207-webclock-webpack-using-loader

Comments

Popular posts from this blog

Sejuta Pesona Kakadu

Senja di Yellow Water, Kakadu National Park Perjalanan kami ke Kakadu National Park sangat membekas di hati. Sampai sekarang pun ketika saya menuliskan kembali kisah ini, masih terbayang bentangan pemandangan indah yang kami saksikan di alam yang masih perawan. Kakadu National Park adalah taman nasional terbesar di Australia. Letaknya di Northen Territory, sekitar 200 km sebelah timur kota Darwin. Kakadu memperoleh status heritage site dari UNESCO karena alam sekaligus budayanya. Orang Aborijin adalah pemilik asli tanah ini. Mereka 'meminjamkan' tanah Kakadu untuk dikelola pemerintah daerah sebagai taman nasional. Apa yang bisa dilihat di Kakadu NP? Tentu keindahan alam dan marga satwanya yang melimpah. Di Kakadu terdapat 290 jenis burung, 60 jenis mamalia, 50 jenis hewan air tawar, 10.000 jenis serangga dan 1600 jenis spesies tanaman. Yang menjadi raja tentu saja buaya, si penduduk asli :) Kami melakukan perjalanan mandiri dengan menyewa mobil biasa (bukan 4WD) ke Kakadu NP....

Jasa Fogging Nyamuk Murah Bandung | 0857-4789-0221 - Garda Pest

  Memerlukan informasi tentang   Jasa Fogging Nyamuk Murah Bandung   ?   Garda pest Control Perusahaan pengendalian hama dan disinfeksi virus yang profesional dan untuk harga pasti terjangkau, dengan Layanan Cepat Berkualitas kami manjamin kepuasan pelanggan. Jasa Fogging Nyamuk Murah Bandung dan Berkualitas Artikel Lainya Tentang :  Virus Varian Terbaru Waspada Penularan Nyamuk Demam Berdarah (DBD) Waspada nyamuk di rumah Anda, mencegah lebih baik daripada mengobati. Lakukan tindakan pencegahan untuk mencegah populasi nyamuk dewasa dengan 3M Plus dan layanan gerimis nyamuk. Pilih layanan yang terbaik dan profesional, Dengan banyaknya perusahaan jasa fogging nyamuk murah dengan hasil yang mengecewakan kami sarankan pilihlah jasa yang profesional berpengalaman di bidang pengendalian hama. Garda Pest Control memiliki pengalaman lebih dari 10 tahun dalam pengendalian hama. Baca Juga Artikel Tentang :  Cara Mengusir Nyamuk di Rumah Mengapa Jasa Garda Pest Contr...

Happy 80th Anniversary, Sydney Harbour Bridge!

Anak-anak mendapat balon gratis di perayaan ini Masih segagah ketika diresmikan tahun 1932, Jembatan Sydney Harbour yang menjadi ikon kota Sydney ini berulang tahun yang ke-80. Warga Sydney yang tidak melewatkan kesempatan untuk berpesta, menggelar piknik di taman 'bawah jembatan' untuk merayakan ulang tahun The Coathanger ini. Minggu pagi yang mendung dan gerimis sempat menyurutkan niat kami untuk ikut berpesta merayakan ulang tahun si jembatan bersama warga Sydney lainnya. Untungnya cuaca mulai membaik di siang hari, matahari pun mulai nampak menggeser awan-awan kelabu. Kami naik kereta dari suburb menuju stasiun Milson Point, stasiun di utara Sydney Harbour yang paling dekat dengan lokasi Bradfield Park, tempat acara ini berlangsung. Di hari Minggu, keluarga yang membawa anak-anak cukup membayar AU$ 2,50 per orang untuk naik semua jenis transportasi umum di Sydney, seharian penuh. Jadi rugi kalau nggak keluar rumah :) Agak memalukan sebenarnya, kami yang sudah lima tahun tin...