React ๋ฒ์ ๊ด๋ฆฌ, ํธํ์ฑ ํ์ธ, ์ํํ ์ ๊ทธ๋ ์ด๋์ ๋น๋ฐ์ ์์๋ณด์ธ์. ์ ์ธ๊ณ์ ์ผ๋ก ์์ ์ ์ด๊ณ ๊ณ ์ฑ๋ฅ์ธ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๋ ๊ฐ๋ฐ์๋ฅผ ์ํ ๊ฐ์ด๋์ ๋๋ค.
๊ฐ๋ฐ์์ ๋์นจ๋ฐ: ๊ฒฌ๊ณ ํ ๊ธ๋ก๋ฒ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ React ๋ฒ์ ๊ด๋ฆฌ ๋ฐ ํธํ์ฑ ํ์
ํ๋ ์น ๊ฐ๋ฐ์ ์ญ๋์ ์ธ ํ๊ฒฝ ์์์ React๋ ์ ์ธ๊ณ ๊ฐ๋ฐ์๋ค์ด ๋ณต์กํ๊ณ ์ํธ์์ฉ์ฑ์ด ๋์ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌ์ถํ ์ ์๋๋ก ์ง์ํ๋ ์ค์ถ์ ์ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ์๋ฆฌ ์ก๊ณ ์์ต๋๋ค. ์ ๊ธฐ์ ์ธ ์ ๋ฐ์ดํธ์ ์๋ก์ด ๊ธฐ๋ฅ์ผ๋ก ํน์ง์ง์ด์ง๋ ์ง์์ ์ธ ๋ฐ์ ์ ์๋ ์ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค. ์ด๋ ํ์ ๊ณผ ํฅ์๋ ์ฑ๋ฅ์ ์ ๊ณตํ๋ ๋์์ ๋ฒ์ ๊ด๋ฆฌ ๋ฐ ํธํ์ฑ ํ์ธ์ด๋ผ๋ ์ค์ํ ๊ณผ์ ๋ฅผ ์ ์ํฉ๋๋ค. ํนํ ๋ค์ํ ์ง์ญ์์ ํ๋ํ๊ณ ์ฌ๋ฌ ์๋ํํฐ ๋๊ตฌ๋ฅผ ํตํฉํ๋ ๊ฐ๋ฐํ์๊ฒ React ๋ฒ์ ์ ์ดํดํ๊ณ ๊ผผ๊ผผํ๊ฒ ๊ด๋ฆฌํ๋ ๊ฒ์ ๋จ์ํ ๋ชจ๋ฒ ์ฌ๋ก๊ฐ ์๋๋ผ, ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ ์ฑ, ์ฑ๋ฅ, ์ฅ๊ธฐ์ ์ธ ์ ์ง๋ณด์์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํ ์ ๋์ ์ธ ํ์ ์์์ ๋๋ค.
์ด ์ข ํฉ ๊ฐ์ด๋๋ ๊ฐ์ธ ๊ธฐ์ฌ์๋ถํฐ ๊ธ๋ก๋ฒ ์์ง๋์ด๋ง ๋ฆฌ๋์ ์ด๋ฅด๊ธฐ๊น์ง ๋ชจ๋ ๊ฐ๋ฐ์๊ฐ React์ ๋ฒ์ ๊ด๋ฆฌ ์ํ๊ณ๋ฅผ ์ ๋ฌธ์ ์ผ๋ก ํ์ํ๋ ๋ฐ ํ์ํ ์ง์๊ณผ ์ ๋ต์ ๊ฐ์ถ๋๋ก ๋๋ ๊ฒ์ ๋ชฉํ๋ก ํฉ๋๋ค. React ๋ฒ์ ์ด ์ด๋ป๊ฒ ๊ตฌ์ฑ๋๋์ง, ์ด๋์ ์ฐพ์ ์ ์๋์ง, ํธํ์ฑ์ด ์ ๊ฐ์ฅ ์ค์ํ์ง, ๊ทธ๋ฆฌ๊ณ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ต์ ๊ธฐ์ ๋ฐ์ ๊ณผ ์กฐํ๋กญ๊ฒ ์ ์งํ๊ธฐ ์ํ ์คํ ๊ฐ๋ฅํ ๋จ๊ณ๋ค์ ๊น์ด ํ๊ณ ๋ค ๊ฒ์ ๋๋ค.
React์ ๋ฒ์ ๊ด๋ฆฌ ์ฒ ํ ํด๋ : ์ ์์ ๋ฒ์ ๊ด๋ฆฌ(SemVer)
React ๋ฒ์ ๊ด๋ฆฌ ์ ๋ต์ ํต์ฌ์๋ ์ ์์ ๋ฒ์ ๊ด๋ฆฌ(Semantic Versioning, SemVer)๊ฐ ์์ต๋๋ค. ์ด๋ ์ํํธ์จ์ด ๋ฆด๋ฆฌ์ค์ ์์ธก ๊ฐ๋ฅ์ฑ๊ณผ ๋ช ํ์ฑ์ ๋ถ์ฌํ๋ ๋๋ฆฌ ์ฑํ๋ ๊ท์ฝ์ ๋๋ค. SemVer๋ฅผ ์ดํดํ๋ ๊ฒ์ด React ํธํ์ฑ์ ๋ง์คํฐํ๋ ์ฒซ๊ฑธ์์ ๋๋ค.
React ๋ฒ์ ์ ๊ตฌ์กฐ: MAJOR.MINOR.PATCH
18.2.0๊ณผ ๊ฐ์ ๋ชจ๋ React ๋ฒ์ ๋ฒํธ๋ ์ธ ๊ฐ์ง ๊ฐ๋ณ ๋ถ๋ถ์ผ๋ก ๊ตฌ์ฑ๋๋ฉฐ, ๊ฐ ๋ถ๋ถ์ ํน์ ์ ํ์ ๋ณ๊ฒฝ์ ์๋ฏธํฉ๋๋ค.
- MAJOR (
18.x.x): ํธํ๋์ง ์๋ API ๋ณ๊ฒฝ์ด ์์ ๋ ์ฆ๊ฐํฉ๋๋ค. ์ด๋ ์ด์ ๋ฉ์ด์ ๋ฒ์ ์ ์ํด ์์ฑ๋ ์ฝ๋๊ฐ ์๋ก์ด ๋ฉ์ด์ ๋ฒ์ ์ผ๋ก ์ ๊ทธ๋ ์ด๋๋ ๋ ๊นจ์ง ์ ์์์ ์๋ฏธํฉ๋๋ค. ๋ฉ์ด์ ๋ฒ์ ์ ๊ทธ๋ ์ด๋๋ ์ผ๋ฐ์ ์ผ๋ก ์๋นํ ๊ฒํ ์ ์ ์ฌ์ ์ธ ์ฝ๋ ์์ ์ด ํ์ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, React 17์์ 18๋ก์ ๋์ฝ์ ์ํ ์ ๋ฐ์ดํธ๋ฅผ ์ํ ์๋ ๋ฐฐ์น(automatic batching) ๋ฐ ์๋ก์ด ๋ฃจํธ API์ ๊ฐ์ ๊ทผ๋ณธ์ ์ธ ๋ณ๊ฒฝ์ ๋์ ํ์ฌ ์ ์คํ ๋ง์ด๊ทธ๋ ์ด์ ์ ํ์๋ก ํ์ต๋๋ค. - MINOR (x.
2.x): ํ์ ํธํ์ฑ์ ์ ์งํ๋ ๋ฐฉ์์ผ๋ก ์๋ก์ด ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋ ๋ ์ฆ๊ฐํฉ๋๋ค. ๋ง์ด๋ ๋ฒ์ ์ ๊ธฐ์กด ๊ณต๊ฐ API๋ฅผ ์์์ํค์ง ์์ผ๋ฉด์ ์๋ก์ด ๊ธฐ๋ฅ, ์ฑ๋ฅ ๊ฐ์ ๋๋ ํฅ์๋ ๊ธฐ๋ฅ์ ๋์ ํฉ๋๋ค. ์ด๋ฌํ ์ ๋ฐ์ดํธ๋ ์ผ๋ฐ์ ์ผ๋ก ์ฑํํ๊ธฐ์ ๋ ์์ ํ๋ฉฐ ์๋ก์ด ๊ธฐ๋ฅ์ ํ์ฉํ๊ธฐ ์ํด ์ข ์ข ๊ถ์ฅ๋ฉ๋๋ค. - PATCH (x.x.
0): ํ์ ํธํ์ฑ์ ์ ์งํ๋ ๋ฒ๊ทธ ์์ ๋ฐ ๋ด๋ถ ๋ฆฌํฉํ ๋ง์ ์ํด ์ฆ๊ฐํฉ๋๋ค. ํจ์น ๋ฒ์ ์ ์๋ก์ด ๊ธฐ๋ฅ์ด๋ ํธํ์ฑ์ ๊นจ๋ ๋ณ๊ฒฝ ์์ด ์ฃผ๋ก ๋ฒ๊ทธ๋ ์ฌ์ํ ์ฑ๋ฅ ์กฐ์ ์ ๋ค๋ฃจ๋ ๊ฐ์ฅ ์์ ํ ์ ๋ฐ์ดํธ์ ๋๋ค. ํจ์น ์ ๋ฐ์ดํธ ์ ์ฉ์ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฑ๊ณผ ๋ณด์์ ๋ณด์ฅํ๊ธฐ ์ํด ๊ฑฐ์ ํญ์ ๊ถ์ฅ๋ฉ๋๋ค.
๋ํ alpha, beta, ๋๋ rc(๋ฆด๋ฆฌ์ค ํ๋ณด)์ ๊ฐ์ ์ฌ์ ๋ฆด๋ฆฌ์ค ์๋ณ์๋ฅผ ๋ง์ฃผ์น ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, 18.0.0-beta.1์ ๊ณง ์ถ์๋ React 18 ๋ฆด๋ฆฌ์ค์ ๋ฒ ํ ๋ฒ์ ์ ๋ํ๋
๋๋ค. ์ด๋ฌํ ๋ฒ์ ์ ๋ถ์์ ํ๋ฉฐ ์ฃผ๋ก ํ
์คํธ์ฉ์ด๋ฉฐ ํ๋ก๋์
ํ๊ฒฝ์์๋ ์ฌ์ฉํ์ง ์์ต๋๋ค.
๊ฐ๋ฐ์๋ฅผ ์ํ SemVer์ ์๋ฏธ
SemVer๋ ๊ฐ๋ฐ์๊ฐ ์ ๋ฐ์ดํธ๊ฐ ์ฝ๋๋ฒ ์ด์ค์ ๋ฏธ์น๋ ์ํฅ์ ์์ธกํ ์ ์๋๋ก ํ์ ์ค์ด์ค๋๋ค. ๋ฉ์ด์ ๋ฒ์ ์ฆ๊ฐ๋ ์ ์คํ ๊ณํ๊ณผ ๋ง์ด๊ทธ๋ ์ด์ ์ด ํ์ํจ์ ์๋ฆฌ๋ ์ ํธ์ธ ๋ฐ๋ฉด, ๋ง์ด๋ ๋ฐ ํจ์น ์ ๋ฐ์ดํธ๋ ํนํ ๊ฒฌ๊ณ ํ ํ ์คํธ ์ค์ํธ๊ฐ ์๋ ๊ฒฝ์ฐ ๋ ํฐ ํ์ ์ ๊ฐ์ง๊ณ ์ ์ฉํ ์ ์์ต๋๋ค. ์ด๋ฌํ ์์ธก ๊ฐ๋ฅ์ฑ์ ๊ฐ๋ฐ ๋ ธ๋ ฅ์ ์กฐ์จํ๋ ๊ธ๋ก๋ฒ ํ์๊ฒ ๋งค์ฐ ์ค์ํ๋ฉฐ, ์๊ธฐ์น ์์ ์ค๋จ์ ์ต์ํํ๊ณ ๋ค์ํ ์๊ฐ๋์ ์์ ํ๋ฆ ์ ๋ฐ์ ๊ฑธ์ณ ์ํํ ํ์ ์ ์ด์งํฉ๋๋ค.
์ฌ์ฉ ์ค์ธ React ๋ฒ์ ์ฐพ์๋ด๊ธฐ: ์ค์ฉ์ ์ธ ํดํท
ํธํ์ฑ์ ๊ด๋ฆฌํ๊ธฐ ์ ์ ํ๋ก์ ํธ์์ ์ ํํ ์ด๋ค React ๋ฒ์ ์ ์ฌ์ฉํ๊ณ ์๋์ง ์์์ผ ํฉ๋๋ค. ์ด ์ค์ํ ์ ๋ณด๋ฅผ ๊ฒ์ํ ์ ์๋ ๋ช ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
package.json ๋งค๋ํ์คํธ: ์ฃผ์ ์ ๋ณด์
๋๋ถ๋ถ์ ํ๋ก์ ํธ์์ ํ๋ก์ ํธ ๋๋ ํ ๋ฆฌ์ ๋ฃจํธ์ ์์นํ package.json ํ์ผ์ React๋ฅผ ํฌํจํ ์์กด์ฑ์ ๋ํ ํ์คํ ์ ๋ณด์์
๋๋ค. dependencies ๋ฐ devDependencies ์น์
์ ์ฐพ์๋ณด์ธ์.
{
"name": "my-react-app",
"version": "0.1.0",
"dependencies": {
"react": "^18.2.0",
"react-dom": "^18.2.0",
"some-library": "^5.1.0"
},
"devDependencies": {
"@testing-library/react": "^14.0.0"
}
}
์ด ์์์ "react": "^18.2.0"์ ํ๋ก์ ํธ๊ฐ React ๋ฒ์ 18.2.0 ๋๋ 18.x.x ์๋ฆฌ์ฆ ๋ด์ ํธํ๋๋ ๋ง์ด๋ ๋๋ ํจ์น ๋ฒ์ (์: 18.3.0, 18.2.1)์ ์ฌ์ฉํ๋๋ก ๊ตฌ์ฑ๋์์์ ๋ํ๋
๋๋ค. ์บ๋ฟ(^) ๊ธฐํธ๊ฐ ์ด ๋ฒ์๋ฅผ ๋ํ๋
๋๋ค. ํธ๋(~)๋ ์ผ๋ฐ์ ์ผ๋ก ํจ์น ์
๋ฐ์ดํธ๋ง ํ์ฉํ๋ฉฐ(์: ~18.2.0์ 18.2.1์ ํ์ฉํ์ง๋ง 18.3.0์ ํ์ฉํ์ง ์์), "18.2.0"๊ณผ ๊ฐ์ ํน์ ๋ฒ์ ์ ์ ํํ๊ฒ ๊ณ ์ ํฉ๋๋ค. ์ต์ ์ ํธํ์ฑ์ ์ํด ํญ์ react์ react-dom์ด ๋์ผํ ๋ฉ์ด์ , ๋ง์ด๋, ํจ์น ๋ฒ์ ์ผ๋ก ์ง์ ๋์๋์ง ํ์ธํ์ธ์.
๋ช
๋ น์ค ์ ํธ๋ฆฌํฐ: npm๊ณผ yarn
ํจํค์ง ๊ด๋ฆฌ์๋ ์ค์น๋ React ๋ฒ์ ์ ์ง์ ํ์ธํ ์ ์๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค.
npm list react: ํ๋ก์ ํธ์ ์์กด์ฑ ํธ๋ฆฌ์ ์ค์น๋ React ๋ฒ์ ์ ํ์ํ๋ ๋ช ๋ น์ ์คํํฉ๋๋ค. ๋ค๋ฅธ ํ์ ์์กด์ฑ์ด ๋ค๋ฅธ (์ ์ฌ์ ์ผ๋ก ์ถฉ๋ํ๋) React ๋ฒ์ ์ ์๊ตฌํ๋ ๊ฒฝ์ฐ ์ฌ๋ฌ ํญ๋ชฉ์ด ํ์๋ ์ ์์ต๋๋ค.yarn why react: Yarn ์ฌ์ฉ์๋ฅผ ์ํด ์ ์ฌํ ์ถ๋ ฅ์ ์ ๊ณตํ๋ฉฐ, ์ด๋ค ํจํค์ง๊ฐ React์ ์์กดํ๊ณ ์๋์ง์ ๊ฐ ๋ฒ์ ์ ์์ธํ ์ค๋ช ํฉ๋๋ค.npm view react version(๋๋yarn info react version): ์ด ๋ช ๋ น์ npm ๋ ์ง์คํธ๋ฆฌ์์ ์ฌ์ฉ ๊ฐ๋ฅํ ์ต์ ์์ ๋ฒ์ ์ React๋ฅผ ๋ณด์ฌ์ฃผ๋ฏ๋ก ์ ๋ฐ์ดํธ๊ฐ ์๋์ง ํ์ธํ๋ ๋ฐ ์ ์ฉํฉ๋๋ค.
๋ธ๋ผ์ฐ์ ๋ด ํ์ธ: React ๊ฐ๋ฐ์ ๋๊ตฌ์ React.version
React ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ธ๋ผ์ฐ์ ์์ ์คํ ์ค์ผ ๋ ๋ฒ์ ์ ๋ณด๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค.
- React ๊ฐ๋ฐ์ ๋๊ตฌ ํ์ฅ ํ๋ก๊ทธ๋จ: React ๊ฐ๋ฐ์ ๋๊ตฌ ๋ธ๋ผ์ฐ์ ํ์ฅ ํ๋ก๊ทธ๋จ์ด ์ค์น๋์ด ์๋ค๋ฉด ๋ธ๋ผ์ฐ์ ์ ๊ฐ๋ฐ์ ๋๊ตฌ๋ฅผ ์ด๊ณ "Components" ๋๋ "Profiler" ํญ์ผ๋ก ์ด๋ํ๋ฉด ์ผ๋ฐ์ ์ผ๋ก ํจ๋ ์๋จ์ React ๋ฒ์ ์ด ํ์๋ฉ๋๋ค. ์ด๋ ๋ฐํ์ ๋ฒ์ ์ ํ์ธํ๋ ํ๋ฅญํ ๋ฐฉ๋ฒ์ ๋๋ค.
React.version: ๋ธ๋ผ์ฐ์ ์ฝ์์์ ์ง์ React ๋ฒ์ ์ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์์ผ๋ก ์ ๊ทผํ ์ ์์ต๋๋ค. ๊ฐ๋จํReact.version์ ์ ๋ ฅํ๊ณ Enter ํค๋ฅผ ๋๋ฅด์ธ์. ์ด ์ ์ญ ๋ณ์(React๊ฐ ์ ์ญ์ ์ผ๋ก ๋ก๋๋๊ฑฐ๋ ์ ๊ทผ ๊ฐ๋ฅํ ๊ฒฝ์ฐ)๋ ํ์ฌ ์คํ ์ค์ธ React ๋ฒ์ ์ ๋ฌธ์์ด ํํ์ ๋ฐํํฉ๋๋ค. ์ด ๋ฐฉ๋ฒ์ ๋นํ์ค ๋ฐฉ์์ผ๋ก React๋ฅผ ๋ก๋ํ ์ ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด๋ ๋๋ฒ๊น ์ ํนํ ์ ์ฉํฉ๋๋ค.
๋น๋ ๋๊ตฌ ์ ๋ณด: Webpack, Babel, ESLint
์ง์ ์ ์ผ๋ก React ๋ฒ์ ์ ๋ช ์ํ์ง๋ ์์ง๋ง, ๋น๋ ๋๊ตฌ์ ๋ฆฐํฐ๋ ์ข ์ข ํน์ React ๋ฒ์ ์ ์ ์ถํ๊ฑฐ๋ ์๊ตฌํฉ๋๋ค.
- Babel: ์ค์ ํ์ผ(์:
.babelrc๋๋babel.config.js)์๋ ์ข ์ข@babel/preset-react์ ๊ฐ์ ํ๋ฆฌ์ ์ด ํฌํจ๋ฉ๋๋ค. Babel ๋ฐ ํด๋น ํ๋ฆฌ์ ์ ๋ฒ์ ์ React ๋ฒ์ ์์ ์ฌ์ฉํ๋ JavaScript ๊ธฐ๋ฅ๊ณผ ํธํ๋์ด์ผ ํฉ๋๋ค. - ESLint:
eslint-plugin-react์ ๊ฐ์ ํ๋ฌ๊ทธ์ธ์ React ๊ด๋ จ ๊ตฌ๋ฌธ ๋ฐ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๋ฆฐํ ํ๋๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ์ด๋ฌํ ํ๋ฌ๊ทธ์ธ์ ์ข ์ข ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํ๊ฑฐ๋ ์๋ก์ด ๋ฆฐํ ๊ท์น์ ํ์ฉํ๊ธฐ ์ํด ์ต์ React ๋ฒ์ ์๊ตฌ ์ฌํญ์ ๊ฐ์ง๋๋ค. - Create React App (CRA): CRA๋ก ํ๋ก์ ํธ๋ฅผ ์์ํ๋ค๋ฉด ์ฌ์ฉ๋
react-scripts์ ํน์ ๋ฒ์ ์ด ํธํ ๊ฐ๋ฅํ React ๋ฒ์ ๋ฒ์์ ์๋ฌต์ ์ผ๋ก ์ฐ๊ฒฐ๋ฉ๋๋ค.
์์ ์ ์ธ React ์ ํ๋ฆฌ์ผ์ด์ ์ ์ด์์ด ํธํ์ฑ์ธ ์ด์
React ๋ฒ์ ํธํ์ฑ์ ๋ฌด์ํ๋ ๊ฒ์ ํ๋ค๋ฆฌ๋ ๋ชจ๋ ์์ ์ง์ ์ง๋ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค. ์ ์ ๋์์ ์ ์์ ์ ์์ง๋ง ๊ฒฐ๊ตญ์๋ ๊ท ์ด์ด ์๊ฒจ ๋ถ์์ , ์๊ธฐ์น ์์ ๋์, ๊ทธ๋ฆฌ๊ณ ์ ์ฌ์ ์ผ๋ก ์น๋ช ์ ์ธ ์ฅ์ ๋ก ์ด์ด์ง ๊ฒ์ ๋๋ค.
๋นํธํ์ฑ์ ์ํ: ๋ฏธ๋ฌํ ๋ฒ๊ทธ๋ถํฐ ํ๋ก๋์ ๋๋๊น์ง
React ๋ฒ์ ์ด๋ ๊ด๋ จ ์์กด์ฑ์ด ํธํ๋์ง ์์ ๋ ๋ค์ํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
- ๋ฐํ์ ์ค๋ฅ ๋ฐ ์ถฉ๋: ๊ฐ์ฅ ์ฆ๊ฐ์ ์ด๊ณ ์ฌ๊ฐํ ๊ฒฐ๊ณผ์ ๋๋ค. ํธํ๋์ง ์๋ API, ์ฌ์ฉ ์ค๋จ๋ ๊ธฐ๋ฅ ํธ์ถ, ๋๋ ์๊ธฐ์น ์์ ๋ถ์์ฉ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ค๋จ์ํค๊ฑฐ๋ ์ผ๋ถ๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ๋ง๋๋ JavaScript ์ค๋ฅ๋ก ์ด์ด์ง ์ ์์ต๋๋ค.
- ๋ฏธ๋ฌํ ๋ฒ๊ทธ์ ์ผ๊ด์ฑ ์๋ ๋์: ์ถฉ๋๋ณด๋ค ๋ ๋ช ํํ ์ด๋ฌํ ๋ฌธ์ ๋ ๋๋ฒ๊น ํ๊ธฐ๊ฐ ๋งค์ฐ ์ด๋ ค์ธ ์ ์์ต๋๋ค. ์ปดํฌ๋ํธ๊ฐ ํ๊ฒฝ์ ๋ฐ๋ผ ๋ค๋ฅด๊ฒ ๋ ๋๋ง๋๊ฑฐ๋, ํน์ ์ฌ์ฉ์ ์ํธ์์ฉ์ด ๊ทผ๋ณธ์ ์ธ ๋ฒ์ ๋ถ์ผ์น๋ก ์ธํด ์ฐ๋ฐ์ ์ผ๋ก ์คํจํ ์ ์์ต๋๋ค.
- ์ฑ๋ฅ ์ ํ: ์ต์ React ๋ฒ์ ์๋ ์ข ์ข ์ฑ๋ฅ ์ต์ ํ๊ฐ ํฌํจ๋ฉ๋๋ค. ์ค๋๋ React ๋ฒ์ ์ด๋ ํธํ๋์ง ์๋ ์ค์ ์ผ๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ๋ฉด ์ด๋ฌํ ์ต์ ํ๊ฐ ์ ์ฉ๋์ง ์์ ๋ก๋ ์๊ฐ์ด ๋๋ ค์ง๊ฑฐ๋ UI ๋ฐ์์ฑ์ด ๋จ์ด์ง ์ ์์ต๋๋ค.
- ๋ณด์ ์ทจ์ฝ์ : React ๋ฐ ํด๋น ์ํ๊ณ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ค๋๋ ๋ฒ์ ์๋ ์ต์ ๋ฆด๋ฆฌ์ค์์ ํจ์น๋ ์๋ ค์ง ๋ณด์ ์ทจ์ฝ์ ์ด ํฌํจ๋ ์ ์์ต๋๋ค. ์ค๋๋ ์ํํธ์จ์ด๋ฅผ ์คํํ๋ ๊ฒ์ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ์ฌ์ฉ์๋ฅผ ์ํ์ ๋น ๋จ๋ฆฌ๋ฉฐ, ์ด๋ ๋ฏผ๊ฐํ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ชจ๋ ๊ธ๋ก๋ฒ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ํ ์ค์ํ ๊ณ ๋ ค ์ฌํญ์ ๋๋ค.
- ์์กด์ฑ ์ง์ฅ(Dependency Hell): ํ๋ก์ ํธ๊ฐ ์ฑ์ฅํจ์ ๋ฐ๋ผ ์๋ง์ ์๋ํํฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ถ์ ๋ฉ๋๋ค. ์ด๋ฌํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ด ์์ถฉํ๋ React ๋ฒ์ ์๊ตฌ ์ฌํญ์ ๊ฐ์ง๊ณ ์๋ค๋ฉด, ๋จ์ผ React ๋ฒ์ ์ด ๋ชจ๋ ์๊ตฌ ์ฌํญ์ ๋ง์กฑ์ํค์ง ๋ชปํ๋ "์์กด์ฑ ์ง์ฅ"์ ๋น ์ ธ ๋ถ fragmented๋๊ฑฐ๋ ์ ์ง๋ณด์ ๋ถ๊ฐ๋ฅํ ๋น๋๋ก ์ด์ด์ง ์ ์์ต๋๋ค.
์ ์ ์ ์ธ ํธํ์ฑ ๊ด๋ฆฌ์ ์ด์
๋ฐ๋๋ก, ํธํ์ฑ์ ๋ํ ์ ์ ์ ์ธ ์ ๊ทผ ๋ฐฉ์์ ์๋นํ ์ด์ ์ ๊ฐ์ ธ์ต๋๋ค.
- ๋ ๋น ๋ฅธ ๊ฐ๋ฐ ์ฃผ๊ธฐ: ๊ฐ๋ฐ์๋ค์ ๋ฒ์ ๊ด๋ จ ๋ฌธ์ ๋ฅผ ๋๋ฒ๊น ํ๋ ๋ฐ ์๊ฐ์ ๋ ์ฐ๊ณ ๊ธฐ๋ฅ ๊ตฌ์ถ์ ๋ ๋ง์ ์๊ฐ์ ํ ์ ํ ์ ์์ต๋๋ค.
- ๋๋ฒ๊น ์๊ฐ ๋จ์ถ: ํธํ๋๋ ์์กด์ฑ์ ๊ฐ์ถ ์์ ์ ์ธ ํ๊ฒฝ์ ์๊ธฐ์น ์์ ๋์์ด ์ ๋ค๋ ๊ฒ์ ์๋ฏธํ๋ฉฐ, ๋๋ฒ๊น ๋ ธ๋ ฅ์ ๋ ์ง์ค์ ์ด๊ณ ํจ์จ์ ์ผ๋ก ๋ง๋ญ๋๋ค.
- ์๋ก์ด ๊ธฐ๋ฅ ๋ฐ ๊ฐ์ ๋ ๊ฐ๋ฐ์ ๊ฒฝํ์ ๋ํ ์ ๊ทผ: ์ต์ ์ํ๋ฅผ ์ ์งํ๋ฉด ํ์ด React์ ์ต์ ๊ธฐ๋ฅ, ์ฑ๋ฅ ํฅ์ ๋ฐ ๊ฐ๋ฐ์ ๋๊ตฌ๋ฅผ ํ์ฉํ์ฌ ์์ฐ์ฑ๊ณผ ์ฝ๋ ํ์ง์ ๋์ผ ์ ์์ต๋๋ค.
- ๋ณด์ ๊ฐํ: ์ ๊ธฐ์ ์ธ ์ ๋ฐ์ดํธ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ต์ ๋ณด์ ํจ์น์ ํํ์ ๋ฐ์ ์๋ ค์ง ์ทจ์ฝ์ ์ผ๋ก๋ถํฐ ๋ณดํธ๋๋๋ก ๋์ต๋๋ค.
- ์ฝ๋๋ฒ ์ด์ค์ ๋ฏธ๋ ๋๋น(Future-Proofing): ์๋ฒฝํ ๋ฏธ๋ ๋๋น๋ ๋ถ๊ฐ๋ฅํ์ง๋ง, ํธํ์ฑ์ ์ ์งํ๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ์ด ๊ฑด์ ํ ์ ๊ทธ๋ ์ด๋ ๊ฒฝ๋ก์ ๋จธ๋ฌผ๋ฌ ์์ด ํฅํ ๋ง์ด๊ทธ๋ ์ด์ ์ ๋ ์ํํ๊ณ ๋น์ฉ ํจ์จ์ ์ผ๋ก ๋ง๋ญ๋๋ค.
ํธํ์ฑ ๋ฏธ๋ก ํ์ํ๊ธฐ: ์กฐํ๋ฅผ ์ด๋ค์ผ ํ ํต์ฌ ์์๋ค
์์ ํ ํธํ์ฑ์ ๋ฌ์ฑํ๋ ค๋ฉด React ์ํ๊ณ์ ์ฌ๋ฌ ์ํธ ์ฐ๊ฒฐ๋ ๋ถ๋ถ์ ์ฃผ์๋ฅผ ๊ธฐ์ธ์ฌ์ผ ํฉ๋๋ค.
์ด์ธ์ผ๊ฐ: react์ react-dom
ํต์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ react์ react-dom์ ๋ถ๊ฐ๋ถํ๊ฒ ์ฐ๊ฒฐ๋์ด ์์ต๋๋ค. react๋ ์ปดํฌ๋ํธ๋ฅผ ์์ฑํ๊ณ ๊ด๋ฆฌํ๋ ํต์ฌ ๋ก์ง์ ํฌํจํ๊ณ ์์ผ๋ฉฐ, react-dom์ DOM ๊ด๋ จ ๋ ๋๋ง ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ์ด๋ค์ ํ๋ก์ ํธ์์ ํญ์ ๋์ผํ ๋ฒ์ (๋ฉ์ด์ , ๋ง์ด๋, ํจ์น)์ด์ด์ผ ํฉ๋๋ค. ๋ฒ์ ์ด ์ผ์นํ์ง ์์ผ๋ฉด ์ ์ ์๋ ์ค๋ฅ์ ์ผ๋ฐ์ ์ธ ์์ธ์ด ๋ฉ๋๋ค.
์๋ํํฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ UI ํ๋ ์์ํฌ
๋๋ถ๋ถ์ React ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐฉ๋ํ ์๋ํํฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ UI ํ๋ ์์ํฌ(์: Material-UI, Ant Design, React Router, Redux) ์ํ๊ณ์ ํฌ๊ฒ ์์กดํฉ๋๋ค. ์ด๋ฌํ ๊ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ช ์์ ์ผ๋ก ๋๋ ์๋ฌต์ ์ผ๋ก ํน์ React ๋ฒ์ ๊ณผ์ ํธํ์ฑ์ ์ ์ธํฉ๋๋ค.
peerDependencies: ๋ง์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋package.json์peerDependencies๋ฅผ ์ง์ ํ์ฌ ํจ๊ป ์๋ํ ๊ฒ์ผ๋ก ์์๋๋ React ๋ฒ์ ์ ๋ํ๋ ๋๋ค. ์๋ฅผ ๋ค์ด,"react": ">=16.8.0". ํญ์ ์ด๊ฒ๋ค์ ํ์ธํ์ธ์.- ๊ณต์ ๋ฌธ์ ๋ฐ ๋ฆด๋ฆฌ์ค ๋ ธํธ: ํธํ์ฑ ์ ๋ณด์ ๋ํ ๊ฐ์ฅ ์ ๋ขฐํ ์ ์๋ ์ถ์ฒ๋ ๊ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ณต์ ๋ฌธ์ ๋ฐ ๋ฆด๋ฆฌ์ค ๋ ธํธ์ ๋๋ค. ์ฃผ์ React ์ ๊ทธ๋ ์ด๋ ์ ์ ํต์ฌ ์์กด์ฑ์์ ์ ๊ณตํ๋ ํธํ์ฑ ๋งคํธ๋ฆญ์ค๋ ์ ๊ทธ๋ ์ด๋ ๊ฐ์ด๋๋ฅผ ๊ฒํ ํ์ธ์.
- ์ปค๋ฎค๋ํฐ ๋ฆฌ์์ค: GitHub ์ด์, ํ๋ก์ ํธ ํ ๋ก ํฌ๋ผ, Stack Overflow๋ ์๋ ค์ง ํธํ์ฑ ๋ฌธ์ ์ ํด๊ฒฐ์ฑ ์ ์๋ณํ๋ ๋ฐ ์ ์ฉํ ๋ฆฌ์์ค๊ฐ ๋ ์ ์์ต๋๋ค.
๋น๋ ์ํ๊ณ: Babel, Webpack, ESLint
๋น๋ ๋๊ตฌ์ ๋ฆฐํฐ๋ React ์ฝ๋๋ฅผ ๋ณํํ๊ณ ๊ฒ์ฆํ๋ ๋ฐ ์ค์ํ ์ญํ ์ ํฉ๋๋ค. ์ด๋ค์ ๋ฒ์ ๊ณผ ์ค์ ์ ์ ํํ React ๋ฒ์ ๊ณผ ์ผ์นํด์ผ ํฉ๋๋ค.
- Babel: React ์ ํ๋ฆฌ์ผ์ด์
์ ์ข
์ข
์ต์ JavaScript/JSX๋ฅผ ๋ธ๋ผ์ฐ์ ํธํ ์ฝ๋๋ก ๋ณํํ๊ธฐ ์ํด Babel์ ์ฌ์ฉํฉ๋๋ค. Babel ํ๋ฆฌ์
(์:
@babel/preset-react)๊ณผ ํ๋ฌ๊ทธ์ธ์ด ์ต์ ์ํ์ด๊ณ , ์ฌ์ฉ ์ค์ธ React ๋ฒ์ ์์ ์์๋๋ ํน์ JavaScript ๊ธฐ๋ฅ ๋ฐ JSX ๋ณํ์ ์ฒ๋ฆฌํ๋๋ก ๊ตฌ์ฑ๋์๋์ง ํ์ธํ์ธ์. ์ค๋๋ Babel ๊ตฌ์ฑ์ ์ต์ React ๊ตฌ๋ฌธ์ ์ฌ๋ฐ๋ฅด๊ฒ ์ฒ๋ฆฌํ์ง ๋ชปํ ์ ์์ต๋๋ค. - Webpack (๋๋ Vite, Rollup๊ณผ ๊ฐ์ ๋ค๋ฅธ ๋ฒ๋ค๋ฌ): ๋ฒ๋ค๋ฌ ์์ฒด๋ ์ผ๋ฐ์ ์ผ๋ก React ๋ฒ์ ์ ๊ตฌ์ ๋ฐ์ง ์์ง๋ง, ๋ก๋(์: Webpack์
babel-loader)๋ Babel์ ํตํด ๊ตฌ์ฑ๋๋ฏ๋ก ํธํ์ฑ์ด Babel ์ค์ ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค. - ESLint:
eslint-plugin-react๋ React ๊ด๋ จ ๋ฆฐํ ๊ท์น์ ๊ฐ์ ํ๋ ๊ฐ๋ ฅํ ๋๊ตฌ์ ๋๋ค. ๋ฒ์ ๊ณผ ์ค์ (์:settings.react.version)์ด ํ๋ก์ ํธ์ React ๋ฒ์ ์ ์ ํํ๊ฒ ๋ฐ์ํ์ฌ ์๋ชป๋ ๊ฒฝ๊ณ ๋ ๋๋ฝ๋ ๋ฆฐํ ๊ธฐํ๋ฅผ ํผํ๋๋ก ํ์ธ์.
JavaScript/TypeScript ์ธ์ด ๊ธฐ๋ฅ
์ต์ React ๋ฒ์ ์ ์ข ์ข ์ต์ JavaScript ๊ธฐ๋ฅ(์: ์ต์ ๋ ์ฒด์ด๋, null ๋ณํฉ ์ฐ์ฐ์, private ํด๋์ค ํ๋)์ ํ์ฉํฉ๋๋ค. ํ๋ก์ ํธ๊ฐ ์ค๋๋ JavaScript ํธ๋์คํ์ผ๋ฌ ๊ตฌ์ฑ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ, ์ด๋ฌํ ๊ธฐ๋ฅ์ ์ฌ๋ฐ๋ฅด๊ฒ ์ฒ๋ฆฌํ์ง ๋ชปํด ๋น๋ ์คํจ๋ ๋ฐํ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก, TypeScript๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ TypeScript ์ปดํ์ผ๋ฌ ๋ฒ์ ์ด React ๋ฒ์ ๋ฐ ํ์ํ ํน์ JSX ํ์ ์ ์์ ๋ชจ๋ ํธํ๋๋์ง ํ์ธํ์ธ์.
๋ธ๋ผ์ฐ์ ๋ฐ ๋ฐํ์ ํ๊ฒฝ
React ์์ฒด๊ฐ ๋ง์ ํฌ๋ก์ค ๋ธ๋ผ์ฐ์ ํธํ์ฑ์ ์ฒ๋ฆฌํ์ง๋ง, ์ฌ์ฉํ๋ JavaScript ๊ธฐ๋ฅ๊ณผ ๋น๋ ๋๊ตฌ์ ์ถ๋ ฅ๋ฌผ์ ์ฌ์ ํ ๋์ ๋ธ๋ผ์ฐ์ ์ฌ์ฉ์์ ํธํ๋์ด์ผ ํฉ๋๋ค. ์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง(SSR)์ ๊ฒฝ์ฐ, ์๋ฒ๋ฅผ ์คํํ๋ Node.js ๋ฒ์ ๋ํ React ๋ฒ์ ๋ฐ ์๋ฒ ๊ด๋ จ ์์กด์ฑ๊ณผ ํธํ๋์ด์ผ ํฉ๋๋ค.
๊ฒฌ๊ณ ํ ํธํ์ฑ ํ์ธ ๋ฐ ๊ด๋ฆฌ๋ฅผ ์ํ ์ ๋ต๊ณผ ๋๊ตฌ
ํจ๊ณผ์ ์ธ ํธํ์ฑ ๊ด๋ฆฌ๋ ํน์ ๋๊ตฌ์ ์ ๋ต์ ๋์์ ๋ฐ๋ ์ง์์ ์ธ ๊ณผ์ ์ ๋๋ค.
์ ์ ์ ์ธ ์์กด์ฑ ์ํ ํ์ธ
npm outdated/yarn outdated: ์ด ๋ช ๋ น์ด๋ค์ ํ๋ก์ ํธ์ ์ด๋ค ํจํค์ง๊ฐ ์ค๋๋์๋์ง์ ๋ํ ๋น ๋ฅธ ๊ฐ์๋ฅผ ์ ๊ณตํฉ๋๋ค. ํ์ฌ ์ค์น๋ ๋ฒ์ ,package.json์ ๋ช ์๋ ๋ฒ์ , ๊ทธ๋ฆฌ๊ณ ์ฌ์ฉ ๊ฐ๋ฅํ ์ต์ ๋ฒ์ ์ ๋ณด์ฌ์ค๋๋ค. ์ด๋ ์ ์ฌ์ ์ธ ์ ๋ฐ์ดํธ๋ฅผ ์๋ณํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.npm audit/yarn audit: ๋ณด์์ ๋งค์ฐ ์ค์ํ ์ด ๋ช ๋ น์ด๋ค์ ์์กด์ฑ ํธ๋ฆฌ์์ ์๋ ค์ง ์ทจ์ฝ์ ์ ์ค์บํ๊ณ ์ข ์ข ์ด๋ฅผ ํด๊ฒฐํ๋ ์ ๋ฐ์ดํธ๋ฅผ ์ ์ํฉ๋๋ค. ์ ๊ธฐ์ ์ผ๋ก ๊ฐ์ฌ๋ฅผ ์คํํ๋ ๊ฒ์ ๋ณด์ ์ํ์ ์ํํ๊ธฐ ์ํ ๊ธ๋ก๋ฒ ๋ชจ๋ฒ ์ฌ๋ก์ ๋๋ค.
์ ๊ธ ํ์ผ(Lock Files)์ ์ฌ์ฉํ ํต์ ๋ ์ ๋ฐ์ดํธ
์ ๊ธ ํ์ผ(npm์ ๊ฒฝ์ฐ package-lock.json, Yarn์ ๊ฒฝ์ฐ yarn.lock)์ ๋ค๋ฅธ ํ๊ฒฝ๊ณผ ํ์๋ค ๊ฐ์ ์ผ๊ด๋ ์ค์น๋ฅผ ์ํด ํ์์ ์
๋๋ค. ์ด๋ค์ ์ค์น ์์ ์ ๋ชจ๋ ์์กด์ฑ(๋ฐ ํ์ ์์กด์ฑ)์ ์ ํํ ๋ฒ์ ์ ๊ณ ์ ํฉ๋๋ค. ์ด๋ฅผ ํตํด ์๋ก์ด ๊ฐ๋ฐ์๊ฐ ํ์ ํฉ๋ฅํ๊ฑฐ๋ CI/CD ํ์ดํ๋ผ์ธ์ด ์คํ๋ ๋ ์ ํํ ๋์ผํ ์์กด์ฑ ํธ๋ฆฌ๋ฅผ ์ค์นํ๊ฒ ๋์ด, ๋ฏธ๋ฌํ ๋ฒ์ ์ฐจ์ด๋ก ์ธํ "๋ด ์ปดํจํฐ์์๋ ๋๋๋ฐ" ๋ฌธ์ ๋ฅผ ๋ฐฉ์งํฉ๋๋ค. ํญ์ ์ ๊ธ ํ์ผ์ ๋ฒ์ ๊ด๋ฆฌ์ ์ปค๋ฐํ์ธ์.
์๋ํ๋ ํ ์คํธ: ๋น์ ์ ์์ ๋ง
ํฌ๊ด์ ์ธ ์๋ํ ํ ์คํธ ์ค์ํธ๋ ํธํ์ฑ ๋ฌธ์ ์ ๋ํ ๊ฐ์ฅ ์ ๋ขฐํ ์ ์๋ ๋ฐฉ์ด ์๋จ์ ๋๋ค. React ๋ฒ์ ์ ๊ทธ๋ ์ด๋ ์ ํ์ ํ ์คํธ๋ฅผ ์ฒ ์ ํ ์คํํ์ธ์:
- ๋จ์ ํ ์คํธ: ์ปดํฌ๋ํธ ๋ฐ ์ ํธ๋ฆฌํฐ ํจ์์ ๊ฐ๋ณ ๋์์ ํ์ธํฉ๋๋ค(์: Jest ๋ฐ React Testing Library ์ฌ์ฉ).
- ํตํฉ ํ ์คํธ: ๋ค๋ฅธ ์ปดํฌ๋ํธ์ ๋ชจ๋์ด ์ฌ๋ฐ๋ฅด๊ฒ ์ํธ ์์ฉํ๋์ง ํ์ธํฉ๋๋ค.
- ์๋ ํฌ ์๋(E2E) ํ ์คํธ: ์ค์ ์ฌ์ฉ์ ํ๋ฆ์ ์๋ฎฌ๋ ์ด์ ํ์ฌ(์: Cypress, Playwright ์ฌ์ฉ) ์ ์ฒด ์ ํ๋ฆฌ์ผ์ด์ ์ด ์คํ๋ ๋๋ง ๋ํ๋ ์ ์๋ ๋ฌธ์ ๋ฅผ ํฌ์ฐฉํฉ๋๋ค.
์ ๊ทธ๋ ์ด๋ ํ ์คํจํ๋ ํ ์คํธ ์ค์ํธ๋ ์ฆ์ ํธํ์ฑ ๋ฌธ์ ๋ฅผ ์๋ ค์ฃผ๋ฏ๋ก, ์ฌ์ฉ์์๊ฒ ์ํฅ์ ๋ฏธ์น๊ธฐ ์ ์ ํด๊ฒฐํ ์ ์์ต๋๋ค.
์ง์์ ํตํฉ/๋ฐฐํฌ(CI/CD) ํ์ดํ๋ผ์ธ
ํธํ์ฑ ํ์ธ ๋ฐ ์๋ํ๋ ํ ์คํธ๋ฅผ CI/CD ํ์ดํ๋ผ์ธ์ ํตํฉํ์ธ์. ์ฝ๋๊ฐ ํธ์๋ ๋๋ง๋ค ํ์ดํ๋ผ์ธ์ ์๋์ผ๋ก ๋ค์์ ์ํํด์ผ ํฉ๋๋ค.
- ์์กด์ฑ ์ค์น (์ ๊ธ ํ์ผ ์ฌ์ฉ).
- ์์กด์ฑ ์ํ ํ์ธ ์คํ (์:
npm audit). - ๋จ์, ํตํฉ, E2E ํ ์คํธ ์คํ.
- ์ ํ๋ฆฌ์ผ์ด์ ๋น๋.
์ด ์๋ํ๋ ํ๋ก์ธ์ค๋ ๋ชจ๋ ํธํ์ฑ ํ๊ท๊ฐ ํ๋ก๋์ ์ ๋๋ฌํ๊ธฐ ํจ์ฌ ์ ์ธ ๊ฐ๋ฐ ์ฃผ๊ธฐ ์ด๊ธฐ์ ํฌ์ฐฉ๋๋๋ก ๋ณด์ฅํฉ๋๋ค. ๊ธ๋ก๋ฒ ํ์ ๊ฒฝ์ฐ, CI/CD๋ ๊ฐ๋ณ ๊ฐ๋ฐ์ ํ๊ฒฝ์ ์ด์ํ๋ ์ผ๊ด๋๊ณ ํธ๊ฒฌ ์๋ ๊ฒ์ฆ ๊ณ์ธต์ ์ ๊ณตํฉ๋๋ค.
๋ฌธ์ํ์ ์ปค๋ฎค๋ํฐ์ ํ
- ๊ณต์ React ์ ๊ทธ๋ ์ด๋ ๊ฐ์ด๋: React ํ์ ์ฃผ์ ๋ฒ์ (์: "React 18๋ก ์ ๊ทธ๋ ์ด๋ํ๊ธฐ")์ ๋ํด ๋งค์ฐ ์์ธํ ๋ง์ด๊ทธ๋ ์ด์ ๊ฐ์ด๋๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ด ๊ฐ์ด๋๋ค์ ํธํ์ฑ์ ๊นจ๋ ๋ณ๊ฒฝ ์ฌํญ, ์๋ก์ด API, ๊ถ์ฅ ๋ง์ด๊ทธ๋ ์ด์ ์ ๋ต์ ์ค๋ช ํ๋ฏ๋ก ๋งค์ฐ ์ค์ํฉ๋๋ค.
- ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ณ๊ฒฝ ๋ก๊ทธ ๋ฐ ๋ฆด๋ฆฌ์ค ๋ ธํธ: ๋ชจ๋ ์๋ํํฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํด, React ํธํ์ฑ ๋ฐ ์ ์ฌ์ ์ธ ํธํ์ฑ์ ๊นจ๋ ๋ณ๊ฒฝ ์ฌํญ์ ๋ํ ๊ตฌ์ฒด์ ์ธ ์ง์นจ์ ๋ณ๊ฒฝ ๋ก๊ทธ๋ ๋ฆด๋ฆฌ์ค ๋ ธํธ๋ฅผ ์ฐธ์กฐํ์ธ์.
- ์ปค๋ฎค๋ํฐ ์ฐธ์ฌ: React ์ปค๋ฎค๋ํฐ๋ ํ๊ธฐ์ฐจ๊ณ ํ๋์ ์ ๋๋ค. ํฌ๋ผ, GitHub ์ด์, Stack Overflow, Discord ์ฑ๋์ ๋ค๋ฅธ ์ฌ๋๋ค์ด ์ด๋ฏธ ๊ฒช๊ณ ํด๊ฒฐํ์ ์ ์๋ ํธํ์ฑ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ํ๋ฅญํ ๋ฆฌ์์ค์ ๋๋ค.
๊ธ๋ก๋ฒ ํ๊ฒฝ์์ ์ํํ React ์ ๊ทธ๋ ์ด๋๋ฅผ ์ํ ๋ชจ๋ฒ ์ฌ๋ก
React, ํนํ ๋ฉ์ด์ ๋ฒ์ ์ ์ ๊ทธ๋ ์ด๋ํ๋ ค๋ฉด ์ ๋ต์ ์ธ ์ ๊ทผ์ด ํ์ํฉ๋๋ค. ํนํ ๋ถ์ฐ๋ ํ์ ์ํด ์ํํ ์ ํ์ ๋ณด์ฅํ๊ธฐ ์ํ ๋ชจ๋ฒ ์ฌ๋ก๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๊ผผ๊ผผํ๊ฒ ๊ณํํ๊ณ ์ค๋นํ๊ธฐ
- ํ์ฌ ์ํ ํ๊ฐ: ํ์ฌ React ๋ฒ์ , ๋ชจ๋ ์ฃผ์ ๋ฐ ๋ณด์กฐ ์์กด์ฑ, ๊ทธ๋ฆฌ๊ณ ์ ์ธ๋ ํธํ์ฑ์ ๋ฌธ์ํํ์ธ์. ์ ์ฌ์ ์ธ ๋ฌธ์ ์ ์ ์๋ณํฉ๋๋ค.
- ๋ฆด๋ฆฌ์ค ๋ ธํธ ๊ฒํ : ๋์ ๋ฒ์ ์ ๋ํ ๊ณต์ React ๋ฆด๋ฆฌ์ค ๋ ธํธ์ ๋ง์ด๊ทธ๋ ์ด์ ๊ฐ์ด๋๋ฅผ ์ฒ ์ ํ ์ฝ์ผ์ธ์. ๋ชจ๋ ํธํ์ฑ์ ๊นจ๋ ๋ณ๊ฒฝ ์ฌํญ๊ณผ ์๋ก์ด ๊ธฐ๋ฅ์ ์ดํดํฉ๋๋ค.
- ๋ฆฌ์์ค ํ ๋น: ์ฃผ์ ์ ๊ทธ๋ ์ด๋๋ ๊ฐ๋ฐ์๋ฟ๋ง ์๋๋ผ QA ๋ฐ ์ ํ ํ์ ์ ๋ด ์๊ฐ๊ณผ ๋ ธ๋ ฅ์ด ํ์ํ๋ค๋ ๊ฒ์ ์ดํดํ์ธ์. ๊ธ๋ก๋ฒ ํ์ ๊ฒฝ์ฐ, ์์ฌ์ํต๊ณผ ํ์ ์ ์ํ ์๊ฐ๋ ์ฐจ์ด๋ฅผ ๊ณ ๋ คํฉ๋๋ค.
- ์ ์ฉ ๋ธ๋์น ์์ฑ: ์งํ ์ค์ธ ๊ฐ๋ฐ์ ๋ฐฉํดํ์ง ์๋๋ก ์ ๊ทธ๋ ์ด๋ ์์ ์ ๋ณ๋์ Git ๋ธ๋์น์์ ๊ฒฉ๋ฆฌํฉ๋๋ค.
์ ์ง์ ์ ๊ทธ๋ ์ด๋: "๋น ๋ฑ " ์ ๊ทผ ๋ฐฉ์ ํผํ๊ธฐ
์ ๋์ ์ผ๋ก ํ์ํ์ง ์์ ํ, ์ฌ๋ฌ ๋ฉ์ด์ ๋ฒ์ ์ ๊ฑด๋๋ฐ๋ ๊ฒ์ ํผํ์ธ์. ์ค๊ฐ ๋ง์ด๊ทธ๋ ์ด์ ๊ฐ์ด๋๋ฅผ ํ์ฉํ๊ณ ๋ฌธ์ ๋ฅผ ์ ์ง์ ์ผ๋ก ํด๊ฒฐํ ์ ์์ผ๋ฏ๋ก, 16์์ 18๋ก ์ง์ ์ ๊ทธ๋ ์ด๋ํ๋ ๊ฒ๋ณด๋ค 17์์ 18๋ก ์ ๊ทธ๋ ์ด๋ํ๋ ๊ฒ์ด ์ข ์ข ๋ ์ฝ์ต๋๋ค. ์ต์ ๋ฉ์ด์ ๋ฆด๋ฆฌ์ค์์ ๊ฒฉ์ฐจ๋ฅผ ์ต์ํํ๊ธฐ ์ํด ๋ง์ด๋ ๋ฐ ํจ์น ๋ฒ์ ์ ์ ๊ธฐ์ ์ผ๋ก ์ ๋ฐ์ดํธํ์ธ์.
๋๊ท๋ชจ ๋ง์ด๊ทธ๋ ์ด์ ์ ์ํ ์ฝ๋๋ชจ๋(Codemods) ํ์ฉ
๊ด๋ฒ์ํ ์ฝ๋ ๋ฆฌํฉํ ๋ง์ด ํ์ํ ์ค์ํ ํธํ์ฑ ๊นจ๋ ๋ณ๊ฒฝ ์ฌํญ์ ๊ฒฝ์ฐ, React ํ๊ณผ ์ปค๋ฎค๋ํฐ๋ ์ข
์ข
"์ฝ๋๋ชจ๋"(์: react-codemod๋ฅผ ํตํด)๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ด๊ฒ๋ค์ ์ฝ๋๋ฒ ์ด์ค๋ฅผ ์๋ก์ด API์ ๋ง๊ฒ ๋ณํํ ์ ์๋ ์๋ํ๋ ์คํฌ๋ฆฝํธ์
๋๋ค. ์๋ง์ ์๊ฐ์ ์๋ ๋ฆฌํฉํ ๋ง์ ์ ์ฝํ์ฌ ๋๊ท๋ชจ ์ฝ๋๋ฒ ์ด์ค์ ๋ถ์ฐ๋ ํ์ด ์ฃผ์ ์
๊ทธ๋ ์ด๋๋ฅผ ๋ ์คํ ๊ฐ๋ฅํ๊ฒ ๋ง๋ญ๋๋ค.
์คํ ์ด์ง ํ๊ฒฝ์ ๋น์ ์ ๊ฐ์ฅ ์นํ ์น๊ตฌ
์คํ ์ด์ง ๋๋ ์ฌ์ ํ๋ก๋์ ํ๊ฒฝ์์ ๊ด๋ฒ์ํ ํ ์คํธ ์์ด ์ฃผ์ React ์ ๊ทธ๋ ์ด๋๋ฅผ ํ๋ก๋์ ์ ์ง์ ๋ฐฐํฌํ์ง ๋ง์ธ์. ์ด ํ๊ฒฝ์ ํ๋ก๋์ ์ค์ ์ ๊ฑฐ์ ๊ทธ๋๋ก ๋ฐ์ํด์ผ ํ๋ฉฐ, ๋ค์์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
- ์ฒ ์ ํ ๊ธฐ๋ฅ ํ ์คํธ ์ํ.
- ์ฑ๋ฅ ์ ํ๋ฅผ ํ์ธํ๊ธฐ ์ํ ์ฑ๋ฅ ๋ชจ๋ํฐ๋ง ์ค์.
- ๋ ๋์ ๋ด๋ถ ์ฒญ์ค์ผ๋ก๋ถํฐ ํผ๋๋ฐฑ ์์ง.
- ํ๊ฒฝ๋ณ ๋ฌธ์ ์๋ณ ๋ฐ ํด๊ฒฐ.
์ ๊ทธ๋ ์ด๋ ํ ๋ชจ๋ํฐ๋ง ๋ฐ ํผ๋๋ฐฑ ๋ฃจํ
์ฑ๊ณต์ ์ธ ๋ฐฐํฌ ํ์๋ ๊ฒฝ๊ณ๋ฅผ ๋ฆ์ถ์ง ๋ง์ธ์. ์ ํ๋ฆฌ์ผ์ด์ ์ ์ค๋ฅ ๋ก๊ทธ, ์ฑ๋ฅ ์งํ, ์ฌ์ฉ์ ํผ๋๋ฐฑ์ ๋ฉด๋ฐํ ๋ชจ๋ํฐ๋งํ์ธ์. ์ ์ํ๊ฒ ํด๊ฒฐํ ์ ์๋ ์น๋ช ์ ์ธ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ ์ด์ ๋ฒ์ ์ผ๋ก ๋กค๋ฐฑํ ์ค๋น๋ฅผ ํ์ธ์. ์ ๊ทธ๋ ์ด๋ ํ ์ด์ ํ์์ ๋ณด๊ณ ํ๊ณ ํด๊ฒฐํ๊ธฐ ์ํด ๊ธ๋ก๋ฒ ํ ๋ด์ ๋ช ํํ ์ปค๋ฎค๋์ผ์ด์ ์ฑ๋์ ๊ตฌ์ถํ์ธ์.
๊ฒฐ๋ก : ์ค๋ ์ง์๋๋ React ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ ์งํ ์์ฉํ๊ธฐ
React ๋ฒ์ ์ ๊ด๋ฆฌํ๊ณ ํธํ์ฑ์ ๋ณด์ฅํ๋ ๊ฒ์ ํ๋ ํ๋ก ํธ์๋ ๊ฐ๋ฐ์ ํ์์ ์ธ ์ธก๋ฉด์ ๋๋ค. ์ด๋ ์ผํ์ฑ ์์ ์ด ์๋๋ผ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฑด์ ์ฑ, ๋ณด์ ๋ฐ ์ฑ๋ฅ์ ๋ํ ์ง์์ ์ธ ์ฝ์์ ๋๋ค. ์ ์์ ๋ฒ์ ๊ด๋ฆฌ๋ฅผ ์ดํดํ๊ณ , ๋ฒ์ ํ์ธ์ ์ํ ๊ฐ์ฉ ๋๊ตฌ๋ฅผ ํ์ฉํ๋ฉฐ, ์ ์ฒด ์ํ๊ณ์ ๊ฑธ์ณ ํธํ์ฑ์ ์ ์ ์ ์ผ๋ก ํด๊ฒฐํ๊ณ , ์ ๋ต์ ์ธ ์ ๊ทธ๋ ์ด๋ ๊ดํ์ ์ฑํํจ์ผ๋ก์จ ๊ฐ๋ฐ์๋ค์ React์ ์งํํ๋ ํ๊ฒฝ์ ์์ ์๊ฒ ํ์ํ ์ ์์ต๋๋ค.
๊ตญ์ ์ ์ธ ํ์๊ฒ ์ด๋ฌํ ์์น์ ๋์ฑ ์ค์ํด์ง๋๋ค. ๋ฒ์ ๊ด๋ฆฌ ์ ๋ต์ ๋ํ ๊ณต์ ๋๊ณ ๋ช ํํ ์ดํด์ ์ ๊ทธ๋ ์ด๋์ ๋ํ ์ผ๊ด๋ ์ ๊ทผ ๋ฐฉ์์ ๋ ๋์ ํ์ ์ ์ด์งํ๊ณ , ๋ค์ํ ๊ฐ๋ฐ ํ๊ฒฝ ์ ๋ฐ์ ๋ง์ฐฐ์ ์ค์ด๋ฉฐ, ๊ถ๊ทน์ ์ผ๋ก ๊ธ๋ก๋ฒ ์ฌ์ฉ์ ๊ธฐ๋ฐ์ ์ํ ๋ ํ๋ ฅ ์๊ณ ๋ฏธ๋ ์งํฅ์ ์ธ React ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๋ ๋ฐ ๊ธฐ์ฌํฉ๋๋ค. ์งํ๋ฅผ ๋ฐ์๋ค์ด๊ณ , ์ต์ ์ ๋ณด๋ฅผ ์ ์งํ๋ฉฐ, React ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ฒ์ฐฝํ๋๋ก ํ์ธ์.