Jieunny์˜ ๋ธ”๋กœ๊ทธ

S4) Unit 3. [React] ๋ฒˆ๋“ค๋ง๊ณผ ์›นํŒฉ ๋ณธ๋ฌธ

CodeStates/learning contents

S4) Unit 3. [React] ๋ฒˆ๋“ค๋ง๊ณผ ์›นํŒฉ

Jieunny 2023. 3. 20. 11:16

๐Ÿ“ฃ  ๋ฒˆ๋“ค๋ง์ด๋ž€?

๐Ÿญ. ๋ฒˆ๋“ค์˜ ์ •์˜

โœ”๏ธ ์‚ฌ์šฉ์ž์—๊ฒŒ ์›น ์• ํ”„๋ฆฌ์ผ€์ด์…˜์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•œ ํŒŒ์ผ ๋ฌถ์Œ

โžฐ ์‚ฌ์šฉ์ž๊ฐ€ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์—ด๊ณ  ์ฃผ์†Œ๋ฅผ ์ž…๋ ฅํ•˜๋ฉด, ํ•ด๋‹น ์ฃผ์†Œ์—์„œ ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ฒˆ๋“ค๋งํ•œ ์—ฌ๋Ÿฌ ํŒŒ์ผ์„ ๋ฐ›๋Š”๋‹ค.

โžฐ ์ด ํŒŒ์ผ์„ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์‹คํ–‰ํ•˜์—ฌ ๋ฉ‹์ง„ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ œ๊ณตํ•˜๊ฒŒ ๋œ๋‹ค.

 

๐Ÿฎ. ๋ฒˆ๋“ค๋ง์˜ ํ•„์š”์„ฑ

โœ”๏ธ ์•„๋ž˜์™€ ๊ฐ™์€ ๊ฒฝ์šฐ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๊ฒฝ์šฐ๋ฅผ ๋Œ€๋น„ํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค.

โžฐ ๋‘ ๊ฐœ์˜ .js ํŒŒ์ผ์—์„œ ๊ฐ™์€ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์–ด ๋ณ€์ˆ˜ ๊ฐ„ ์ถฉ๋Œ์ด ์ผ์–ด๋‚ฌ๋‹ค.

โžฐ ๋”ฑ ํ•œ ๋ฒˆ ๋ถˆ๋Ÿฌ์˜ค๋Š” ํ”„๋ ˆ์ž„์›Œํฌ ์ฝ”๋“œ๊ฐ€ 8MB๋ผ์„œ, ์ธํ„ฐ๋„ท ์†๋„๊ฐ€ ๋Š๋ฆฐ ๊ตญ๊ฐ€์˜ ๋ชจ๋ฐ”์ผ ํ™˜๊ฒฝ์—์„œ ์‚ฌ์šฉ์ž๊ฐ€ ๋ถˆํŽธ์„ ํ˜ธ์†Œํ•œ๋‹ค.

โžฐ ๋ฒˆ๋“ค ํŒŒ์ผ ์‚ฌ์ด์ฆˆ๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด์„œ ํŒŒ์ผ์˜ ๊ณต๋ฐฑ์„ ๋ชจ๋‘ ์ง€์› ๋Š”๋ฐ, ๊ฐ€๋…์„ฑ์ด ๋„ˆ๋ฌด ๋–จ์–ด์ ธ์„œ ์ฝ”๋”ฉํ•˜๊ธฐ๊ฐ€ ์–ด๋ ต๋‹ค. ๊ฒฐ๊ตญ ๊ทธ๋Œ€๋กœ ๊ณต๋ฐฑ์„ ๋˜๋Œ๋ ค์„œ ์ฝ”๋”ฉํ•œ๋‹ค.

โžฐ ๋ฐฐํฌ ์ฝ”๋“œ๊ฐ€ ๋„ˆ๋ฌด ์ฝ๊ธฐ ์‰ฌ์›Œ ๊ฐœ๋ฐœ์„ ํ•  ์ค„ ์•„๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ํ”„๋ก ํŠธ์—”๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ž„์˜๋กœ ์กฐ์ž‘ํ•˜์—ฌ ํ”ผํ•ด๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.


