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

5 Kafe & Bakery Halal di Area Bugis Singapura

Fluff Bakery, Muslim Owned Beberapa tahun belakangan ini banyak muncul kafe dan bakery trendi di Singapura yang dikelola oleh anak-anak muda. Kabar gembira buat kita semua, banyak yang pemiliknya muslim. Jadi meskipun belum memiliki sertifikat halal, bahan-bahan makanan yang mereka gunakan halal semua. Beberapa kafe halal nan trendi tersebut terkonsentrasi di area Bugis, atau sering juga disebut sebagai Arab Quarter atau Kampong Glam. Area Bugis, di antara stasiun MRT Bugis dan MRT Lavender, memang pilihan utama sebagai base camp untuk traveler muslim. Di sini gampang dijumpai restoran, kafe, dan bakery halal. Dua pilihan restoran halal untuk makan besar (makan nasi) adalah Zam-Zam dan Hjh Maimunah . Zam-Zam lokasinya di 679 North Bridge Rd, persis di seberang Masjid Sultan. Resto ini menyajikan masakan India. Coba deh murtabak-nya yang terkenal enak banget. Sementara restoran Hjh Maimunah adalah salah satu restoran halal yang mendapat Michelin Star (peringkat untuk restoran yang bagu

Call : 085813134112 Jasa Fogging Nyamuk di Jatiasih Bekasi

Call : 085813134112 Jasa Fogging Nyamuk di Jatiasih Bekasi , Jasa Pembasmi Kecoa di Medan Satria Bekasi, Jasa Pembasmi Cicak di Mustika Jaya Bekasi, Jasa Pembasmi Tawon di Pondok Melati Bekasi, Jasa Pembasmi Tomcat di Rawalumbu Bekasi, Jatisampurna Bekasi, Pondok Gede Bekasi. Garda Pest Control juga hadir diberbagai Kota lainnya seperti Jasa Fogging Nyamuk di Bali, Jasa Pembasmi Tawon di Cirebon, Jasa Pembasmi Kutu Kucing di Kemang, Jasa Pembasmi Tikus di Bogor, Jasa Pembasmi Kutu Anjing di Bandung, Jakarta Barat, Tangerang Selatan, Makassar, Palembang, Surabaya, Solo dll. Penyakit demam berdarah disebabkan oleh virus dengue yang diketahui memiliki empat serotipe virus dengue, di antaranya DEN-1, DEN-2, DEN-3, dan DEN-4. Di Indonesia sendiri, virus ini ditularkan oleh dua jenis nyamuk demam berdarah betina, yaitu Aedes aegypti sebagai vektor utama dan Aedes albopictus sebagai vektor sekunder. Jenis nyamuk demam berdarah ini memiliki sifat anthropofilik, artinya

Tip Belanja Belanji di Sydney

Window display di QVB Setahun sekali di Sydney, ada hari khusus untuk berbelanja gila-gilaan, ketika SEMUA toko menawarkan diskon. Mereka menyebutnya Boxing Day . Saya menyebutnya Hari Raya Berbelanja :) Boxing Day dirayakan setiap tanggal 26 Desember, satu hari setelah Natal. Tadinya saya pikir Boxing Day ini berkaitan dengan 'tinju', tapi tinju yang bagaimana? Ternyata bukaaan. Pada awalnya, Boxing Day ini diramaikan dengan memberikan hadiah (natal) untuk orang-orang miskin, yang dikemas dalam kotak (box). Tapi maknanya kemudian bergeser menjadi hari belanja untuk menghabiskan uang lebaran atau angpao :) Biasanya, sebelum datang tanggal ini, orang-orang sudah mengincar apa yang ingin mereka beli pada Boxing Day. Katalog SALE bisa dilihat di internet, website masing-masing toko atau di Lasoo . Pasukan belanja sampai mati ini biasanya mengincar merk-merk terkenal, gaun-gaun disainer yang hanya memberi diskon setahun sekali pada hari tersebut. Nggak heran kalau mereka sampai bel