λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
Front-end/Browser

Babel κ³Ό Babel 이 ν•„μš”ν•œ 이유

by ciocio 2022. 4. 3.

πŸ“Œ Babel μ΄λž€ ?

Babel is a JavaScript Compiler ...?
Babel is a JavaScript Transpiler ...!
같은 μ–Έμ–΄λ₯Ό λ‹€λ₯Έ μ‹€ν–‰ ν™˜κ²½μ—μ„œλ„ λŒμ•„κ°ˆ 수 μžˆλ„λ‘ ν˜•νƒœλ§Œ λ°”κΎΈλŠ” μž‘μ—…μ„ μ§„ν–‰ν•œλ‹€.

 

 

πŸ“ Babel λ“±μž₯ 이유

Cross Browsing μ„ 돕기 μœ„ν•΄ λ“±μž₯ν•˜μ˜€λ‹€.

πŸ€” Cross Browsing (크둜슀 λΈŒλΌμš°μ§•) ?
λΈŒλΌμš°μ €λ‚˜ 기기의 μ’…λ₯˜μ— 관계없이 μ‚¬μ΄νŠΈκ°€ μ˜λ„λŒ€λ‘œ 보여지고 μž‘λ™λ˜κ²Œ ν•˜λŠ” μž‘μ—…. (ν˜Έν™˜μ„±)
λΈŒλΌμš°μ €λ§ˆλ‹€ λ Œλ”링 엔진이 λ‹€λ₯΄κΈ° λ•Œλ¬Έμ— 개발자의 μ˜λ„λŒ€λ‘œ μž‘λ™ν•˜μ§€ μ•ŠλŠ” κ²½μš°κ°€ λ°œμƒν•œλ‹€.
κ·Έλž˜μ„œ 크둜슀 λΈŒλΌμš°μ§• μž‘μ—…μ΄ μΆ”κ°€λ‘œ ν•„μš”ν•¨. πŸ˜‚

 

 

πŸ“Ž Babel 이 λΉŒλ“œν•˜λŠ” κ³Όμ •

1. Parsing (νŒŒμ‹±) : μ½”λ“œ → AST λ³€ν™˜ κ³Όμ •
2. Transforming (λ³€ν™˜) : AST → μ›ν•˜λŠ” ν˜•νƒœλ‘œ λ³€ν™˜ [Babel Plugin μ„€μ • μ€‘μš” ⭐]
3. Printing (좜λ ₯) : λ³€ν™˜λœ κ²°κ³Όλ¬Ό 좜λ ₯

 

•  Plugin : 문법 λ³€ν™˜ κ·œμΉ™μ„ ν•˜λ‚˜ν•˜λ‚˜ μ„Έμ„Έν•˜κ²Œ μ μš©ν•  λ•Œ μ‚¬μš©

•  Preset : 자주 μ“°λŠ” κ·œμΉ™λ“€μ„ λ¬Άμ–΄ 놓은 μ„ΈνŠΈλ‘œ, ν•œλ²ˆμ— μ μš©ν•  λ•Œ μ‚¬μš©

 

 

πŸ“Œ Babel-polyfill μ΄λž€ ?

μ΅œμ‹  ECMAScript ν™˜κ²½μ„ μ œκ³΅ν•˜κΈ° μœ„ν•΄
μ½”λ“œκ°€ μ‹€ν–‰λ˜λŠ” ν™˜κ²½μ— μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” λ©”μ„œλ“œλ“€μ„ μΆ”κ°€ν•˜λŠ” 역할을 ν•œλ‹€.

ex. ν”„λ‘œκ·Έλž¨μ΄ μ²˜μŒμ— μ‹œμž‘λ  λ•Œ ν˜„μž¬ λΈŒλΌμš°μ €μ—μ„œ μ§€μ›ν•˜μ§€ μ•ŠλŠ” ν•¨μˆ˜λ₯Ό κ²€μ‚¬ν•΄μ„œ

      각 Object.prototype 에 λΆ™μ—¬μ£ΌλŠ” μž‘μ—… 진행.

 

 

πŸ“ Babel vs Babel-polyfill

Babel 은 Compile-time 에 μ‹€ν–‰λ˜κ³ , Babel-polyfill 은 Run-time 에 μ‹€ν–‰λœλ‹€.

 

 

•  ν˜„μž¬ 이 κΈ°μˆ μ„ 써도 λ˜λŠ”μ§€ μ•ˆλ˜λŠ”μ§€ κ²€μˆ˜ μ‚¬μ΄νŠΈ

https://caniuse.com/

λ°˜μ‘ν˜•

λŒ“κΈ€