๐Ÿ“ฃ  ์›นํŒฉ ์ด๋ž€?

๐Ÿญ. Webpack

โœ”๏ธ ํ”„๋ก ํŠธ์—”๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐฐํฌ๋ฅผ ์œ„ํ•ด ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ๋ฒˆ๋“ค๋Ÿฌ

โœ”๏ธ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํŒŒ์ผ์„ ํ•˜๋‚˜์˜ ํŒŒ์ผ๋กœ ํ•ฉ์ณ์ฃผ๋Š” ๋ชจ๋“ˆ ๋ฒˆ๋“ค๋Ÿฌ

โžฐ ๋ชจ๋“ˆ ๋ฒˆ๋“ค๋Ÿฌ : HTML, CSS, JS ๋“ฑ์˜ ์ž์›์„ ์ „๋ถ€ ๊ฐ๊ฐ์˜ ๋ชจ๋“ˆ๋กœ ๋ณด๊ณ  ์ด๋ฅผ ์กฐํ•ฉํ•ด ํ•˜๋‚˜์˜ ๋ฌถ์Œ์œผ๋กœ ๋ฒˆ๋“ค๋ง(๋นŒ๋“œ)ํ•˜๋Š” ๋„๊ตฌ

 

๐Ÿฎ. ๋ชจ๋“ˆ ๋ฒˆ๋“ค๋Ÿฌ์˜ ๋“ฑ์žฅ

โœ”๏ธ JS ์ฝ”๋“œ์˜ ์–‘์ด ์ฆ๊ฐ€ํ•˜๊ณ , ๋Œ€ํ˜• ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋“ฑ์žฅํ•˜๋ฉด์„œ ์„ธ๋ถ„ํ™”๋œ ๋ชจ๋“ˆ ํŒŒ์ผ์ด ํญ๋ฐœ์ ์œผ๋กœ ์ฆ๊ฐ€ํ–ˆ๊ธฐ๋•Œ๋ฌธ์— ์ด ๋ชจ๋“ˆ ๋‹จ์œ„์˜ ํŒŒ์ผ๋“ค์„ ํ•˜๋‚˜์˜ ์‹œ์ž‘์ ์—์„œ ๋ชจ๋‘ ์ถ”์ ํ•˜์—ฌ ํ•˜๋‚˜์˜ ๊ฒฐ๊ณผ๋ฌผ์„ ๋งŒ๋“ค์–ด๋‚ด๋Š” ๋ชจ๋“ˆ ๋ฒˆ๋“ค๋Ÿฌ๊ฐ€ ๋“ฑ์žฅํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.

 

๐Ÿฏ. Webpack์—์„œ์˜ ๋ชจ๋“ˆ

โœ”๏ธ JS๋ชจ๋“ˆ์—๋งŒ ๊ตญํ•œํ•˜์ง€ ์•Š๊ณ  HTML, CSS, ์ด๋ฏธ์ง€ ํŒŒ์ผ๋“ค๋„ ์ „๋ถ€ ํฌํ•จํ•œ ํฌ๊ด„์ ์ธ ๊ฐœ๋…

 

๐Ÿฐ. ๋นŒ๋“œ์™€ ๋ฒˆ๋“ค๋ง

โœ”๏ธ ๋นŒ๋“œ : ๊ฐœ๋ฐœ์ด ์™„๋ฃŒ๋œ ์•ฑ์„ ๋ฐฐํฌํ•˜๊ธฐ ์œ„ํ•ด ํ•˜๋‚˜์˜ ํด๋”๋กœ ๊ตฌ์„ฑํ•˜์—ฌ ์ค€๋น„ํ•˜๋Š” ์ž‘์—…

