1 ๋ถ„ ์†Œ์š”

Babel? ๐Ÿ’ฏ

babel : JS์˜ ES6+ ์ฝ”๋“œ๋ฅผ ํ˜„์žฌ ๋ฐ ๊ณผ๊ฑฐ์˜ ๋ธŒ๋ผ์šฐ์ €์™€ ๊ฐ™์€ ํ™˜๊ฒฝ์—์„œ ํ˜ธํ™˜๋˜๋Š” ๋ฒ„์ „์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š”๋ฐ ์ฃผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ์ปดํŒŒ์ผ๋Ÿฌ์ด๋‹ค.

ํƒ„์ƒ๋ฐฐ๊ฒฝ

Cross Browsing : ๋‹ค๋ฅธ ๊ธฐ์ข… ํ˜น์€ ํ”Œ๋žซํผ์— ๋”ฐ๋ผ ๋‹ฌ๋ฆฌ ๊ตฌํ˜„๋˜๋Š” ๊ธฐ์ˆ ์„ ๋น„์Šทํ•˜๊ฒŒ ๋งŒ๋“ฆ๊ณผ ๋™์‹œ์— ์–ด๋Š ํ•œ์ชฝ์— ์ตœ์ ํ™”๋˜์–ด ์น˜์šฐ์ง€์ง€ ์•Š๋„๋ก ๊ณตํ†ต ์š”์†Œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์›น ํŽ˜์ด์ง€๋ฅผ ์ œ์ž‘ํ•˜๋Š” ๊ธฐ๋ฒ•์„ ๋งํ•œ๋‹ค. ๋˜ํ•œ, ์ง€์›ํ•  ์ˆ˜ ์—†๋Š” ๋‹ค๋ฅธ ์›น ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์œ„ํ•œ ์žฅ์น˜๋ฅผ ๊ตฌํ˜„ํ•˜์—ฌ ๋ชจ๋“  ์›น ๋ธŒ๋ผ์šฐ์ € ์‚ฌ์šฉ์ž๊ฐ€ ๋ฐฉ๋ฌธํ–ˆ์„ ๋•Œ ์ •๋ณด๋กœ์„œ์˜ ์†Œ์™ธ๊ฐ์„ ๋Š๋ผ์ง€ ์•Š๋„๋ก ํ•˜๋Š” ๋ฐฉ๋ฒ•๋ก ์  ๊ฐ€์ด๋“œ๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

IE์—์„œ๋งŒ ํ•ด๋„ ES6์˜ ๋ฌธ๋ฒ•๋“ค์„ ์ง€์›ํ•˜์ง€์•Š๋Š”๋‹ค. ๊ทธ๋ ‡๊ธฐ์— ES6 ๋ฌธ๋ฒ•๋“ค๋กœ ๊ตฌ์„ฑ๋œ ์ฝ”๋“œ๋“ค์€ IE์—์„œ๋Š” ์ œ๋Œ€๋กœ๋œ ๊ธฐ๋Šฅ์„ ํ•˜์ง€๋ชปํ• ๊ฒƒ์ด๋‹ค.

๊ทธ๋ ‡๊ธฐ์— ๊ฐœ๋ฐœ์ž๋“ค์—๊ฒŒ ํฌ๋กœ์Šค ๋ธŒ๋ผ์šฐ์ง• ์ด์Šˆ๋Š” ์ฝ”๋“œ์˜ ์ผ๊ด€์„ฑ๋„ ๋ง๊ฐ€ํŠธ๋ฆฌ๊ณ  ํ˜ผ๋ž€์Šค๋Ÿฝ๊ฒŒ ๋งŒ๋“œ๋Š” ์š”์†Œ ์ค‘ ํ•˜๋‚˜์ด๋‹ค.

์ด๋Ÿฌํ•œ ํฌ๋กœ์Šค ๋ธŒ๋ผ์šฐ์ง• ์ด์Šˆ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ƒ๊ฒจ๋‚œ ํˆด์ด ๋ฐ”๋ฒจ์ด๋‹ค

๋ธŒ๋ผ์šฐ์ €๋ณ„ ES6 ์ง€์›ํ˜„ํ™ฉ click

์ถœ์ฒ˜ click

์‚ฌ์šฉ๋ฐฉ๋ฒ•


npm install @babel/node โžก๏ธ Babel-node๋Š” Babel-cli์—์„œ ๋…๋ฆฝ๋œ ๋ชจ๋“ˆ๋กœ node cli(Command-lind Interface) ์ฒ˜๋Ÿผ ๋™์ž‘ํ•จ. ์ด์— ๋”ฐ๋ผ node index.js ๋ช…๋ น์–ด๋ฅผ babel-node index.js๋กœ ์“ธ ์ˆ˜ ์žˆ์Œ. ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ Node.js ์‹คํ–‰ ์ „ Babel์˜ ์„ค์ •๊ณผ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๊ณ ๋ คํ•˜์—ฌ ์ปดํŒŒ์ผ ํ•ด์ฃผ๋Š” ์ด์ ์ด ์žˆ์Œ. ( ์ฃผ์˜) ๋ฌด๊ฒ๊ธฐ๋•Œ๋ฌธ์— ๊ฐœ๋ฐœ๋‹จ๊ณ„์—์„œ๋งŒ ํ™•์ธ์šฉ์œผ๋กœ ์‚ฌ์šฉ )

npm install @babel/core โžก๏ธ ๋ฐ”๋ฒจ(Babel)์˜ ํ•ต์‹ฌ(์ฃผ์š”) ๊ธฐ๋Šฅ๋“ค์„ ๋‹ด๊ณ  ์žˆ๋Š” ๋ชจ๋“ˆ

npm install @babel/preset-env โžก๏ธ ํ”„๋ฆฌ์…‹(Preset)์€ ๋ฐ”๋ฒจ(Babel) ํ”Œ๋Ÿฌ๊ทธ์ธ(Plugin) ๋“ค์„ ๋ฌถ์Œ(Bundle)๋กœ ๋งŒ๋“ค์–ด๋†“์€ ๊ฒƒ. ํ”„๋ฆฌ์…‹(Preset)์„ ํ†ตํ•ด ๊ฐ„ํŽธํ•˜๊ฒŒ Trans File ์„ค์ •์„ ํ•  ์ˆ˜ ์žˆ์Œ. ์—ฌ๊ธฐ์„œ๋Š” ๋ฒ”์šฉ์ ์œผ๋กœ ์“ฐ์ด๋Š” env ํ”„๋ฆฌ์…‹์„ ์‚ฌ์šฉ


.babelrc

{
    "presets": ["@babel/preset-env"]
}


package.json

  "scripts": {
    "start": "nodemon server.js --exec babel-node "
 }


server.js

import express from "express"
// ES6 import ๋ฌธ๋ฒ• ์‚ฌ์šฉ
// const express = require('express'); -> import express from "express"
const app = express();
const PORT = 4000;
const home = (req, res) => {
    res.send(`Welcome to my Home!`);
}
app.get('/', home);
const Listening = () => {
    console.log(`Listening on: http://localhost:${PORT}`);
}
app.listen(PORT, Listening);
import ๋ถ€๋ถ„์— ์—๋Ÿฌ๊ฐ€ ๋‚˜์ง€ ์•Š์•˜๋‹ค๋ฉด babel์ด ์ •์ƒ์ž‘๋™ํ•˜๋Š” ๊ฒƒ


๋

์—…๋ฐ์ดํŠธ: