자바스크립트 기반 정적 모듈 번들러
자바스크립트 컴파일러
// Babel Input: ES2015 arrow function
[1, 2, 3].map(n => n + 1);
// Babel Output: ES5 equivalent
[1, 2, 3].map(function(n) {
return n + 1;
});
브라우저가 지원하지 않는 최신 기능을 제공하는 데 필요한 코드.
간단한 예시를 보자. 아래 코드는 최신 브라우저에서는 잘 동작하지만, 오래된 브라우저에서는 실패한다. 객체나 메서드에 대한 구현이 없기 때문이다.
[1, 2, 3].at(-1);
Promise.resolve(1);
new Set(1, 2, 3);
이때 위 코드를 실행시키기 위해서 Polyfill을 한다.
Array.prototype.at = Array.prototype.at ?? /* Array.prototype.at에 대한 자체 구현 */;
최신 브라우저는 폴리필이 필요 없는데, 만들어 놓은 폴리필 스크립트를 내려 받는다. 비효율적이다.