โžฐ React์—์„œ npm run build๋ฅผ ์‹คํ–‰ํ•˜๋ฉด React build ์ž‘์—…์ด ์ง„ํ–‰๋˜๊ณ , index.html ํŒŒ์ผ์— ์••์ถ•๋˜์–ด ๋ฐฐํฌ์— ์ตœ์ ํ™”๋œ ์ƒํƒœ๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

โœ”๏ธ ๋ฒˆ๋“ค๋ง : ํŒŒ์ผ์„ ๋ฌถ๋Š” ์ž‘์—… ๊ทธ ์ž์ฒด(๋ชจ๋“ˆ ๊ฐ„์˜ ์˜์กด์„ฑ ๊ด€๊ณ„๋ฅผ ์ฐจ์•…ํ•ด ๊ทธ๋ฃนํ™” ํ•˜๋Š” ์ž‘์—…)

โžฐ ํŒŒ์ผ : ์˜์กด์  ๊ด€๊ณ„์— ์žˆ๋Š” ํŒŒ์ผ๋“ค(import, export) ๊ทธ ์ž์ฒด ํ˜น์€ ๋‚ด๋ถ€์ ์œผ๋กœ ํฌํ•จ ๋˜์–ด ์žˆ๋Š” ๋ชจ๋“ˆ์„ ์˜๋ฏธ

 

๐Ÿฑ. Webpack์˜ ํ•„์š”์„ฑ

1๏ธโƒฃ ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋น ๋ฅธ ๋กœ๋”ฉ ์†๋„์™€ ๋†’์€ ์„ฑ๋Šฅ์„ ์œ„ํ•ด์„œ ํ•„์š”ํ•˜๋‹ค.

โžฐ ๊ตฌ์„ฑํ•˜๋Š” ์ฝ”๋“œ์˜ ์–‘์ด ๋งŽ๋‹ค -> ๋ฌด๊ฒ๋‹ค -> ๋ฌด๊ฑฐ์šธ์ˆ˜๋ก ๋กœ๋”ฉ ์†๋„์™€ ์„ฑ๋Šฅ์ด ์ €ํ•˜๋œ๋‹ค.

 

2๏ธโƒฃ Webpack์ด ์žˆ๋‹ค๋ฉด ๊ฐ™์€ ํƒ€์ž…์˜ ํŒŒ์ผ๋“ค์€ ๋ฌถ์–ด์„œ ์š”์ฒญ ๋ฐ ์‘๋‹ต์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋„คํŠธ์›Œํฌ ๋น„์šฉ์ด ์ค„์–ด๋“ ๋‹ค.

 

3๏ธโƒฃ Webpack loader๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ผ๋ถ€ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ง€์›ํ•˜์ง€ ์•Š๋Š” JS ES6์˜ ๋ฌธ๋ฒ•๋“ค์„ ES5๋กœ ๋ณ€ํ™˜ํ•ด์ฃผ๋Š” babel-loader๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

 

4๏ธโƒฃ Webpack4 ๋ฒ„์ „ ์ด์ƒ๋ถ€ํ„ฐ๋Š” Development, Production ๋‘ ๊ฐ€์ง€ ๋ชจ๋“œ๋ฅผ ์ง€์›ํ•˜๋ฉด์„œ, Production ๋ชจ๋“œ๋กœ ๋ฒˆ๋“ค๋ง์„ ์ง„ํ–‰ํ•  ๊ฒฝ์šฐ, ์ฝ”๋“œ ๋‚œ๋…ํ™”, ์••์ถ•, ์ตœ์ ํ™” ์ž‘์—…์„ ์ง€์›ํ•˜๊ธฐ๋„ ํ•œ๋‹ค.


๐Ÿ“ฃ  ์›นํŒฉ์˜ ํ•ต์‹ฌ ๊ฐœ๋…

