๐Ÿšค ์„ฑ์žฅ์ผ์ง€ 6.0

์ฑ… ํ–‰๋ณตํ•œ ์ด๊ธฐ์ฃผ์˜์ž(์›จ์ธ ๋‹ค์ด์–ด)์˜ ๋‚ด์šฉ์— ์ž๊ทน๋ฐ›์•„ ์‹œ์ž‘ํ•˜๋Š” ์†Œ๋ฐ•ํ•œ ์„ฑ์žฅ๊ธฐ๋ก

์‚ด์•„์žˆ๋Š” ๊ฝƒ๊ณผ ์ฃฝ์€ ๊ฝƒ์€ ์–ด๋–ป๊ฒŒ ๊ตฌ๋ณ„ํ•˜๋Š”๊ฐ€?
์„ฑ์žฅํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์ด ์‚ด์•„ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.
์ƒ๋ช…์˜ ์œ ์ผํ•œ ์ฆ๊ฑฐ๋Š” ์„ฑ์žฅ์ด๋‹ค!

๐ŸŒพ (4.0)ํ•™์Šต ํ‚ค์›Œ๋“œ์—์„œ ์ตœ๋Œ€ํ•œ ๊ฐ„๋‹จํ•œ ์ •๋ณด ์ œ๊ณต, ๊ณ ๋ฏผ์—์„œ ๋‚ด ๊ฒฝํ—˜์„ ์ž์„ธํžˆ ์ ์ž!
๐ŸฅŠ (5.0)ํ•™์Šต ํ‚ค์›Œ๋“œ๋Š” ํ•œ์ค„์˜ ํ•ต์‹ฌ์œผ๋กœ๋งŒ ์ •๋ฆฌ, ์„ฑ๊ณต/์‹คํŒจ ์ผ์ง€ ์ž‘์„ฑํ•˜๊ธฐ! ์ด ๋•Œ, ์‹คํŒจ์˜ ๊ฒฝํ—˜์€ ์ž์„ธํžˆ ์ ๊ธฐ!
๐Ÿ‰ (6.0)<์™„์ „ ๊ฐœํŽธ!!!> ๋งค์ผ ์Šต๊ด€์ ์œผ๋กœ ํ•ต์‹ฌ๋งŒ ์ ์„ ์ˆ˜ ์žˆ๊ฒŒ ํ”„๋ ˆ์ž„ ๋ณ€๊ฒฝ. ์„ฑ๊ณต๋ณด๋‹จ ์‹คํŒจ์— ์ดˆ์ ์„ ๋งž์ถ”๊ธฐ.

  • ๐Ÿ‰ (6.1)<์ˆ˜์ •> ๋งค๋ฒˆ ์„ฑ๊ณต, ์‹คํŒจ๋ฅผ ๋”ฐ๋กœ ์ ๋Š” ๊ฒƒ๋ณด๋‹จ ๊ฒฝํ—˜์œผ๋กœ ํ‘œํ˜„ํ•˜์ž

๐ŸŒˆ ์˜ค๋Š˜์˜ ๊ฐ์ •

์ ์  ๋ชฐ์ž…ํ•˜๋Š” ๊ฒฝํ—˜์„ ํ•˜๋‹ค๋ณด๋‹ˆ ๋„˜ ์‹ ๋‚œ๋‹ค. ๊ณต๋ถ€ํ•˜๋Š” ๊ฒƒ๋„ ์žฌ๋ฏธ์žˆ๊ณ  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ณต์‹ ๋ฌธ์„œ ๋ณด๋Š” ๊ฒƒ๋„, ์ฝ”๋“œ ๊นŒ๋ณด๋Š” ๊ฒƒ๋„ ์žฌ๋ฏธ์žˆ๋‹ค. ๋ฌผ๋ก  ๋‚ด ์ฝ”๋“œ๋ฅผ ์“ฐ๋Š” ๊ฑด ๋” ์žฌ๋ฏธ์žˆ๋‹ค. ์•„์ง ๊ณต๋ถ€ํ•ด์•ผํ•  ๊ฒƒ๋“ค ํˆฌ์„ฑ์ด์ง€๋งŒ ํ•˜๋ฉด์„œ ์ ์  ๋” ์žฌ๋ฏธ์žˆ๊ณ  ์•Œ๊ณ  ์‹ถ์€ ๊ฒŒ ๋งŽ์•„์ง„๋‹ค. ์ด์ œ ์–ด๋Š์ •๋„ ๋ชฐ์ž…์€ ํ•  ์ˆ˜ ์žˆ์œผ๋‹ˆ(๋” ๋ชฐ์ž…ํ•ด์•ผ๊ฒ ์ง€๋งŒ!), ๋” ์š•์‹ฌ๋‚ด์„œ ๊ฐœ๋ฐœํ•˜๋Š” ์‹œ๊ฐ„์„ ๋Š˜๋ ค๋ณด์ž.

