์ง ๋์ ๋น๋๋ฉด ์จ๋ผ์ธ ์์
์ ์ํ ์ค์๊ฐ ์คํธ๋ฆฌ๋ฐ ๊ต์ก ํ๋ซํผ
์ด๋ฆ | ์ญํ | Github |
---|---|---|
๊ณต์ ์ฉ | ๋ฐฑ์๋ | https://gitdub.com/XPECTER |
์กฐ์ํ | ๋ฐฑ์๋ | https://github.com/ChoSangHyeon |
๋ฌธ์ฑํ | ํ๋ก ํธ์๋ | https://gitdub.com/SunghyeonMoon |
๊น์ฐํ | ํ๋ก ํธ์๋ | https://gitdub.com/woohyun1031 |
๋ฐ์งํฌ | ๋์์ธ | |
์ดํ์ฃผ | ๋์์ธ |
- React
- ํ๋ก์ ํธ์ ์ฑํ , ๋ฌ๋ ฅ ์ผ์ ํ์, ํ ์ผ ๋ชฉ๋ก ํ์ ๋ฑ, ๋์ ์ธ ์์๊ฐ ๋ง์์ ํจ์จ์ ์ผ๋ก ์ ์ง ๋ณด์ํ๊ณ ๊ด๋ฆฌํ ์ ์๋๋ก ์๋ฐ์คํฌ๋ฆฝํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋์
- ์์ ์๊ธฐํ๋ ๋ณต์กํ ์ปดํฌ๋ํธ๋ค์ ๋จ์๋ณ๋ก ์ชผ๊ฐ์ ์์ ์ ํ ์ ์๊ธฐ ๋๋ฌธ์ ์์ฐ์ฑ๊ณผ ์ ์ง ๋ณด์์ฑ์ ๋์ฌ์ค๋ค.
- JSX๋ฅผ ํตํด์ Javascript ํ๋๋ง์ผ๋ก ๋งํฌ์ ๊ณผ ๋ก์ง์ ์งค ์ ์๋ค.
- Virtual DOM์ ํตํ ๋๋๋ง ๊ณผ์ ์ ํจ์จ์ฑ ์ฆ๊ฐ
- Redux
- ์ ์ญ ์ํ ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋์ ์ด์ - ์ ์ ์ ๋ณด, ๋ชจ๋ฌ ๋ฑ ์ผํ์ฑ์ด์ง ์๊ฑฐ๋, ๋จ์ผ ์ปดํฌ๋ํธ ๋ด์์๋ง ์ฌ์ฉ๋์ง ์๋ ์ํ ๊ด๋ฆฌ๋ฅผ ์ํด
- Redux ์ ํ ์ด์
- ์ํ ๊ด๋ฆฌ๋ฅผ store ํ๋์์ ๊ด๋ฆฌํจ์ผ๋ก์จ ์ํ์ ์ค์ํ๋ฅผ ์ป์ ์ ์๋ค.
- Reducer๋ฅผ ํตํด์ ์ํ ๋ณ๊ฒฝ์ ์์ผ์ Side Effect๊ฐ ์์ด ์ง๊ด์ ์ธ ์ํ ๊ด๋ฆฌ๋ฅผ ํ ์ ์๋ค.
- Recoil๋ ์ ์ ์ฝ๋๋๊ณผ ์กฐ๊ธ ๋ ๋ฆฌ์กํธ์ค๋ฝ๊ฒ ์ํ ๊ด๋ฆฌ ํ ์ ์๋ค๋ ์ ์์ ์ด๋ฒ ํ๋ก์ ํธ์ ์ํ ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ์ฌ์ฉํ๋ ค๊ณ ํ์์ผ๋, ๊ฐ์ธ์ ์ผ๋ก ์์ง๊น์ง๋ ๋ค์ํ ํจํด์ ๋ํ ์์๊ฐ ๋ถ์กฑํ๋ค๊ณ ์๊ฐ์ด ๋์ด Redux๋ฅผ ์ ํ.
- Recoil์ ๋นํด ๋ ํผ๋ฐ์ค๊ฐ ๋ง๊ณ , ์ฌ์ฉ์ ํ์ด ๋๋ค๋ ์ฅ์ ์ด ์์ง๋ง, ๊ณผ๋ํ๊ฒ ๋ง์ ๋ณด์ผ๋ฌ ํ๋ ์ดํธ๋ผ๋ ๋จ์ ์ด ์กด์ฌ. ํ์ง๋ง Redux Toolkit์ ๋์ ํจ์ผ๋ก์จ ๋จ์ ์์
- Styled-Components
- ๋ก์ง๊ณผ ์คํ์ผ์ ํ ํ์ผ ๋ด์์ ๊ฐ์ด ๊ด๋ฆฌํ์ฌ ๋ชจ๋ํํ๊ธฐ ์ฝ๋ค.
- className์ ์ฌ์ฉํ์ง ์์๋ ๋๊ธฐ ๋๋ฌธ์ ์ค๋ณต์ ํผํ ์ ์์ผ๋ฉฐ, ํ ํ์ผ ๋ด์์๋ ์คํ์ผ๊ณผ ๋ก์ง์ ๋ถ๋ฆฌํด์ ์์ฑํ ์ ์์ด์ ์์ ํธ๋ฆฌ์ฑ์ ๋์ฌ์ค๋ค.
- ์คํ์ผ์ ์ฃผ์ ํ๋ ค๋ฉด ๋ชจ๋ ์ปดํฌ๋ํธ๋ก ๋ง๋ค์ด์ผ ํ๋ค๋ ๋จ์ ์ด ์กด์ฌ, ํ์ง๋ง Nesting ๋ฌธ๋ฒ์ ์ฌ์ฉํด์ ๋จ์ ์ ์์ํ ์ ์๊ณ , ์คํ๋ ค HTML ํ๊ทธ ํ๋ํ๋์ ์์ฒด์ ์ธ ์ด๋ฆ์ ๋ถ์ฌํจ์ผ๋ก์จ ๋์ฑ ๋ ์ง๊ด์ ์ธ ๊ฐ๋ฐ์ด ๊ฐ๋ฅํ๋ค๊ณ ์๊ฐ๋๋ค.
- Typescript
- ๊ฐ์ธ ํ๋ก์ ํธ ๊ฐ์ด ๊ท๋ชจ๊ฐ ์๊ฑฐ๋, ํผ์ ์์ ํ๋ ํ๋ก์ ํธ๋ผ๋ฉด ์๋ฐ์คํฌ๋ฆฝํธ๋ก ์์ฑํ๋๋ผ๋ ์๋ฌ๋ฅผ ๋น๊ต์ ์ฝ๊ฒ ์ฐพ์ ์ ์๊ณ , ํด๊ฒฐํ ์ ์๋ค. ๊ทธ๋ฌ๋ ๊ท๋ชจ๊ฐ ์๋ ํ ํ๋ก์ ํธ๋ผ๋ฉด ์๋ฐ์คํฌ๋ฆฝํธ์ ๋ฒ๊ทธ๋ฅผ ์ฐพ๊ธฐ๊ฐ ์ ์ ๋ ์ด๋ ค์์ง๊ณ ๋ค๋ฅธ ๊ทธ ์ฝ๋๊ฐ ํ์ธ์ ์ฝ๋๋ผ๋ฉด ๋์ฑ ๋ ์ด๋ ค์์ง๋ค. ํ์ ์คํฌ๋ฆฝํธ๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ๊ณ ์ง์ ์ธ ๋ฌธ์ ์ธ Type๊ด๋ จ ์์ธํ ๋ฉ์ธ์ง๋ฅผ ์ ๊ณตํจ์ผ๋ก์จ ๊ฐ๋ฐ์ ์์ด์ ์ค์๋ฅผ ์ค์ฌ์ค๋ค.
- ๋ค๋ง Typescript๋ฅผ ์ฌ์ฉํ๋ฉด interface, type ๋ฑ ๋ถ๊ฐ์ ์ธ ์ฝ๋๊ฐ ๋ฐ์ํ๊ณ , ๋๋๋ก ์ด๋ค ํ์ ์ ์ง์ ํด์ผ ํ๋์ง ๋ชฐ๋ผ์ ์คํ๋ ค ๊ฐ๋ฐ ์๊ฐ์ ์ง์ฐ ์ํฌ ์ ์๋ค. ๊ทธ๋ฌ๋ ์์ ์๊ธฐํ๋ type๊ด๋ จ ์๋ฌ ๋ฐฉ์ง์, IDE์์ ์ ๊ณตํ๋ ์๋ ์์ฑ, ํ์ ํ์ธ ๊ธฐ๋ฅ๋ค์ ํตํด์ ์คํ๋ ค ์ฅ๊ธฐ์ ์ธ ๊ด์ ์์ ๊ฐ๋ฐ ์๊ฐ์ ๋จ์ถ์์ผ์ค๋ค๊ณ ์๊ฐํ๋ค. ์ด๋ฌํ ์ด์ ๋ค๋ก ํ์ฌ ํ๋ก์ ํธ์ ํ์ ์คํฌ๋ฆฝํธ ๋์
- JWT
- ์ฟ ํค์ ๋นํด ๋์ ๋ณด์์ฑ, ์๊ทธ๋์ฒ๋ฅผ ํตํ ์๋ณ์กฐ ๋ง์ ์ ์๋ค.
- ํ ํฐ ๊ธฐ๋ฐ์ผ๋ก ๋ค๋ฅธ ๋ก๊ทธ์ธ ์์คํ ์ ์ ๊ทผ ๋ฐ ๊ถํ ๊ณต์ ๊ฐ ๊ฐ๋ฅํด์ ์นด์นด์ค๋ ๊ตฌ๊ธ ๋ฑ์ ๋ค๋ฅธ ์ ๋ขฐ๋ ์๋ ๊ธฐ์ ์ ์ธ์ฆ์ ์ฌ์ฉ ํ ์ ์๋ค(๊ฐ์ฅ ์ค์ - ๋ฌด๋ถ๋ณํ ๊ฐ์ ์ ๋ง๋ ๊ฐ์ ์ ํธ๋ฆฌํ๋๋ก).
- ์๋ฒ์์ ๋ณ๋์ ์ ์ฅ์๊ฐ ํ์ ์์ด์ ๊ฐ๋จํ๊ฒ ์ธ์ฆ ์ ์ฐจ๋ฅผ ๊ตฌํํ ์ ์๋ค.
- ๊ทธ๋ฌ๋ ํ ํฐ์ ํ์ทจ ๋นํ์ ๋ ๋์ฒํ๊ธฐ๊ฐ ํ๋ค๋ค. ๊ทธ๋์ Interceptor๋ฅผ ํตํ Access Token๊ณผ ํจ๊ป Refresh ํ ํฐ์ ๋ฐ๊ธํ๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ์๋ค. ์ด๋ ๊ฒ ํ๋ค๋ฉด ์๋ฒ๊ฐ Refresh token์ ๋ง๋ฃ ์ํฌ ์ ์๋ ์ธ์ ๊ณผ ๋น์ทํ ์ฅ์ ์ ๊ฐ์ง ์ ์์ง๋ง, ์์ ์๊ธฐํ๋ ์๋ฒ์ ๋ณ๋์ ์ ์ฅ ๊ณต๊ฐ์ด ํ์ํด์ง๊ธฐ ๋๋ฌธ์ ์์ ๋งํ ์ฅ์ ํ๋๋ฅผ ํฌ๊ธฐํด์ผ๊ฒ ์ง๋ง, ํ์ฌ ํ๋ก์ ํธ์์ ๊ฐ์ฅ ์ ์ ํ ๋ฐฉ์์ด๋ผ ์๊ฐ๋์ด ์ด ๋ฐฉ์์ ์ฑํํ๊ฒ ๋์๋ค.