// webpack์˜ config ํŒŒ์ผ'
module.exports = {
  target: ["web", "es5"],
  // ์ž‘์„ฑ๋œ ์ฝ”๋“œ๋ฅผ es5 ๋ฒ„์ „์œผ๋กœ ์ปดํŒŒ์ผ ํ•˜๊ฒ ๋‹ค.
  entry: "./src/script.js",
  output: {
    path: path.resolve(__dirname, "docs"),
    filename: "app.bundle.js",
    clean: true
  },
  module: {
    rules: [
      {
        test: /\.css$/,
        use: [MiniCssExtractPlugin.loader, "css-loader"],
        exclude: /node_modules/,
      },
    ],
  },
  plugins: [
    new HtmlWebpackPlugin({
    // ์ƒ์„ฑ๋œ ๋ชจ๋“  ๋ฒˆ๋“ค์„ ์ž๋™์œผ๋กœ ์‚ฝ์ž…ํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์šฉ HTML ํŒŒ์ผ์„ ์ƒ์„ฑํ•ด์ค€๋‹ค.
      template: path.resolve(__dirname, "src", "index.html"),
    }),
    new MiniCssExtractPlugin(),
    // CSS๋ฅผ ๋ณ„๋„์˜ ํŒŒ์ผ๋กœ ์ถ”์ถœํ•ด CSS๋ฅผ ํฌํ•จํ•˜๋Š” JS ํŒŒ์ผ ๋‹น CSSํŒŒ์ผ์„ ์ž‘์„ฑํ•ด์ฃผ๊ฒŒ๋” ์ง€์›ํ•œ๋‹ค.
  ],
  optimization: {
    minimizer: [
      new CssMinimizerPlugin(),
      // mini-css-extract-plugin์— ๊ด€๋ จ๋œ ๋ฒˆ๋“ค์„ ์ตœ์†Œํ™”ํ•˜๋„๋ก ์ง€์‹œํ•œ๋‹ค.
    ]
  }
};

1๏ธโƒฃ Target : Webpack์ด ์ปดํŒŒ์ผ ํ•  ์š”์†Œ

โžฐ ๊ธฐ๋ณธ ๊ฐ’์€ web์œผ๋กœ ์ ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ๊ธฐ๋ณธ ๊ฐ’์œผ๋กœ ์ ์šฉ๋œ๋‹ค.

 

2๏ธโƒฃ Entry : ์ฝ”๋“œ์˜ ์‹œ์ž‘์ 

โžฐ Webpack์€ ์ด Entry point๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ง๊ฐ„์ ‘์ ์œผ๋กœ ์˜์กดํ•˜๋Š” ๋‹ค๋ฅธ ๋ชจ๋“ˆ๊ณผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ฐพ์•„๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

โžฐ ๊ธฐ๋ณธ ๊ฐ’์€ ./src/index.js

 

3๏ธโƒฃ Output : ์ƒ์„ฑ๋œ ๋ฒˆ๋“ค์„ ๋‚ด๋ณด๋‚ผ ์œ„์น˜์™€ ์ด ํŒŒ์ผ์˜ ์ด๋ฆ„์„ ์ง€์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ webpack์—๊ฒŒ ์•Œ๋ ค์ฃผ๋Š” ์—ญํ• 

โžฐ ๊ธฐ๋ณธ ์ถœ๋ ฅ ํŒŒ์ผ์˜ ๊ฒฝ์šฐ์—๋Š” ./dist/main.js๋กœ, ์ƒ์„ฑ๋œ ๊ธฐํƒ€ ํŒŒ์ผ์˜ ๊ฒฝ์šฐ์—๋Š” ./dist ํด๋”๋กœ ์„ค์ •๋œ๋‹ค.

 

4๏ธโƒฃ Loader : Webpack์ด ๋‹ค๋ฅธ ์œ ํ˜•์˜ ํŒŒ์ผ์„ ์ฒ˜๋ฆฌํ•˜๊ฑฐ๋‚˜, ๊ทธ๋“ค์„ ์œ ํšจํ•œ ๋ชจ๋“ˆ๋กœ ๋ณ€ํ™˜ํ•ด ์—ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ๋””ํŽœ๋˜์‹œ ๊ทธ๋ž˜ํ”„์— ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค. 