๐Ÿซง ์˜ค๋Š˜์˜ ๊ณ ๋ฏผ

Redux๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ์ธ๊ฐ€?

์›๋ž˜๋Š” ๋™์ƒ๊ณผ ํ•จ๊ป˜ ์ง„ํ–‰ํ•˜๋Š” ์ƒˆ๋กœ์šด ํ”„๋กœ์ ํŠธ์— Redux(toolkit)๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ–ˆ๋‹ค. ์†”์งํžˆ ํ”„๋กœ์ ํŠธ ์ดˆ๊ธฐ ๋‹จ๊ณ„๋ผ ๊ทธ๋ ‡๊ฒŒ ๋ณต์žกํ•œ ์ƒํƒœ๊ด€๋ฆฌ๋Š” ์—†์ง€๋งŒ, ์ƒํƒœ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์‹œ์ดˆ๊ฒฉ์ธ Redux๋ฅผ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ์ƒํƒœ๊ด€๋ฆฌ์™€ Flux ์•„ํ‚คํ…์ฒ˜์— ๋Œ€ํ•œ ์ดํ•ด๋„๋ฅผ ๋†’์ด๊ณ  ์‹ถ์—ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ํ•˜์ง€๋งŒ ๋ณผ์ˆ˜๋ก ์ด ํ”„๋กœ์ ํŠธ์˜ ์ง€๊ธˆ ๋‹จ๊ณ„์—์„œ Redux๋ฅผ ์ ์šฉํ•˜๋Š” ๊ฑด ๋งž์ง€ ์•Š๋Š”๋‹ค๋Š” ํŒ๋‹จ์ด ๋“ค์—ˆ๊ณ  ์ผ๋‹จ์€ Context API์™€ useReducer๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค.

Mantine UI๋งŒ? Emotion๊ณผ ํ•จ๊ป˜?

Mantine UI๋Š” ๋ฆฌ์•กํŠธ ๊ธฐ๋ฐ˜์˜ UI ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ, ์ƒˆ ํ”„๋กœ์ ํŠธ์— ์ ์šฉํ•ด๋ณด๊ธฐ๋กœ ํ–ˆ๋‹ค. Emotion์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ๋‹ค๋Š” ์ ๊ณผ Type ์ง€์›์ด ์ž˜ ๋˜์–ด์žˆ๋‹ค๋Š” ์ ์ด ๋งˆ์Œ์— ๋“ค์—ˆ๋‹ค. ๋˜, Mantine UI๋ฅผ ์‚ฌ์šฉํ•˜๋˜ Emotion์œผ๋กœ wrappingํ•˜๋Š” ๋ฐฉ์‹์„ ์จ๋ณผ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒŒ ํฐ ๋งค๋ ฅ์œผ๋กœ ๋‹ค๊ฐ€์™”๋‹ค. ๊ฑฐ๊ธฐ๋‹ค๊ฐ€ ์†Œ์Šค์ฝ”๋“œ๊ฐ€ ๊น”๋”ํ•˜๊ฒŒ ์ž˜ ์ •๋ฆฌ๋˜์–ด์žˆ์–ด์„œ UI ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐ์—๋„ ๋งŽ์€ ๋„์›€์ด ๋  ๊ฒƒ์ด๋ผ ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค.

โ˜€๏ธ ์˜ค๋Š˜์˜ ๊ฒฝํ—˜

vite์˜ ?raw ์˜ต์…˜

์˜ค๋Š˜ JS ๋ณต์Šต ๊ฒธ ๊ฐ•์˜๋ฅผ ๋“ฃ๋Š”๋ฐ, ๋„ˆ๋ฌด ์‹ ๊ธฐํ•œ ๊ฑธ ๋ฐœ๊ฒฌํ–ˆ๋‹ค.

import data from './data.json?raw';

console.log(data);

// json ํŒŒ์ผ์˜ ๋‚ด์šฉ์ด ๊ทธ๋Œ€๋กœ ์ถœ๋ ฅ๋œ๋‹ค.
// ๋ฌธ์ž์—ด๋กœ ์ถœ๋ ฅ๋˜๊ธฐ ๋•Œ๋ฌธ์— JSON.parse()๋ฅผ ํ•ด์ค˜์•ผ ํ•œ๋‹ค.

vite๊ฐ€ ์ž์ฒด์ ์œผ๋กœ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ์ด๋ผ๊ณ  ํ•˜๋Š”๋ฐ, ์ด๋ ‡๊ฒŒ ๊ฐ„๋‹จํ•˜๊ฒŒ json์„ ๋ถˆ๋Ÿฌ์™€์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒŒ ๋„ˆ๋ฌด ์‹ ๊ธฐํ–ˆ๋‹ค. ์‹ค์ œ ๋ฐฐํฌ ์ฝ”๋“œ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋กœ์ง์€ ์•„๋‹ˆ์ง€๋งŒ, ๊ฐœ๋ฐœ ๋‹จ๊ณ„์—์„œ๋Š” ๋งค์šฐ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™๋‹ค.

