230712(์)
๐ค ์ฑ์ฅ์ผ์ง 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๋ฅผ ๋ง์ด ์๋ค๊ณ ์๊ฐํ๋๋ฐโฆ ์๋๋๋ผ!!! ๊ณต๋ถํด์ผํ ๊ฑด ๋ฌด๊ถ๋ฌด์งํ๊ณ ๋ ์์๊ฐ์ผํ ๊ฒ๋ ๋ง๋ค๋ ๊ฑธ ์์ง๋ง์. ํญ์ ๊ฒธ์ํ๊ฒ ๋ฐฐ์ฐ๋ ์์ธ๋ก ๋์๊ฐ์!!!