Belajar Babel Loader Javascript ES6

DAFTAR ISI
2020031319583407bf63e74fd402a5583504377dfd8829.png
Apa itu babel atau babel.js? Babel merupakan suatu transpiler yang bertugas untuk merubah sintaks JavaScript modern (ES6+) jadi sintaks yang bisa didukung penuh oleh semua browser.

JavaScript merupakan bahasa pemrograman yang berkembang sangat cepat. Komunitasnya besar, dan tiap tahun selalu terdapat versi yang baru. 
Tetapi perkembangan yang cepat tadi ternyata memerlukan waktu yang lama untuk diadaptasi oleh browser atau Node.js. Lalu bila kita mau mencoba sintaks paling baru di JavaScript apakah kita harus menanti sampai seluruh browser berhasil mengadaptasi pembaharuan itu? Tentu tidak! 
Dengan babel Kamu bisa menuliskan sintaks JavaScript versi paling baru tanpa cemas memikirkan dukungan pada browser. Sebab babel akan merubah sintaks yang kita tuliskan jadi kode yang bisa diterima browser.
Bila Kamu penasaran bagaimana cara babel bekerja, babel menyediakan sebuah playground yang bisa kita manfaatkan untuk merubah sintaks JavaScript modern (ES6+) jadi sintaks lama. Untuk mencobanya, silakan Kamu buka tautan berikut: https://babeljs.io/repl.
20200313195932ff6b88f0352e20c9c08f27fd89aff700.png
Pada playground itu kita juga bisa memilih preset yang kita harapkan. Secara default preset akan mengarah ES2015 (ES6).
Kamu telah tahu  sepintas terkait babel. Nah pada webpack kita juga bisa memakai babel dalam wujud loader. 
Meskipun webpack secara standarnya bisa memproses berkas JavaScript tanpa harus bantuan loader, tetapi proses itu tidak merubah sintaks yang kita tuliskan. 
Artinya bila kita menuliskan sintaks JavaScript modern, maka kita akan menemukannya pula pada berkas bundle.js.
2020031320001286d0cce40a7f1f8ac22836dcbab4867b.png
Meskipun sekarang ini Google Chrome dan Mozilla Firefox telah mendukung penulisan sintaks ES6, tetapi setidaknya kita harus sedikit peduli terhadap dukungan browser lama seperti Internet Explorer atau browser versi lama lainnya.
Untuk memakai babel pada webpack sebagai loader, kita harus memasang tiga package memakai 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 perlu dipasang saat kita akan memakai babel, baik pada webpack ataupun tools yang lain.
Package babel-loader merupakan package yang dibutuhkan untuk memakai babel sebagai loader pada webpack.
Yang terakhir package @babel/preset-env merupakan package preset yang akan kita pakai untuk membantu babel-loader dalam melakukan tugasnya. 
@babel/preset-env merupakan preset cerdas yang memungkinkan kita memakai sintaks JavaScript paling baru tanpa menetapkan secara rinci sintaks JavaScript versi apa yang kita pakai.
Berkas package.json akan terlihat semacam ini sesudah memasang ketiga package itu:

  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. }


Sesudah berhasil memasang ketiga package itu, langkah berikutnya kita bisa pakai 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. }


Saat menerapkan rule untuk berkas .js, jangan sampai lupa untuk menetapkan properti exclude dengan nilai “/node_modules/”. 
Apa artinya? Dengan memutuskan properti exclude itu artinya kita mengecualikan webpack untuk memproses berkas .js yang berada di folder “node_modules”. 
Hal ini bisa mengurangi proses yang tidak dibutuhkan, sehingga mempercepat proses build pada proyek kita.  
Kemudian pada penerapan babel-loader juga kita memakai properti options dengan memutuskan properti presets di dalamnya. Pada properti presets kita tetapkan preset (dalam wujud array literas) yang telah kita pasang memakai npm, yaitu @babel/preset-env.
Sesudah memakai babel loader pada webpack configuration, ayo kita coba build dan buka kembali berkas bundle.js
Maka kode yang kita tuliskan dalam ES6 akan diubah dalam sintaks yang bisa diterima oleh semua browser.
20200313200507f7a720e39de819c62a15f1be147aa62e.png
Bahkan pada berkas bundle itu dipastikan sudah terdapat lagi sintaks yang dituliskan memakai ES6.
20200313200535f035aab9b99622b9e95be3f0d98fc827.png
Tetapi meskipun sintaksnya telah diubah, proyek akan tetap berjalan normal seperti pada umumnya.
Contoh: 
https://github.com/dicodingacademy/a163-bfwd-labs/tree/207-webclock-webpack-using-loader
Baca Juga:  5 Poin Penting Quality Control dalam Pengembangan Aplikasi Seluler

Ebook Gratis!!

Subscribe untuk dapatkan e-book GRATIS dan informasi teknologi terbaru dan diskon menarik langsung di Email-mu

Programmer Indonesia
Programmer Indonesia
Admin yang mengelola konten khusus berita. Kalau ada yang ingin diinfokan langsung chat aja ya :D
0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Inline Feedbacks
View all comments
WhatsApp chat