(์ถ”๊ฐ€) ๊ธ€์„ ์ ๋‹ค๋ณด๋‹ˆ ๊ทธ๋ƒฅ json๋„ import๊ฐ€ ๋˜๋Š”๋ฐ ๊ตณ์ด ์™œ ์ด ๋ฐฉ๋ฒ•์„ ์“ฐ๋Š”๊ฑฐ์ง€..? ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค. ํ•ด์„œ ์ฐพ์•„๋ณด๋‹ˆ ์•„๋ž˜์™€ ๊ฐ™์€ ์žฅ์ ๋“ค์ด ์žˆ์—ˆ๋‹ค.

  • ?raw๋ฅผ ํ†ตํ•ด import ํ•˜๋ฉด json ํŒŒ์ผ์˜ ๋‚ด์šฉ์ด ๋ฌธ์ž์—ด ํ˜•ํƒœ๋กœ ๊ฐ€์ ธ์™€์ง„๋‹ค. ๊ทธ๋ž˜์„œ ์ข€๋” ์œ ์—ฐํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • parsing์„ ์ข€๋” ์„ธ๋ฐ€ํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ๊ณ , localStorage์— ์ €์žฅํ•  ๋•Œ๋„ ๋ฌธ์ž์—ด ๊ทธ๋Œ€๋กœ ์ €์žฅํ•˜๋ฉด ๋˜์–ด์„œ ํŽธ๋ฆฌํ•˜๋‹ค.

Tree Shaking ์ง์ ‘ ๊ฒช์–ด๋ณด๊ธฐ

Tree Shaking์ด ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ฝ”๋“œ๋ฅผ ์ œ๊ฑฐํ•ด์ฃผ๋Š” ๊ธฐ๋Šฅ์ธ ๊ฑด ์•Œ๊ณ  ์žˆ์—ˆ์ง€๋งŒ, ์‹ค์ œ๋กœ ๋‘ ๋ˆˆ์œผ๋กœ ํ™•์ธํ•  ์ƒ๊ฐ์„ ์•ˆํ–ˆ๋‹ค.(์™œ ์•ˆํ–ˆ์ง€? -_ -) ๊ทธ๋ž˜์„œ ์ง์ ‘ ํ•ด๋ณด์•˜๋‹ค.

if (process.env.NODE_ENV === 'development') {
  console.log('๊ฐœ๋ฐœ ํ™˜๊ฒฝ์ž…๋‹ˆ๋‹ค.');
} else {
  console.log('๋ฐฐํฌ ํ™˜๊ฒฝ์ž…๋‹ˆ๋‹ค.');
}

์œ„์™€ ๊ฐ™์€ ์ฝ”๋“œ๊ฐ€ ๋“ค์–ด์žˆ๊ณ  build๋ฅผ ํ•˜๊ฒŒ ๋˜๋ฉด, if ๋ฌธ์— ํ•ด๋‹นํ•˜๋Š” ์ฝ”๋“œ๋Š” ์ œ๊ฑฐ๋˜์–ด ๋ฐฐํฌ ํ™˜๊ฒฝ์—์„œ๋Š” console.log('๋ฐฐํฌ ํ™˜๊ฒฝ์ž…๋‹ˆ๋‹ค.')๋งŒ ๋‚จ๊ฒŒ ๋œ๋‹ค. ๋นŒ๋“œ(๋ฐฐํฌ) ํ™˜๊ฒฝ์—์„œ๋Š” ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰๋˜๋Š” ์ฝ”๋“œ๊ฐ€ ์‚ฌ์šฉ๋  ์ผ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ฆ‰, Tree Shaking์ด ์ด๋ฃจ์–ด์ง„ ๊ฒƒ์ด๋‹ค.

๐Ÿพ ์˜ค๋Š˜์˜ ๊ตํ›ˆ

๊ทธ๋ž˜๋„ JS๋ฅผ ๋งŽ์ด ์•ˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋Š”๋ฐโ€ฆ ์•„๋‹ˆ๋”๋ผ!!! ๊ณต๋ถ€ํ•ด์•ผํ•  ๊ฑด ๋ฌด๊ถ๋ฌด์ง„ํ•˜๊ณ  ๋” ์•Œ์•„๊ฐ€์•ผํ•  ๊ฒƒ๋„ ๋งŽ๋‹ค๋Š” ๊ฑธ ์žŠ์ง€๋ง์ž. ํ•ญ์ƒ ๊ฒธ์†ํ•˜๊ฒŒ ๋ฐฐ์šฐ๋Š” ์ž์„ธ๋กœ ๋‚˜์•„๊ฐ€์ž!!!

๐Ÿชต ์ฐธ๊ณ