The goals
๐ช๐ปWhat is "Browser Support" About?
โ๐ปDetermining Required Support
๐๐ปFinding Out Which Feature Works Where
๐๐ปPolyfills
๐ค๐ปTranspilation
Babel
- ES6/7 ์ฝ๋๋ฅผ ES5 ์ฝ๋๋ก Transpiling ํด์ฃผ๋ Transpiler
- ES5 ์ด์ ๊น์ง๋ ํ์ค์ด ์์๊ณ , jquery ๊ฐ ๋ธ๋ผ์ฐ์ ํธํ์ฑ์ ํด๊ฒฐํด์ค ์ ์๊ธฐ ๋๋ฌธ์ ํ์ ์์์
- Babel ์ ์คํฌ๋ฆฝํธ ์์ฒด๊ฐ ์์ ๋์ด์ผ ํ๋ ์ํฉ์ผ๋ก ์๋ก์ด ์ปดํ์ผ์ด ํ์ํ ๋ ์ฌ์ฉํจ
- ์๋ฐ์คํฌ๋ฆฝํธ ์คํ์ผ๋ก ์์ง ํ์ ๋์ง ์์ Proposal ์คํ์ด 5๊ฐ์ Stage ๋ก ๊ตฌ๋ถ๋์ด ์กด์ฌํ๋๋ฐ, Babel ์ ๊ฐ๊ฐ์ Stage ์ ๋ํด Preset ์ ์ ๊ณตํจ
์๋์ Arrow Function (=>) ์ ES6 ์์ ์ถ๊ฐ๋ ํจ์ ํํ์์ผ๋ก, ํ์ดํ ํํ์ (=>) ์ Javascript ์ Syntax ๊ฐ ์๋๊ธฐ ๋๋ฌธ์ Javscript ๊ฐ ์ฝ์ ์ ์๋ ์คํฌ๋ฆฝํธ๋ก ์ฌ ์์ฑ ๋์ด ์๋ก ์ปดํ์ผ ๋์ด์ผ ํ๋ค.
Babel ์
function addAdd(){
return Array.from(arguments).map(a => a + 2);
}
Babel ํ
function addAdd () {
return Array.from(argument).map(function(a) {
return a + 2;
})
}
Polyfill
- ์๋ก ์ถ๊ฐ๋ ์ ์ญ ๊ฐ์ฒด๋ค(Promise, Map, Set)์ ์ฌ์ฉ๊ฐ๋ฅํ ๊ฐ์ฒด๋ก ๋ฐ๊พธ์ด์ฃผ๋ ๊ฐ๋
- ๋ธ๋ผ์ฐ์ ํํธํ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ง์ํ์ง ์๋ ๊ณต๋ฐฑ์ ๋งค๊พธ๋ ์คํฌ๋ฆฝํธ๋ ๊ธฐํ ์ฝ๋๋ฅผ ๋ผ์๋ฃ์ด์ค
Bable ๊ณผ Polyfill ์ ๊ตฌ๋ถ๋์ด์ผ ํ๋ ๊ฐ๋ ์ธ๋ฐ, Babel ์ด Javascript ์ Syntax ๊ฐ ์๋ ๊ฒ๋ค์ Javascript ์์ ์ฌ์ฉํ ์ ์๊ฒ ๋ง๋ค์ด ์ค๋ค๋ฉด, Polyfill ์ Javascript ์ Syntax ๋ก ์ฝํ์ง๋ง ์ ์๋์ด ์์ง ์์ ๊ฐ์ฒด๋ค์ ์ ์ํด์ฃผ๋ ๊ฐ๋ ์ ๋งํ๋ค.
์๋ฅผ๋ค์ด Promise ๊ฐ์ฒด๋ ๊ธฐ์กด์ ์กด์ฌํ์ง ์๋ ES6 ์์ ์ถ๊ฐ๋ ๊ฐ์ฒด๋ก, ES6 ์ด์ ์์ new Promise() ๋ฅผ ํ๋ ๊ฒฝ์ฐ Javascript ์ Syntax ์ด์ง๋ง ์ ์๋์ง ์๋ function ์ด๋ผ๋ ์๋ฏธ์์ 'Promise is not a function' ์ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฌ์ค๋ค. Polyfill ๊ฐ๋ ์ ์ด์ฉํด Promise ๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ์ ์ํด์ฃผ๋ ๊ฒ์ Babel-Polyfill ์ด ํด์ค ์ ์๋ค.
Babel-Polyfill
๋ด๋ถ์ ์ผ๋ก ํ๋ถ์์ ๋ง๋ Generator Function Polyfill ์ธ regenerator-runtime ๊ณผ ES6/7 Polyfill ์ธ core.js๋ฅผ ์ฃผ์ dependency ๋ก ๊ฐ์ง๊ณ ์์ผ๋ฉฐ, ์์ ์ ์ธ Polyfill ๋ค์ ์ฌ์ฉํ๊ธฐ ํธ๋ฆฌํ๊ฒ ๋ฉํํด ๋์ ๋ชจ๋๋ก ์ค์ ์ฌ์ฉํ์ง ์๋ Polyfill ๋ ๋ชฝ๋ ์ถ๊ฐ๋๋ฏ๋ก ๋ฒ๋ค๋ง ๋๋ ํ์ผ์ ํฌ๊ธฐ๊ฐ ์ปค์ง๊ฒ ๋๋ ๋จ์ ์ด ์กด์ฌํ๋ค. ํ ํ์ด์ง์์ ๋ฑ ํ๋์ babel-polypill ํธ์ถ๋ง ํ์ฉ๋๋ค.
Babel-loader
Sources
https://github.com/babel/babel-loader
GitHub - babel/babel-loader: ๐ฆ Babel loader for webpack
๐ฆ Babel loader for webpack. Contribute to babel/babel-loader development by creating an account on GitHub.
github.com
'JavaScript - The Complete Guide 2022' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Section 25: JavaScript Frameworks - Focusing On What Matters (0) | 2022.11.07 |
---|---|
Section 24: Time to Practice! - Let's build a Webpage (0) | 2022.11.07 |
Section 22: Browser Storage - Storing (Some) Data Locally (0) | 2022.11.04 |
Section 21: JavaScript Tooling - Beyond Basic Projects (0) | 2022.11.04 |
Section 20: JavaScript Modules - Writing Modular (=Multi-File) Code (0) | 2022.11.03 |