โžฐ ๋””ํŽœ๋˜์‹œ ๊ทธ๋ž˜ํ”„ : ๋ชจ๋“ˆ ๊ฐ„์˜ ์˜์กด ๊ด€๊ณ„๋กœ ์ƒ๊ธฐ๋Š” ๊ตฌ์กฐ

โžฐ test : ๋ณ€ํ™˜์ด ํ•„์š”ํ•œ ํŒŒ์ผ๋“ค์„ ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•œ ์†์„ฑ

โžฐ use : ๋ณ€ํ™˜์„ ์ˆ˜ํ–‰ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๋กœ๋”๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ์†์„ฑ

โžฐ exclude : ๋ฐ”๋ฒจ๋กœ ์ปดํŒŒ์ผํ•˜์ง€ ์•Š์„ ํŒŒ์ผ์ด๋‚˜ ํด๋”๋ฅผ ์ง€์ •. (๋ฐ˜๋Œ€๋กœ include ์†์„ฑ์„ ์ด์šฉํ•ด ๋ฐ˜๋“œ์‹œ ์ปดํŒŒ์ผํ•ด์•ผ ํ•  ํŒŒ์ผ์ด๋‚˜ ํด๋” ์ง€์ • ๊ฐ€๋Šฅ)

โžฐ test์™€ use ์†์„ฑ์€ ํ•„์ˆ˜ ์†์„ฑ

โžฐrules๊ฐ€ ์•„๋‹Œ module.rules ์•„๋ž˜์— ์ •์˜ํ•ด์•ผ ํ•œ๋‹ค.

 

5๏ธโƒฃ Plugins : ๋ฒˆ๋“ค์„ ์ตœ์ ํ™”ํ•˜๊ฑฐ๋‚˜ ์—์…‹์„ ๊ด€๋ฆฌํ•˜๊ณ , ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์ฃผ์ž… ๋“ฑ์˜ ๊ด‘๋ฒ”์œ„ํ•œ ์ž‘์—…์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•œ๋‹ค.

โžฐ require()์„ ํ†ตํ•ด ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์š”์ฒญํ•˜๊ณ , plugins ๋ฐฐ์—ด์— ์‚ฌ์šฉํ•˜๊ณ ์ž ํ•˜๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ถ”๊ฐ€ํ•œ๋‹ค.

 

6๏ธโƒฃ Optimization : Webpack 4 ๋ฒ„์ „๋ถ€ํ„ฐ ์„ ํƒํ•œ ํ•ญ๋ชฉ์— ๋”ฐ๋ผ ์ตœ์ ํ™”๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.

โžฐ minimize : TerserPlugin ๋˜๋Š” optimization.minimize์— ๋ช…์‹œ๋œ plugins๋กœ bundle ํŒŒ์ผ์„ ์ตœ์†Œํ™”(=์••์ถ•)์‹œํ‚ค๋Š” ์ž‘์—… ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •

โžฐ minimizer : defualt minimizer์„ ์ปค์Šคํ…€๋œ TerserPlugin ์ธ์Šคํ„ด์Šค๋ฅผ ์ œ๊ณตํ•ด์„œ ์žฌ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


๐Ÿ“ฃ  ์›นํŒฉ๊ณผ ๋ฆฌ์•กํŠธ

๐Ÿญ. ๋ฆฌ์•กํŠธ๊ฐ€ ๋ฒˆ๋“ค๋ง์ด ํ•„์š”ํ•œ ์ด์œ 

