Introdução ao Babel


O Babel é uma ferramenta que realiza a transpilação do código JavaScript moderno (ES6/ES7 e superiores) para versões mais antigas compatíveis com a maioria dos navegadores.

Nota

As etapas de instalação e configuração estão descritas na nota: Configuração do Babel.

Isso garante que o código escrito usando as últimas características da linguagem possa ser executado em ambientes que não suportam nativamente essas funcionalidades.

Exemplo

Código fonte

class Pessoa {
  constructor(nome, sobrenome) {
    this.nome = nome;
    this.sobrenome = sobrenome;
  }
}

Código transpilado

"use strict";
 
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
 
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
 
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
 
var Pessoa = /*#__PURE__*/_createClass(function Pessoa(nome, sobrenome) {
	_classCallCheck(this, Pessoa);
	
	this.nome = nome;
	this.sobrenome = sobrenome;
});

Utilização do Babel para criação de bundle

Em ambiente de produção, será utilizado o código gerado pelo Babel (bundle.js), afim dar suporte a todos os navegadores:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <script src="bundle.js"></script>
</body>
</html>

Referências