티스토리 뷰
지난 포스팅(Babel Polyfill을 적용하는 방법들)에서
@babel/plugin-transform-runtime 플러그인에 corejs 옵션을 줘서 폴리필하는 방법을 소개했었는데
최근에 @babel/preset-env의 useBuiltIns, corejs 옵션으로도 폴리필을 적용할 수 있다는걸 알게 되어서
각 방법에 어떠한 차이가 있는지 간단히 조사해 보았다.
먼저 Promise 를 사용하는 코드를 작성했다.
class Controller {
constructor() {
new Promise(resolve => {
setTimeout(resolve, 1000);
})
.then(() => {
console.log("Complete!!", Promise);
});
}
}
그리고 각각의 방법을 적용한 결과를 확인해 보았다.
@babel/preset-env 적용하여 변환된 코드
var Controller = function Controller() {
new Promise(function (resolve) {
setTimeout(resolve, 1000);
}).then(function () {
console.log("Complete!!", Promise);
});
};
Promise를 사용하는 코드가 그대로 있다.
@babel/plugin-transform-runtime 적용하여 변환된 코드
var Controller = function Controller() {
new _promise["default"](function (resolve) {
(0, _setTimeout2["default"])(resolve, 1000);
}).then(function () {
console.log("Complete!!", _promise["default"]);
});
};
Promise를 사용하는 코드가 _promise로 변경되었다.
간단 정리
@babel/preset-env { useBuiltIns: “entry”, corejs: 3 }
- 폴리필 메서드들을 전역 스코프에 추가한다.
- deprecated 된 @babel/polyfill을 대체한다.
- 전역 오염 O
@babel/preset-env { useBuiltIns: “usage”, corejs: 3 }
- 사용된 폴리필 메서드만 전역 스코프에 추가한다.
- 전역 오염 O
@babel/plugin-transform-runtime { corejs: 3 }
- 사용된 폴리필 메서드만 포함시키고, 해당 폴리필 메서드를 사용하도록 원본 코드를 변경한다.
- 전역 오염 X
참고 문서
'dev' 카테고리의 다른 글
Babel Polyfill 적용하는 방법들 (0) | 2019.08.08 |
---|---|
번들 시각화 도구 - Webpack Bundle Analyzer (0) | 2019.08.08 |
객체 지향 설계 포인트 (0) | 2016.06.06 |
댓글
글 보관함
TAG
- 개발
- OOP
- babel-polyfill
- polyfill
- 프로그래밍
- @babel/preset-env
- corejs
- @babel/polyfill
- fe
- babel polyfill
- webpack
- webpack-bundle-analyzer
- 객체지향
- babel/plugin-transform-runtime
- Analyzer
- webpack bundle analyzer
- JavaScript
- 구조설계
- @babel/plugin-transform-runtime
- bundle analyzer
- babel
- frontend
최근에 올라온 글
최근에 달린 댓글