โœ”๏ธ ์ž์œ ๋„๊ฐ€ ๋†’์€ ๋ฐ˜๋ฉด ์•Œ์•„์•ผํ•˜๋Š” ์ ์ด ๋งŽ์•„์ง€๋‹ˆ ์ด๋ฅผ ํ•œ๋ฒˆ์— ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” create-react-app ์ด๋ผ๋Š” ํˆด ์ฒด์ธ์„ ๊ฐœ๋ฐœํ–ˆ๋‹ค -> ์ด ํˆด ๋ชฉ๋ก์€ ์–ด๋งˆ์–ด๋งˆํ—€๊ณ , ์ด ๊ฑฐ๋Œ€๋ž€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ชฉ๋ก์„ ์ค„์ด๊ณ ์ž ์ง์ ‘ ์›นํŒฉ์„ ์„ค์น˜ํ•˜์—ฌ ํ•˜๋‚˜์”ฉ ๋ฆฌ์•กํŠธ์™€ ๊ทธ์— ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์ •์„ ํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค -> ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด์„œ ๊ฐœ๋ฐœ์ž์˜ ๋‹ค์–‘ํ•œ ๋‹ˆ์ฆˆ๋ฅผ ์ถฉ์กฑํ•˜๊ธฐ ์œ„ํ•ด ๋” ๋งŽ์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ•„์ˆ˜์ ์œผ๋กœ ์‚ฌ์šฉํ•ด์•ผ๋งŒ ํ–ˆ๊ณ , ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ณจ๋ผ์„œ ๋ฒˆ๋“ค๋ง ํ•  ์ˆ˜ ์žˆ๋Š” ์›นํŒฉ์ด ํ•„์š”ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.

 

๐Ÿฎ. ๋ฆฌ์•กํŠธ ๊ฐœ๋ฐœ์— ๊ผญ ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

1๏ธโƒฃ react, react-dom

โœ”๏ธ react : ๋ฆฌ์•กํŠธ ์ปดํฌ๋„ŒํŠธ์™€ Hooks, ๋ผ์ดํ”„ ์‚ฌ์ดํด์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ๋ชจ๋‘ ๋“ค์–ด์žˆ๋‹ค.

โœ”๏ธ react-dom : ์ด ๋ฆฌ์•กํŠธ ์ฝ”๋“œ๋ฅผ ๋ธŒ๋ผ์šฐ์ €์— ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ๋‹ค.

 

2๏ธโƒฃ babel 

โœ”๏ธ jsx๋ฅผ js๋กœ ๋ณ€๊ฒฝํ•ด์„œ ๋ฒˆ๋“ค๋งํ•ด์ฃผ๋Š” ๋กœ๋”์˜ ์ผ์ข…

 

3๏ธโƒฃ css-loader

โœ”๏ธ import 'aaa.css' ์™€ ๊ฐ™์ด ์ž…๋ ฅํ•ด๋„ css๊ฐ€ ์ ์šฉ๋  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

 

๐Ÿฏ. ๋ฆฌ์•กํŠธ ๊ฐœ๋ฐœ์— ๋„์›€์ด ๋˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

1๏ธโƒฃ react-hot-loader 

โœ”๏ธ webpack-dev-server์ฒ˜๋Ÿผ ์ €์žฅํ•  ๋•Œ ๋งˆ๋‹ค ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์— ์ ์šฉํ•ด์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

โžฐ react-hot-loader๋Š” ๋ฆฌ์•กํŠธ ์ƒํƒœ๋ฅผ ์œ ์ง€์‹œ์ผœ์ค€๋‹ค.

 

2๏ธโƒฃ eslint

โœ”๏ธ JavaScript๋กœ ๊ฐœ๋ฐœ ์‹œ ์ž์ฃผ ์ ‘ํ•˜๋Š” ์—๋Ÿฌ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ๋ฆฐํ„ฐ

 

3๏ธโƒฃ prettier

โœ”๏ธ JavaScript๋กœ ๊ฐœ๋ฐœ ์‹œ ํ†ต์ผ์„ฑ ์žˆ๊ฒŒ ์ฝ”๋“œ ํ˜•์‹์„ ๋งž์ถœ ์ˆ˜ ์žˆ๊ฒŒ ๋„์™€์ฃผ๋Š” ํˆด