๊ธฐ๋ฅ ์ ์์ฒญํ๊ฑฐ๋ ๋ฒ๊ทธ ๋ฅผ ๋ณด๊ณ ํ์๊ฒ ์ต๋๊น?
ํน์ง
ํ์ฌ ํ๋์ ๋ฌด์์
๋๊น?
์ฌ๋ฐ๋ฅธ ์ผ์ ํ๋ ค๋ ๊ฐ๋ฐ์๋ ์ข
์ข
์ค์๋ก DEV ๋ชจ๋๋ฅผ PROD ๋ชจ๋๊ฐ ์๋ ํ๋ก๋์
์ผ๋ก ์ ๊ณตํฉ๋๋ค. ์ด๋ ์ฑ๋ฅ์ ์๋นํ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค. DEV->PROD๋ ํ ์ค ๋ณ๊ฒฝ์ด์ง๋ง React๊ฐ ๊ณ ๋ฌด์ ์ผ๋ก ํ์ํ ์ ์๋ ๊ฒ์
๋๋ค.
์ฌ๊ธฐ์๋ ํฐ ๋์์ค ๊ฐ ์์ผ๋ฉฐ ์ด๊ฒ์ด UX์ ๋น๊ตํ์ฌ ๊ฐ์ ธ์ค๋ ์ ๋ฐ์ ์ธ DX ๊ฐ ์ฌ์ด์ ๊ท ํ์ ์ก์์ผ ํ๋ค๋ ๊ฒ์ ์๊ณ ์์ต๋๋ค. ๋ ๋ค๋ฅธ ๋ฌธ์ ๋ ๋ณ๊ฒฝ ์์ฒด๊ฐ ์ฝ์ง ์๋ค๋ ๊ฒ์ ๋๋ค. ์ฌ๊ธฐ์์ ์ฌ๋ฐ๋ฅธ ์๋ฃจ์ ์ด ๋ ๋์ ๊ธฐ๋ณธ๊ฐ์ธ์ง ๋๋ ๋ ๊ฐ๋ ฅํ ์นํธ์ธ์ง ์ฌ๋ถ๋ ๋ถ๋ถ๋ช ํฉ๋๋ค. @sebmarkbage ์ ๊ฐ์ ์ฌ๋๋ค์ ์ด๊ฒ์ด ์๋ ค์ง ๋ฌธ์ ์์ ์ธ์ ํ๊ณ ์์ผ๋ฏ๋ก ์ด๋ฅผ ๊ฐ์ ํ๋ ๋ฐ ๋์์ด ๋๋ ํ ๋ก ์ ์ฌ์ง๊ฐ ์์ ์ ์์ต๋๋ค.
๊ทธ๋ ๋ํ ๊ฒฝ๊ณ ์์์์ DEV๋ก ์ ํํ๋ ค๋ฉด ์ผ๋ถ ์ฌ๋๋ค์ด ์ฐจ์ ์ฑ ์ธ ์ ์ฒด ์ฝ๋๋ฒ ์ด์ค๋ฅผ ์์ ํด์ผ ํ ์๋ ์๋ค๊ณ ์ธ๊ธํ์ต๋๋ค. ๊ทธ๋ฌ๋ ์ฌ๊ธฐ์์ ์ด์ผ๊ธฐํ ๊ฐ์น๊ฐ ์๋ ์ค๊ฐ ์๋ฃจ์ ์ด ์์ ์ ์์ต๋๋ค.
์์๋๋ ๋์์ ๋ฌด์์ ๋๊น?
React๋ ์ฌ์ฉ์๊ฐ PROD ๋ชจ๋๋ฅผ DEV๊ฐ ์๋ ํ๋ก๋์ ์ผ๋ก ์ ๊ณตํ๋๋ก ๊ถ์ฅํฉ๋๋ค. ๋๋ ์ด๊ฒ์ ๊ฐ์ ํ๊ธฐ ์ํด ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ณ์ธต์์ ์ ๊ณต๋๋(๋๋ Webpack์ ์ํด ๋น๋/๋ฒ๋ค๋ง ์๊ฐ ๋์ ์ด๋ป๊ฒ๋ ํด๊ฒฐ๋๋) ์๋ฃจ์ ์ ๋ํด ์ด๋ ค ์์ต๋๋ค.
์ด ์ค๋ ๋์๋ localhost ๊ฐ์ง์์ ํ๋ก๋์ ํ๊ฒฝ์์ ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ DOM์ '๊ฐ๋ฐ ๋ชจ๋' ๋ฉ์์ง ์ฝ์ ์ ๋ํ ๊ฒฝ๊ณ ์ ์ด๋ฅด๊ธฐ๊น์ง ๋ค์ํ ์ ์์ด ์์์ต๋๋ค. ์ด ๊ฐ์:
๋๋ @thelarkinn ์ ์ด์ ๊ฐ์ ๋ฉ์์ง ๊ฐ์ง๋ฅผ ๋ณด๋ค ์ฝ๊ฒ โโํ๊ธฐ ์ํด ํ์ํ ENV ๊ตฌ์ฑ์ ํ์คํํ๋ ค๊ณ ์ ์ํ์ต๋๋ค. ์ด ์ค ์ด๋ ๊ฒ์ด ๊ฐ์ฅ ํ์ค์ ์ผ์ง๋ ๋ถ๋ถ๋ช ํฉ๋๋ค. React ์ฝ์ด๊ฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ๋ํด ๊ฐ์ง ์ ์๋ ๋ค๋ฅธ ์์ด๋์ด๊ฐ ์์ ์ ์์ต๋๋ค.
์ด๋ค ๋ฒ์ ์ React์ ์ด๋ค ๋ธ๋ผ์ฐ์ /OS๊ฐ ์ด ๋ฌธ์ ์ ์ํฅ์ ๋ฐ๋์?
๋ชจ๋ ์ต์ ๋ฒ์ .
@jordwalk ์ ์ด ์ค๋ ๋์์ ์ด ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค. ๋๋ ๊ทธ๊ฐ ๋ฒค์น๋งํฌ์ ๋ํด์๋ ๊ณต์ ํ ์ง์ ์ ํ๋ค๊ณ ์๊ฐํ์ง๋ง, ๋๋ ์ฐ๋ฆฌ๊ฐ ์ด๋ป๊ฒ ํ๋ฉด ์ฌ๋๋ค์ด ์ต์ข ๊ณ ๊ฐ์๊ฒ ์ต์ ํํ๊ธฐ ์ํด ๋ ธ๋ ฅํ ์ ํ ๊ฒฝํ์ ์ต๊ณ ์ ์๊ด์ผ๋ก ์ ๊ณตํ ์ ์๋์ง์ ๋ํด ๊ด์ฌ์ ๊ฐ๊ณ ์์ต๋๋ค.
๋ฌธ๋งฅ์ React์ DEV ๋ฒ์ ์ ์ถ์ํ์์ ๊ฐ์งํ๋ฉด ์ด๋ฏธ ๊ฒฝ๊ณ ํฉ๋๋ค. https://github.com/facebook/react/blob/8791325db03725ef4801fc58b35a3bb4486a8904/src/renderers/dom/ReactDOM.js#L91 -L98
์ฌ์ฉ์์๊ฒ ์๋ฆฌ๊ธฐ ์ํด ์ ์ฌํ ํด๋ฆฌ์คํฑ์ ์ฐพ์ ์ ์๊ณ DOM ๋ํ ์์๋ฅผ ๋ ์ ๊ทน์ ์ผ๋ก ํ์ํ ์ ์๋ ํ ๊ทธ๋์ผ ํฉ๋๋ค.
๋๋ ๋ํ ์ฌ๋๋ค์ด ์ฃผ์๋ฅผ ๊ธฐ์ธ์ธ๋ค๋ฉด ์ฐ๋ฆฌ๊ฐ ์ ๊ณตํ๋ ๊ฒฝ๊ณ ๊ฐ ์ฑ๋ฅ์ ํฌ๊ฒ ํฅ์์ํฌ ์ ์์์ ๋ถ๋ช ํ ํ๊ณ ์ถ์ต๋๋ค. ์ด ์ค๋ ๋๋ ๊ธฐ๋ณธ๊ฐ์ด ์๋ ๊ฒฝ์ฐ ๋์ค์ ๋ฐฐํฌํ๊ธฐ ์ด๋ ค์ด ์ด์ ์ ๋ํ ๋ช ๊ฐ์ง ๊ทผ๊ฑฐ๋ฅผ ์ค๋ช ํฉ๋๋ค .
๋ํ renderToString
๊ฐ ๊ฐ๋ฐ ๋ชจ๋์์ ํธ์ถ๋๋ ๊ฒฝ์ฐ ๋จ์ผ console.warn ์ ์๊ณผ ํจ๊ป ์ฐจ์ํ๊ณ ์ถ์ต๋๋ค. ๋ถ๋ช
ํ ๋๋ถ๋ถ์ ์ํฉ์์ renderToString
๋ ๋
ธ๋์์ ํธ์ถ๋๋ฉฐ DOM ๋ํ ์์๋ฅผ ๊ฒฝ๊ณ ํ๊ฑฐ๋ ํ์
ํ ์ ์์ต๋๋ค.
๋ถํํ๋ NODE_ENV
๊ฐ production
๋ก ์ค์ ๋์ด ์๋์ง ๋ฟ๋ง ์๋๋ผ process.env.NODE_ENV
๊ฐ ์ปดํ์ผ๋์๋์ง๋ ํ์ธํ๊ณ ์ถ์ต๋๋ค. ๋๊ตฌ๋ ์ง ๊ทธ๋ ๊ฒํ๋ ๋ฐฉ๋ฒ์ ์๊ณ ์์ต๋๊น?
@sebmarkbage ์ค๋ ๋์ ๊ฐ์ฌ๋๋ฆฌ๋ฉฐ ์ฌ์ค ์ดํ์ ๋ฐฐํฌํ๋ ๋ฐ ์ด๋ ค์์ด ์์์ ์ธ์ ํฉ๋๋ค. ๋ํ ํ์ฌ์ ๊ฒฝ๊ณ ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ์ผ๋ถ ๊ฐ๋ฐ์๋ ๋ฐฐํฌ๋ ์ฌ์ดํธ์ ์ฝ์ ์ถ๋ ฅ์ ๊ฐ๋ฅํ ํ ์์ฃผ ํ์ธํ์ง ์์ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ข์ ์ฒซ ๋จ๊ณ์ ๋๋ค.
์ฌ์ฉ์์๊ฒ ์๋ฆฌ๊ธฐ ์ํด ์ ์ฌํ ํด๋ฆฌ์คํฑ์ ์ฐพ์ ์ ์๊ณ DOM ๋ํ ์์๋ฅผ ๋ ์ ๊ทน์ ์ผ๋ก ํ์ํ ์ ์๋ ํ ๊ทธ๋์ผ ํฉ๋๋ค.
์ฌ์ฉ์์๊ฒ ์๋ฆฌ๋ ๋ฐ ์ฌ์ฉ๋๋ ๊ฒฝํ์ ๋ฐฉ๋ฒ์ ๊ฐ์ ํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ๋ณด๋ค ์ ๊ทน์ ์ธ DOM ๋ํ ์์๊ฐ ๋์์ด ๋ ๊ฒ์ ๋๋ค. ๊ทธ๊ฒ์ ์ฌ์ดํธ๊ฐ ์ต์ข ์ฌ์ฉ์๋ฅผ ์ํด ๊ณ์ ์๋ํ๋๋ก ๋ณด์ฅํ์ง๋ง ๊ฐ๋ฐ์๊ฐ ์ ํํ ์ ์๋ ๋ฎ์ ์ฑ๋ฅ์ ๊ณผ์ผ์ด ์๋ค๋ ์ ๊ทน์ ์ธ ํํธ๋ฅผ ์ ๊ณตํฉ๋๋ค.
๋์์ ์๋ณธ ๊ฒ์๋ฌผ์์ ์ธ๊ธํ ๋๋ก ๋น๋ ๋๊ตฌ/ENV ์์ค์์ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ ๋ฐฉ๋ฒ์ ์ฐพ๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ฉด DOM ์ฃผ์ ์ด ํ์ํ์ง ์์ต๋๋ค.
DOM์ ๋ฉ์์ง์ ์ฝ์ ํ๋ ๊ฒ์ ์ํํ๊ณ ๋๋ฌด ๊ฐ์ ์ ์ธ ๊ฒ์ฒ๋ผ ๋ณด์ ๋๋ค. ์ด๋ ์ต์ข ์ฌ์ฉ์๊ฐ ์์ฉํ ์ ์๋ IMO๋ก ๋ณด์ด๋ ์์์น ๋ชปํ ํผ๋์ค๋ฌ์ด ๊ฒฝ๊ณ ๋ฅผ ๋ฐ์ ๊ฐ๋ฅ์ฑ์ ์ด์ด์ค๋๋ค.
@thelarkinn ์ ์ด์ ๊ฐ์ ๋ฉ์์ง ๊ฐ์ง๋ฅผ ๋ ์ฝ๊ฒ ํ๊ธฐ ์ํด ํ์ํ ENV ๊ตฌ์ฑ์ ํ์คํํ๋ ค๊ณ ์๋ํ๋ค๊ณ ์ ์ํ์ต๋๋ค.
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ์ด์์ ์ธ ๊ณต๊ฐ์ธ ๊ฒ ๊ฐ์ต๋๋ค. ์ด๋ ๋น๋ ๋ฌธ์ ์ด๋ฉฐ ๊ฐ๋ฅํ ๊ฒฝ์ฐ ๋น๋ ๋๊ตฌ๋ก ํด๊ฒฐํด์ผ ํฉ๋๋ค.
์ผํ: ๊ณผ๊ฑฐ์๋ ์ฝ์์ ๊ฒฝ๊ณ ๊ฐ ๋ณด์ด์ง ์๊ฑฐ๋ ๋ฌด์๋์์ต๋๋ค. ์ฌ๊ธฐ์ ์ ํํ ์์น๋ ์์ง๋ง ์ฝ์ ๊ธฐ๋ฐ ๊ฒฝ๊ณ ๋ก๋ ์ถฉ๋ถํ์ง ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋๋ DOM ๊ธฐ๋ฐ ๊ฒฝ๊ณ ๊ฐ ๋จผ ๊ธธ์ ๊ฐ ๊ฒ์ด๋ผ๋ @addyosmani ์ ๋ง์ ๋์ํฉ๋๋ค.
@surma ๋ ๋์ ๊ฐ์์ฑ์ ์ํด console.warn
๋๋ console.error
๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค ๐
ํ๋ก๋์ ํ๊ฒฝ์์ ์คํ ์ค์ผ ๋๋ง ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฝํ ์ธ ๋ฅผ ์ฝ์ ํ๋ ๊ฒ์ด ์ด๋ค ์๋๋ฆฌ์ค์์๋ ํ์ฉ๋๋์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ค์ ์ฌ์ฉ์์๊ฒ ํธ์๋๊ธฐ ์ ์ ๋ฉ์์ง๊ฐ ํฌ์ฐฉ๋์ด ๋ฉ์์ง๊ฐ ์ ์ฌ์ ์ผ๋ก UX์ ํฐ ํผํด๋ฅผ ์ค ์ ์๋ค๋ ํฐ ๊ฐ์ ์ ํ๊ณ ์์ต๋๋ค.
Btw, ์ฐ๋ฆฌ๋ Fiber์์ ๋ณด๋ค ํฌ๊ด์ ์ธ ์ค๋ฅ ์ฒ๋ฆฌ ์ง์์ ์ถ๊ฐํ ์์ ์ด๋ฏ๋ก ์ค๋ฅ(์ค๋ฅ ๋ฐ์)๊ฐ ์๋ ๊ตฌ์ฑ ์์๋ฅผ ์ฌ์ฉ์ ์ง์ ์ค๋ฅ ๋ณด๊ธฐ๋ก ๊ต์ฒดํ ์ ์์ต๋๋ค. ๊ธฐ๋ณธ ์๋๋ฆฌ์ค์์๋ ์ฐ๋ฆฌ๋ ๋งค์ฐ ๊ณต๊ฒฉ์ ์ผ ๊ฐ๋ฅ์ฑ์ด ๋์ผ๋ฉฐ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด ํธ๋ฆฌ์์ ํด๋น ๊ตฌ์ฑ ์์๋ฅผ ์ ๊ฑฐํ์ฌ ์ด์จ๋ ์ฌ์ฉ์๋ฅผ ์ํ ์ฌ์ฉ์ ์ ์ ์ค๋ฅ UI๋ฅผ ์ํ ๊ฒ์ ๋๋ค.
์ด ๊ฒฝ๊ณ ์ ๋ํด ์ด๋ฌํ ์ค๋ฅ๋ฅผ ํธ๋ฆฌ๊ฑฐํ ์ ์์ต๋๋ค.
์์งํ console.log
console.{error,warn}
๊ฐ ๋ฐ๋์๋ค๊ณ ์๊ฐํ์ง ์์ต๋๋ค. ๋ด๊ฐ ๋งํ๋ฏ์ด, ๊ทธ ์ด์ผ๊ธฐ๋ ์ผํ์
๋๋ค.
๋ํ DOM ๋ํ ์์๋ฅผ ํ์ํ๋ ๊ฒ์ด _the_ ์๋ฃจ์ ์ด๋ผ๊ณ ๋งํ๋ ๊ฒ์ด ์๋๋๋ค. ๊ทธ๋๋ ๊ฐ์ธ์ ์ผ๋ก ๋ง์์ ๋๋ ๋ถ๋ถ์ ๋๋ค. ๊ฐ๋ฐ ๋ชจ๋๋ฅผ ์ ์งํ๋ ๊ฒ์ด ๋ถ์ ์ ์ธ ์ํฅ์ ๋ฏธ์น๋ ๊ฒฝ์ฐ ์ต์ํ ์ฌ์ฉ์๋ _๋ฌด์ธ๊ฐ_๊ฐ ์๋ชป๋์๋ค๋ ๊ฒ์ ์๊ณ ์๋ง๋ "๋์๋ง" ๋ฒํผ์ ๋๋ฅด๊ธฐ ์์ํ ๊ฒ์ ๋๋ค.
๊ฒฐ๋ก : ํ๋ ์์ํฌ๋ ์ด๋ ์์ ์์ ๊ฐ๋ฐ์์ ์ผ๊ตด์ ๋ค์ด๊ฐ์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์์ผ๋ก ์ฌ๋๋ค์ด ๊ฐ๋ฐ ๋ชจ๋๋ก ๋ฐฐํฌํ๋ ๊ฒ์ ๋ฐฉ์งํ๊ธฐ ์ํด ํ๋ ์์ํฌ ์์ฑ์๊ฐ ์ด๋ค ๋จ๊ณ์ ํํ์ ์ทจํ ๊ฒ์ธ์ง ์์๋ณด๊ธฐ ์ํด ์ด์ ๋ํด ๋ธ๋ ์ธ์คํ ๋ฐ์ ํ๊ณ ์ถ์ต๋๋ค.
๊ฐ๋ฐ์ฉ์ด๋ ์ ํ์ฉ์ด๋ ์๊ด์์ด ํ๊ฒฝ์ ์ ๊ณตํ์ง ์์ผ๋ฉด React๊ฐ ์ ํ ์๋ํ์ง ์๋๋ค๋ฉด ์ด๋ป๊ฒ ๋ ๊น์? ๊ทธ๋ฐ ์์ผ๋ก ์์์ ์ธ ์ ํ์ด ์ด๋ฃจ์ด์ง๋๋ค.
DOM์ ์ฃผ์ ๋ ๋ฉ์์ง์ ๋ํด ์ ์ญ ๋๋ ๊ธฐํ๋ฅผ ์ฌ์ฉํ์ฌ ๋นํ์ฑํํ ์ ์์ต๋๋ค. ํฐ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๋น์ ์ด ๊ทธ๊ฒ์ ๋นํ์ฑํํ๋ฉด, ๋น์ ์ ๋น์ ์ดํ๊ณ ์๋ ์ผ์ ์๊ณ ์์์ ์ธ์ ํฉ๋๋ค.
์ฝ์ ๋ฉ์์ง์ ๋ฌธ์ ๋ ๋๋๋ก ์ฌ๋๋ค์ด ๋ง์ ๊ฒ์ ๊ธฐ๋กํ๊ฑฐ๋ ๋ฌด์ํ๋ ๋ค๋ฅธ ๊ฒฝ๊ณ ๊ฐ ์๋ค๋ ๊ฒ์ ๋๋ค. ์คํฌ๋กค์ ์ง๋๋ฉด ์ฒซ ๋ฒ์งธ ์ฝ์ ๋ฉ์์ง๊ฐ ๋ณด์ด์ง ์๊ธฐ ์ฝ์ต๋๋ค...
ํ์ env๋ฅผ ์ฌ์ฉํ๋ฉด ํ์ฐ์ ์ผ๋ก ์์ฉ๊ตฌ ๋ฑ์ด env var๋ฅผ ์ค์ ํ๋ฏ๋ก ์ฌ์ฉ์ ์์ํ ์ ์์ต๋๋ค.
์์งํ console.log๋ฅผ ํตํ console.{error,warn}์ด ๋ณ๊ฒฝ๋์์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์ง ์์ต๋๋ค.
๊ฐ๋ฐ์๊ฐ ์ฝ์์ ํ์ธํ์ง ์๊ฑฐ๋ ์ฝ์์ ๊ฒฝ๊ณ ๊ฐ ๊ณผ๋ถํ๋๋ ๊ฒ์ด ๋ฌธ์ ๋ผ๊ณ ์๊ฐํ์ญ๋๊น? ๊ฐ๋ฐ์ ๊ต์ก์ ๊ดํ ๋ณด๋ค ์ผ๋ฐ์ ์ธ ์ ๊ทผ ๋ฐฉ์์ผ๋ก ์ด ๋ฌธ์ ๋ฅผ (๋ถ๋ถ์ ์ผ๋ก) ํด๊ฒฐํ ์ ์์ต๋๊น?
๋ํ DOM ๋ํ ์์๋ฅผ ํ์ํ๋ ๊ฒ์ด ํด๊ฒฐ์ฑ ์ด๋ผ๊ณ ๋งํ๋ ๊ฒ์ด ์๋๋๋ค. ๊ทธ๋๋ ๊ฐ์ธ์ ์ผ๋ก ๋ง์์ ๋๋ ๋ถ๋ถ์ ๋๋ค. ๊ฐ๋ฐ ๋ชจ๋๋ฅผ ์ ์งํ๋ ๊ฒ์ด ๋ถ์ ์ ์ธ ์ํฅ์ ๋ฏธ์น๋ ๊ฒฝ์ฐ ์ต์ํ ์ฌ์ฉ์๋ ๋ญ๊ฐ ์๋ชป๋์๋ค๋ ๊ฒ์ ์๊ณ "๋์๋ง" ๋ฒํผ ๋ฑ์ ๋๋ฅด๊ธฐ ์์ํ ๊ฒ์ ๋๋ค.
๋๋ ๊ทธ๊ฒ์ ์ดํดํ์ง๋ง, ๋๋ ๊ทธ๊ฒ์ด ํด๊ฒฐ์ฑ ์ ๋ฌผ๋ก ์ด๊ณ ํด๊ฒฐ์ฑ ์ด๋ผ๊ณ ์๊ฐํ์ง ์๋๋ค๊ณ ๋งํ๋ ๊ฒ์ ๋๋ค. ๋น์ ์ด ๊ทธ๊ฒ์ ์ต์ํด์ง๋ ๊ฒ์ ์ข์ง๋ง ๋๋ถ๋ถ์ ์ฌ๋๋ค์ ์ฌ์ฉ์์๊ฒ ์๊ธฐ์น ์์ ์ค๋ฅ๊ฐ ํ์๋๋ ๊ฒ์ ์ํ์ง ์๋๋ค๊ณ ๊ฐ์ ํ๊ณ ์ฃผ์๋ฅผ ๊ธฐ์ธ์ด๋ ๊ฒ์ด ๋ ๋ซ๋ค๊ณ ์๊ฐํฉ๋๋ค.
๊ฒฐ๋ก : ํ๋ ์์ํฌ๋ ์ด๋ ์์ ์์ ๊ฐ๋ฐ์์ ์ผ๊ตด์ ๋ค์ด๊ฐ์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์์ผ๋ก ์ฌ๋๋ค์ด ๊ฐ๋ฐ ๋ชจ๋๋ก ๋ฐฐํฌํ๋ ๊ฒ์ ๋ฐฉ์งํ๊ธฐ ์ํด ํ๋ ์์ํฌ ์์ฑ์๊ฐ ์ด๋ค ๋จ๊ณ์ ํํ์ ์ทจํ ๊ฒ์ธ์ง ์์๋ณด๊ธฐ ์ํด ์ด์ ๋ํด ๋ธ๋ ์ธ์คํ ๋ฐ์ ํ๊ณ ์ถ์ต๋๋ค.
์ ๋ ๐ฏ ๊ฐ๋ฐ์์ ์ผ๊ตด์ ๋ง์ฃผํ๊ณ ์ถ์ง๋ง ์ฌ๋ฐ๋ฅธ ์ฅ์์์ ํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ๋์๊ฒ ๊ทธ๊ฒ์ ์์ฐ ๋จ๊ณ๊ฐ ์๋๋ผ ๋น๋ ๋จ๊ณ์ ๋๋ค.
DOM์ ์ฃผ์ ๋ ๋ฉ์์ง์ ๋ํด ์ ์ญ ๋๋ ๊ธฐํ๋ฅผ ์ฌ์ฉํ์ฌ ๋นํ์ฑํํ ์ ์์ต๋๋ค. ํฐ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๋น์ ์ด ๊ทธ๊ฒ์ ๋นํ์ฑํํ๋ฉด, ๋น์ ์ ๋น์ ์ดํ๊ณ ์๋ ์ผ์ ์๊ณ ์์์ ์ธ์ ํฉ๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํํ๋ ๊ฒ์ ๊ตฌ์ฑํ์ง ์๋ ๊ฒ๋งํผ์ด๋ ๋์ฉ๋๋ค. ๊ธฐ๋ณธ ๋์์ ์ต์ข ์ฌ์ฉ์์๊ฒ ์๊ธฐ์น ์์ ๋์์ ์ด๋ํ ์ ์์ต๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ๋นํ์ฑํ๋์ด์ผ ํ์ง๋ง ๊ฐ๋ฐ์๊ฐ ์ด๊ธฐ ๋ฌธ์ ๋ฅผ ์ธ์ํ๋ฉด ์ด๊ธฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๊ธฐ ๋๋ฌธ์ ์ ์ฒด ๋ชฉ์ ์ ๋ฌดํจํํฉ๋๋ค.
์ฝ์ ๋ฉ์์ง์ ๋ฌธ์ ๋ ๋๋๋ก ์ฌ๋๋ค์ด ๋ง์ ๊ฒ์ ๊ธฐ๋กํ๊ฑฐ๋ ๋ฌด์ํ๋ ๋ค๋ฅธ ๊ฒฝ๊ณ ๊ฐ ์๋ค๋ ๊ฒ์ ๋๋ค. ์คํฌ๋กค์ ์ง๋๋ฉด ์ฒซ ๋ฒ์งธ ์ฝ์ ๋ฉ์์ง๊ฐ ๋ณด์ด์ง ์๊ธฐ ์ฝ์ต๋๋ค...
๋๋ ์์ ํ ์ดํดํฉ๋๋ค. ์ฝ์์ด ํผ์กํด์ง ์ ์๊ณ ๋ฌผ๊ฑด์ ๋์น๊ธฐ ์ฝ์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ด๊ฐ ์ฃผ์ฅํ๋ ์ ํํ ์ด์ ๋๋ฌธ์ ํผ์กํฉ๋๋ค. ๊ฐ๋ฐ์์๊ฒ ํผ๋๋ฐฑ์ด๋ ์ค๋ฅ๋ฅผ ์ ๊ณต ํ๋ ๊ณณ์ ๋๋ค. ์ฃผ์ ๋ ๋ฉ์์ง๊ฐ ์๋ ์ฌ์ฉ์ ๊ฒฝํ์ ๋ฐฉํดํ์ง ์์ต๋๋ค.
์ดํด๊ฐ ๋ฉ๋๋ค. ๊ทธ ์ด์ ๋ฅผ ์ดํดํฉ๋๋ค.
๊ธ์, ์๋ง๋ ์ฝ์ ํฌ๋งท์ ์ฌ์ฉํ์ฌ ๋ฌด์ธ๊ฐ๋ฅผ ํ์ด ๋์ค๊ฒ ๋ง๋๋ ๊ฒ์ ์ ์ด๋ ๋ญ๊ฐ๊ฐ ๋ ๊ฒ์ ๋๋ค.
๋ฌธ์ ๋ ๊ฑฐ์ ์๋ฌด๋ ํ๋ก๋์ ํ๊ฒฝ์์ ์ฝ์์ ๋ณด์ง ์๋๋ค๋ ๊ฒ์ ๋๋ค. ๊ฑฐ๊ธฐ์ ์๋ ์ด๋ค ๊ธ๊ผด์ด๋ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ ์ฌ๋๋ค์ ๊ทธ๊ฒ์ ๋์น์ฑ์ง ๋ชปํ ๊ฒ์ ๋๋ค.
๊ทธ๋ฌ๋ ํ๋ก๋์ ์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ(16 ๋๋ 17)์ผ๋ก ๋ฉ์์ง๋ฅผ ํ์ํ๋๋ก ํ๋ฉด ๋์น๊ธฐ ์ด๋ ค์ธ ๊ฒ์ ๋๋ค. ๋ด ๋ง์, ๊ทธ๊ฒ์ (์ ๊ท ์ฌ์ฉ์๋ฅผ ์ํด) ๊ทธ๊ฒ์ ์ฒ์ ๋ฐฐํฌํ๋ ค๊ณ ํ ๋ ๋ฐ์ํ๋ฉฐ ๊ธฐ์กด ์ฌ์ฉ์๋ ์๋ก์ด ๋ฉ์ด์ ๋ก ์ ๋ฐ์ดํธํ ๋ ๋ฆด๋ฆฌ์ค ์ ๋ณด๋ฅผ ์ฝ์ด์ผ ํฉ๋๋ค. ๊ทธ๋์ ์ ๋ ์ฐ๋ฆฌ๊ฐ ๊ทธ๊ฒ์ ๋ํด ๋งค์ฐ ๋ช ๋ฐฑํ๊ณ ๋ฉ์์ง๋ฅผ ๋์น ์ ์๋ ํ ๊ฐ๋ฅํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋ฌธ์ ๋ ๊ฑฐ์ ์๋ฌด๋ ํ๋ก๋์ ํ๊ฒฝ์์ ์ฝ์์ ๋ณด์ง ์๋๋ค๋ ๊ฒ์ ๋๋ค. ๊ฑฐ๊ธฐ์ ์๋ ์ด๋ค ๊ธ๊ผด์ด๋ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ ์ฌ๋๋ค์ ๊ทธ๊ฒ์ ๋์น์ฑ์ง ๋ชปํ ๊ฒ์ ๋๋ค.
์ด์ ๋ํ Chrome ํ์ ๊ฒฝํ์ ๋ํด์๋ง ์ธ๊ธํ ์ ์์ง๋ง ๋์ํฉ๋๋ค. ๋๋ถ๋ถ์ ์ฌ๋๋ค์ ๋ฐ๋ณต ์์ ๊ณผ์ ์์ ์ฝ์ ๋ฉ์์ง๋ฅผ ์์์ฐจ๋ฆฌ๊ฒ ์ง๋ง ํ๋ก๋์ ์ฌ์ดํธ์์ ๊ฒฝ๊ณ ๋ฅผ ํ์ธํ๊ณ ๊ทธ์ ๋ํ ์กฐ์น๋ฅผ ์ทจํ๋ ์ฌ๋์ ํจ์ฌ ์ ์ต๋๋ค.
๊ทธ๋ฌ๋ ํ๋ก๋์ ์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ(16 ๋๋ 17)์ผ๋ก ๋ฉ์์ง๋ฅผ ํ์ํ๋๋ก ํ๋ฉด ๋์น๊ธฐ ์ด๋ ค์ธ ๊ฒ์ ๋๋ค. ๋ด ๋ง์, ๊ทธ๊ฒ์ (์ ๊ท ์ฌ์ฉ์๋ฅผ ์ํด) ๊ทธ๊ฒ์ ์ฒ์ ๋ฐฐํฌํ๋ ค๊ณ ํ ๋ ๋ฐ์ํ๋ฉฐ ๊ธฐ์กด ์ฌ์ฉ์๋ ์๋ก์ด ๋ฉ์ด์ ๋ก ์ ๋ฐ์ดํธํ ๋ ๋ฆด๋ฆฌ์ค ์ ๋ณด๋ฅผ ์ฝ์ด์ผ ํฉ๋๋ค. ๊ทธ๋์ ์ ๋ ์ฐ๋ฆฌ๊ฐ ๊ทธ๊ฒ์ ๋ํด ๋งค์ฐ ๋ช ๋ฐฑํ๊ณ ๋ฉ์์ง๋ฅผ ๋์น ์ ์๋ ํ ๊ฐ๋ฅํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
@gaearon๊ณผ ๊ฐ์ ๋ณํ๋ฅผ ์ด์ด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ํฅํ ๋ฆด๋ฆฌ์ค์์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฉ์์ง๋ฅผ ์๋ํ๋ ๋ฐ ๋์ํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํฉ๋๊น? ๐
์ฝ์ ๊ฒฝ๊ณ ๊ฐ ์๋ฃจ์ ์ด ์๋๋ฉฐ ํ์ด์ง์ ํ์๋๋ ๊ฒฝ๊ณ ๊ฐ ํจ์ฌ ๋ซ๋ค๋ ๋ฐ ๋์ํฉ๋๋ค.
ํ์ด์ง ํ์ ๊ฒฝ๊ณ ๋ ๋ค์์ ์ํํ ์ ์์ต๋๋ค.
๋ฉ์์ง๋ฅผ ๋นํ์ฑํํ๋ ๊ฒ์ ํ์ด์ง์ ๋ฌด์ธ๊ฐ๋ฅผ ๋ฐฉํด/๊ฐ๋ฆด ์ ์์ผ๋ฏ๋ก ์ค์ํฉ๋๋ค. ์ด ์ค์ ์ localstorage์ ์ ์ฅ๋๋ฏ๋ก ์๋ณธ์ด ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ๋ผ์ด๋ธ ์๋ฒ์ ๊ฒฝ๊ณ ๊ฐ ๊ณ์ ํ์๋ฉ๋๋ค.
์, ์ค์ ์ฌ์ฉ์๊ฐ ๋ผ์ด๋ธ ์ฌ์ดํธ์์ ์ด ๋ฉ์์ง๋ฅผ ๋ณด๋ ๊ฒ์ ๋งค์ฐ ๋์ฐํ์ง๋ง ์ผ๋ถ๋ ๊ฐ๋ฐ์๊ฐ ์์ ํ๋๋ก ๊ถ์ฅ๋๋ ๋ฌธ์ ์ ํ์ธ ๊ฒ์ฒ๋ผ ๋๊ปด์ง์ง๋ง ์ผ๋ถ๋ ๊ฐ๋ฐ ๋ชจ๋์ ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ์๊ณ ์ฌ๋ ๊ฒ์ ๋ง์กฑํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
๊ทธ ๊ฒฝ๊ณ (DOM์ ์ฝ์ )๋ฅผ ์ฒ์ ๋ณด์์ ๋ ํ๋ก๋์ ๋จ๊ณ์ ์์๋ค๋ฉด ์๋นํ ํ๊ฐ ๋ฌ์ ๊ฒ์ ๋๋ค. ๊ฒฝ๊ณ ๋ ๋ฏธ๋ฆฌ ๋ฐ์ํด์ผ ํฉ๋๋ค.
@rtorr ๋ด ์ ์์ ์ฌ์ดํธ๊ฐ ๊ฐ๋ฐ ๋ชจ๋์ ์์ ๋๋ง๋ค ๋ฐ์ํ๋ฏ๋ก ๋ด๊ฐ ๋๋ฝ๋ ๊ฒ์ด ์๋ ํ ๋ฏธ๋ฆฌ ๋ณด์์ผ ํ๋ค๋ ๊ฒ์ ๋๋ค.
@jakearchibald ํผ๋์ ๋๋ ค ์ฃ์กํฉ๋๋ค. ์ ๋ต๋ณ์ ๊ทํ๋ฅผ ๋์์ผ๋ก ํ ๊ฒ์ด ์๋๋๋ค. ์ค๋ ๋์ 'insert into the dom' ์๋ฃจ์ ์ ์ฌ์ฉํ๋ ค๋ ๊ฒฝ์ฐ ๋งค์ฐ ์กฐ์ฌํด์ผ ํ๊ณ ์ฌ์ฉ์๊ฐ ๋ฌด์ธ๊ฐ๋ฅผ ํธ์ํ๊ธฐ ์ ์ ์๋๋ก ํด์ผ ํ๋ค๋ ์ ์ ์ง์ ํ๊ณ ์ถ์ต๋๋ค. .
๋๋ ๋จ์ง ์ด๋ค ๊ฐ๋ฐ์๊ฐ ์ค์ ์ด๋ ๋ฌด์์ธ๊ฐ๋ฅผ ์์ด๋ฒ๋ฆฌ๊ณ ๊ฒฝ์์ง์ด ๊ฒ์ ์ง๋ ค ์๋ ๊ฒ์ ๋ณด์์ต๋๋ค. ํ๋ก๋์ ์์ ๊ฐ๋ฐ ๋ชจ๋๋ฅผ ์ฌ์ฉํ๋ ๊ฒฐ๊ณผ์ ๋ํด ๊ทธ ๊ฐ๋ฅ์ฑ์ด ๊ฐ์น๊ฐ ์์ต๋๊น?
์ง์์ ์ผ๋ก ๋นํ์ฑํํด์ผ ํ๋ค๋ DOM ๊ธฐ๋ฐ ๊ฒฝ๊ณ ๋ ๊ด์ฐฎ์ง ์์ต๋๋ค. ์์ํ ๋นํ์ฑํํ ์ ์์ด์ผ ํ๋ฉฐ localhost์ ๋ํด ์ ํ ํ์๋์ง ์์์ผ ํฉ๋๋ค.
devtools๋ฅผ ํ์ฑํํ๊ธฐ ์ํด ํ์ฑํํด์ผ ํ๋ ๋ธ๋ผ์ฐ์ ์ ์ผ์ข ์ ํ๋๊ทธ๊ฐ ์๋ ๊ฒ์ด ๊ฐ๋ฅํ๋ค๋ฉด ์ ๋ฅผ ๋๋ฆฐ ๊ฒ์ ๋๋ค("๋น์ ์ ๊ฐ๋ฐ์์ ๋๊น? [์/์๋์]"์ ํจ๊ป ํฐ ์ค๋ฒ๋ ์ด๊ฐ ์์ ์ ์์ต๋๋ค) ) ํ์ด์ง์์ ๊ฐ์งํ๊ณ ๊ฐ๋ฐ์์๊ฒ๋ง ๊ฒฝ๊ณ ๋ฅผ ํ์ํ ์ ์์ต๋๋ค. ์ฌ๋ฐ๋ฅด๊ฒ ์์ฑํ๋ฉด ์์ฒด XXS ๊ณต๊ฒฉ์๋ ๋์์ด ๋ ์ ์์ต๋๋ค.
์ง์์ ์ผ๋ก ๋นํ์ฑํํด์ผ ํ๋ค๋ DOM ๊ธฐ๋ฐ ๊ฒฝ๊ณ ๋ ๊ด์ฐฎ์ง ์์ต๋๋ค. ์์ํ ๋นํ์ฑํํ ์ ์์ด์ผ ํฉ๋๋ค.
๊ฐ๋ฐ ๋ชจ๋๋ฅผ ์ผ ์ํ๋ก ์ฌ์ดํธ๋ฅผ ์์ํ๋ ๊ฒ๋ ์ข์ง ์์ต๋๋ค. ๋ฉ์์ง๋ฅผ ํ๋ฃจ์ ํ ๋ฒ๋ง ๋ซ์ผ๋ฉด ๋ ๊น์? ๊ทธ๋ฌ๋ ๊ธฐ๊ฐ์ด ๊ธธ์๋ก ๋ผ์ด๋ธ๋ก ๋๋ ๊ฐ๋ฅ์ฑ์ด ๋์์ง๋๋ค. ์์ํ ๋นํ์ฑํํ ์ ์๋ค๋ฉด, ์ฐ๋ฆฌ๋ ์ฐ๋ฆฌ๊ฐ ์์ํ ๊ณณ์ผ๋ก ๋ฐ๋ก ๋์๊ฐ ์ ์์ต๋๋ค.
๋๋ ๋ํ ํ๋ก๋์ ์์ ์๋ํ์ง ์์ dom ๋ ธ๋๊ฐ ๊ด์ฐฎ๋ค๊ณ ์๊ฐํ์ง ์์ต๋๋ค.
์ด๋ ์ชฝ์ด๋ , ์ฐ๋ฆฌ๋ ํญ์ ๊ทน๋จ์ ์ธ ๊ฒฝ์ฐ๊ฐ ์์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์ด ๋ฌธ์ ๊ฐ ํญ์ ๋ฐ์ํ๋ค๋ฉด ๊ฐ๋ฐ ๋ชจ๋์ ์ ๋ฌ์ด ์๋ชป๋ ๊ฒ์ผ ์ ์์ต๋๋ค. ์๋ฒฝํ ์ธ์์์ ์ด์์ ์ด์ง๋ ์์ง๋ง, ๋๊ตฐ๊ฐ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ธฐ๊บผ์ด ์์ ํ ์ ์๋ prod ๋ชจ๋๊ฐ ์ค์ํ๋ค๊ณ ์๊ฐํ๋ค๋ฉด ์๋ง๋ ๊ธฐ๋ณธ ๋ชจ๋๊ฐ ๋์ด์ผ ํ๊ณ ๊ฐ๋ฐ ๋ชจ๋๋ ์ตํธ์ธ๋์ด์ผ ํฉ๋๋ค.
@rtorr
๋๋ ๋ํ ํ๋ก๋์ ์์ ์๋ํ์ง ์์ dom ๋ ธ๋๊ฐ ๊ด์ฐฎ๋ค๊ณ ์๊ฐํ์ง ์์ต๋๋ค.
์์? (๋น์ ์ด ํ๋ ธ๋ค๊ณ ๋งํ๋ ๊ฒ์ด ์๋๋ผ ๋น์ ์ ์ด์ ๋ฅผ ๋ฃ๊ณ ์ถ์ต๋๋ค)
prod ๋๋ฉ์ธ์ ์ ์ํ๊ธฐ ์ํ ์ค์ ์ ์ถ๊ฐํ ์ ์์ต๋๋ค. prod ๋๋ฉ์ธ์ด ์ค์ ๋์ด ์์ง ์์ผ๋ฉด ํญ์ DEV ๋ชจ๋์ ๋ํ ๊ฒฝ๊ณ (๋๋ฉ์ธ URL ์ค์ ์์ฒญ ํฌํจ)๋ฅผ ๋ฐ๊ณ , ์ค์ ๋์ด ์์ผ๋ฉด URL์ด prod ๋๋ฉ์ธ๊ณผ ์ผ์นํ ๋๋ง ๊ฒฝ๊ณ ๋ฅผ ๋ฐ์ต๋๋ค. ๊ฐ๋ฐ์์๊ฒ ์๋ฆฌ๊ณ ์ถ์ ๋ชจ๋ ์๋น์ค๋ฅผ ๋ฐ์ธ๋ฉํ ์๋ ์์ต๋๋ค.
์ฌ๊ธฐ์์ ๊ฑด์ค์ ์ธ ๋ ผ์๊ฐ ์ด๋ฃจ์ด์ง๊ณ ์์ด ๊ธฐ์ฉ๋๋ค. ๋ฌธ์ ํด๊ฒฐ์ ๋ณผ ์ ์๋ ๋ ๊ฐ์ง ์๋ฃจ์ ์ด ์์ต๋๋ค. Webpack์ React๊ฐ DEV๋ฅผ PROD๋ก ๋ฐฐ์กํ๋ ์ฌ๋๋ค์ ๋ ์ฝ๊ฒ ํผํ๊ธฐ ์ํด ์ฌ์ฉํ ์ ์๋ NODE_ENV๋ฅผ ๊ฐ์ ๋ก ์ง์ ํ ์ ์์ง๋ง ์ด๋ Webpack์ ์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ์ด ๋ ๊ฒ์ ๋๋ค. ๋๋ ์ง๊ธ Webpack 3์์ ์ด์ ๊ฐ์ ๊ฒ์ด ์ผ๋ง๋ ์คํ ๊ฐ๋ฅํ์ง์ ๋ํด Sean๊ณผ ์ด์ผ๊ธฐํ๊ณ ์์ต๋๋ค. React + Webpack ์คํ์ ์ด๋ณด์์ ์ฑ๋ฅ ์นํ์ ์ผ๋ก ์ ์งํ๋ ๊ฒ์ ๋ ์ง์ ๋ชจ๋ ๊ด์ฌ์ ๊ฐ๊ณ ์๋ค๋ ๊ฒ์ ์๊ณ ์์ต๋๋ค.
๋ ๋ฒ์งธ(DOM ์ฃผ์ ์์ด๋์ด)๋ React๊ฐ ํ ์ ์๋ ์ผ์ด๋ฉฐ Jake๊ฐ ์ธ๊ธํ๋ฏ์ด ๋ฉ์์ง๊ฐ ํ๋ฃจ์ ํ ๋ฒ ํ์๋๊ฑฐ๋ ๋ฌด์๋๋๋ก ํ์ฉํ์ฌ UX์ ๊ท ํ์ ์ ์งํฉ๋๋ค. ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ํ ์ค๋ง ๋ณ๊ฒฝํ๋ฉด ๋ค์ ๋ฐฐํฌํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค. ๊ฒฝ์์ง์ด ๋๋ผ์ง ์๊ธฐ๋ฅผ ๋ฐ๋ผ๋ ๋ง์์ ์ ์ ์ผ๋ก ๊ณต๊ฐํฉ๋๋ค.
ํจ์ฌ ๋ ๋น ๋ฅธ ๊ฒฝํ์ ์ ๊ณตํ๋ ๋ ๋ง์ React ์ฌ์ดํธ๋ฅผ ์ป์ผ๋ ค๋ฉด FB๊ฐ ์ ๊ณตํด์ผ ํ ์ ํ์ ์์ฐํ๊ธฐ ์ํด ์์ ํ์ต๋๋ค. ๋๊ตฌ๋ ์ง ๋ ๋์ ์์ด๋์ด๊ฐ ์์ผ๋ฉด ์ ์ํ์ญ์์ค.
@jakearchibald
์์? (๋น์ ์ด ํ๋ ธ๋ค๊ณ ๋งํ๋ ๊ฒ์ด ์๋๋ผ ๋น์ ์ ์ด์ ๋ฅผ ๋ฃ๊ณ ์ถ์ต๋๋ค)
์์ ๋ด ์๊ฒฌ์ผ๋ก ๋์๊ฐ์ ๊ฐ๋ฐ์์๊ฒ ๋ฏธ๋ฆฌ ์๋ฆด ์ ์๋ ํ(์ด๋ ์ค์ ํด๊ฒฐํด์ผ ํ ๋ฌธ์ ์ธ ๊ฒ ๊ฐ์ต๋๋ค), ํ๋ก๋์ ํ์ด์ง์์ ๊ฐ๋ฐ์์๊ฒ ๊ฒฝ๊ณ ๋ฅผ ํ์ํ์ฌ ๋๊ตฐ๊ฐ์ ์ ํ์ ํ๊ฐ ์ ํํ๋ ๊ฒ์ ์ผ์ข ์ ๊ทน๋จ์ ์ธ ์ผ์ ๋๋ค. ๋ง์ ๊ฒฝ์ฐ์ ์ด๊ฒ์ ์ ์ฌ์ ์ผ๋ก ๊ฐ๋ฐ ๋ชจ๋์ ์ฑ๋ฅ๋ณด๋ค ์ ํ์ ๋ ์์์ํฌ ์ ์์ต๋๋ค.
์ฐ๋ฆฌ๊ฐ ๋ฌด์์ ํ๋ ์ง ๊ฐ์ ๊ธฐ๋ณธ๊ฐ์ด ๋ฌด์์ด๋ ํ๋ก๋์ ์ผ๋ก ์ถํํ ๊ฒ์ ๋๋ค. ํ๋ก๋์ ๊ธฐ๋ณธ๊ฐ์ ์ค์ ํ์ง ์๋ ์ด์ ๋ ๋ฌด์์ ๋๊น? ๊ทธ๋ ๊ฒ ํฐ ์ํฅ์ ๋ฏธ์น์ง ์๋ ์์ค๊น์ง ๊ฐ๋ฐ ๋ชจ๋๋ฅผ ๊ฐ์ ํ์ง ์๋ ์ด์ ๋ ๋ฌด์์ ๋๊น?
@jakearchibald ์, ์์ชฝ์ ๋ฌธ์ ๊ฐ ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ๋๋ ์ด ์ค๋ ๋์ ์๋ ์ฌ๋๋ค์ด ๋น์ ์ด ์ ์ํ๋ ๊ฒ์ด๋๋ผ๋ ์ข์ ๊ฒ์ ์๊ฐํด ๋ผ ๊ฒ์ด๋ผ๊ณ ๋ฏฟ์ต๋๋ค. ์ฐธ๊ณ ๋ก ๋ชจ๋ ํ๋ฅญํฉ๋๋ค. ๊ทน๋จ์ ์ธ ๊ฒ์ด ๋ต์ผ ์๋ ์์ต๋๋ค.
์ฌ์ฉ์๊ฐ React dev ๋๊ตฌ๋ฅผ ์คํ ์ค์ด๋ฉด ์ผ๋ฐ ์ฌ์ฉ์๊ฐ ๊ฒฝํํ์ง ๋ชปํ๋๋ก DOM ๋ ธ๋ ๊ฒฝ๊ณ ๋ฅผ ์ฝ์ ํ ์ ์์ต๋๊น?
@jakearchibald
๊ฐ๋ฐ ๋ชจ๋๋ฅผ ์ผ ์ํ๋ก ์ฌ์ดํธ๋ฅผ ์์ํ๋ ๊ฒ๋ ์ข์ง ์์ต๋๋ค. ๋ฉ์์ง๋ฅผ ํ๋ฃจ์ ํ ๋ฒ๋ง ๋ซ์ผ๋ฉด ๋ ๊น์? ๊ทธ๋ฌ๋ ๊ธฐ๊ฐ์ด ๊ธธ์๋ก ๋ผ์ด๋ธ๋ก ๋๋ ๊ฐ๋ฅ์ฑ์ด ๋์์ง๋๋ค. ์์ํ ๋นํ์ฑํํ ์ ์๋ค๋ฉด, ์ฐ๋ฆฌ๋ ์ฐ๋ฆฌ๊ฐ ์์ํ ๊ณณ์ผ๋ก ๋ฐ๋ก ๋์๊ฐ ์ ์์ต๋๋ค.
์ฌ์ดํธ๊ฐ ์์๋์์ ๋ ๋๊ตฐ๊ฐ๊ฐ "์ค๋น"๋ ๊ฒ์ผ๋ก ๊ฒฐ์ ์ ๋ด๋ ธ์ผ๋ฏ๋ก ์ํ๋ ์ข์ง ์์ง๋ง ์ฌ์์ ์๋๋๋ค. ๊ทธ๋ฌ๋ ์์ญ๋ง ๋ช ์ ๊ฐ๋ฐ์๊ฐ ์ฌ์ดํธ ํ๊ดด(DOM ๊ฒฝ๊ณ ๋ ์ฌ์ดํธ์ ๋๋จธ์ง ๋ถ๋ถ๊ณผ ์ํธ ์์ฉํ๋ ๋ฐฉ์์ ๋ชจ๋ฅด๊ธฐ ๋๋ฌธ์ ์ฒ๋ฆฌํด์ผ ํจ ๊ฒฝ๊ณ ๊ฐ ํ์๋ ์ํ์์ ์ฌ์ดํธ๋ฅผ ์ฌ์ฉํ ์ ์๋ ๊ฒฝ์ฐ) ๊ฒฝ๊ณ 5๊ฐ ๋๋ ํ๋ฃจ์ ํ ๋ฒ๋ง ๊ฒฝ๊ณ ํ๋ ๊ฒ์ ์ฌ์์ ๋๋ค. ๋๋ถ๋ถ์ ๊ฐ๋ฐ์๋ ๋น๋ ์ฒด์ธ(์ฌ์ฉ์ ์ง์ , create-react-app ๋๋ ๊ธฐํ)์ ์ฌ๋ฐ๋ฅด๊ฒ ์ค์ ํ๊ณ ํด๋น ๊ฒฝ๊ณ ๋ฅผ ์ ํ ์ฌ์ฉํ ์ ์์ผ๋ฏ๋ก ์ ๊ฑฐํ ์ ์์ด์ผ ํฉ๋๋ค.
@dan-gamble ์ ๋ ๊ฐ๋ฐ์๊ฐ React Dev Tools๋ฅผ ์ฌ์ฉํ์ง ์๋ ๊ฒ์ด ์ด ๊ฒฝ๊ณ ์ ๊ฐ์ฅ ์๊ธํ ๋์์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
@Pajn ์ ์ฌ์ ์ผ๋ก Chrome ํ์ฅ ํ๋ก๊ทธ๋จ์ ๋ค์ด๋ก๋ํ๋ค๊ณ ํด์ ์๋์ผ๋ก prod / dev ์ค์์น๋ฅผ ์ธ์ํ๊ฒ ํ๋ค๊ณ ์๊ฐํ์ง ์์ต๋๋ค.
@dan-gamble ์๋์, ๋ฌผ๋ก ์๋๋๋ค. ๊ทธ๋ฌ๋ ์ฑ ์์ด ์ ์ฒด ์ฑ์ ๊ฐ๋ฐํ๋ ์ฌ๋๋ค์ด ์๋๋ฐ, ์ด๋ ๊ฐ๋ฐ ๋๊ตฌ๋ฅผ ๋ง์ด ์ฌ์ฉํ์ง ์์ผ๋ฏ๋ก ์ถ์๋ ์ฝ๋์ ๋ํ ํ์ฌ ๊ฒฝ๊ณ ๋ฅผ ๋ณผ ๊ฐ๋ฅ์ฑ์ด ์ ์ต๋๋ค.
๋๋ ์ผ๋ฐ์ ์ผ๋ก ์์ ์ด ์ด๋ฏธ ์ ๊ธฐ๋ ๊ฒ์ฒ๋ผ ๋๊ปด์ง ๋ ๊ธด ํ ๋ก ์ ์ถ๊ฐํ์ง ์์ง๋ง ์ด ์ ์ ๋์ํ๊ณ ๊ฐ์กฐํ๊ณ ์ถ์ต๋๋ค. DOM์ ๋ง์ง๊ณ ๋ด๊ฐ dev ๋ฒ์ ์ ์ฌ์ฉํ๊ณ ์๋ค๊ณ ๊ฒฝ๊ณ ํ๋ React ํฐ ์ค์๊ฐ ๋ ๊ฒ์ ๋๋ค. ๋ด๊ฐ ์๋ ํ ๋ค๋ฅธ ํ๋ ์์ํฌ์๋ ์ด์ ๋ํ ์ ๋ก๊ฐ ์์ต๋๋ค.
๋ชจ๋ ํํ ๋ฆฌ์ผ, ๋ชจ๋ ํ๋ ์ด๊ทธ๋ผ์ด๋, dev ๋ชจ๋๋ฅผ ์ฌ์ฉํ์ฌ React๋ฅผ ๊ฐ๋ฅด์น๋ ๋ชจ๋ ์์ ์ฌ์ด๋ ํ๋ก์ ํธ๋ฅผ ์์ํด ๋ณด์ธ์. React์์ ์ฌ๋ฏธ์๋ ๊ฒ์ ํ์ํ๊ฑฐ๋ ํ ์คํธ ์ผ์ด์ค๋ฅผ ๋ถ๋ฆฌํ๋ ค๊ณ ํจ๊ป ํ๋ ๋ชจ๋ ์์ ํ ์คํธ ์ฌ์ดํธ. ์๋์ผ๋ก ๋นํ์ฑํํด์ผ ํ๋ ์ด๋ฌํ ์ฌ์ดํธ์ ๋ชจ๋ ๋จ์ผ ๊ฒฝ๊ณ ๋ฅผ ํตํด ๋ฐ์ํ๋ฉด ๋๋ ์์ฒญ๋๊ฒ ํ๋ฅผ ๋ผ ๊ฒ์ ๋๋ค. ๊ทธ๊ฒ์ ์์์ ์ธ ๋ถ๋ชจ์ฒ๋ผ ๋๊ปด์ง๊ณ ์๋ก์ด ๊ฒ์ ์๋ํ ๋๋ง๋ค ์๋ชฉ์ ๋๋ฆฌ๊ธฐ ๋๋ฌธ์ React๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์ ๊ทน์ ์ผ๋ก ๊ถ์ฅํ์ง ์์ต๋๋ค .
์ฌ์ง์ด 2์๊ฐ์ ํ๋ฒ์ฉ ? ์๋์ ๊ด์ฐฎ์ต๋๋ค. ์ด์ ๊ฐ์ ๋์์๋ ์์๋ฆฌ๋ ํ์คํ ์ฌ์ฉ์๊ฐ React์์ ๊ฐ๋ฐํ๋ ๊ฒ์ ๋ฐฉํดํ ๊ฒ์ด๊ณ ์์งํ ๋งํด์ ์ฌ๋๋ค์ด ๋ค๋ฅธ ํ๋ ์์ํฌ๋ฅผ ์ฑํํ๋๋ก ๋ฐ์ด๋ผ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์ด๊ฒ์ด Chrome ๊ฐ๋ฐ์๊ฐ ์ํ๋ ๊ฒ์ด ์๋๊น์?
์, ์ด๊ฒ์ด ์ด๋ป๊ฒ๋ ์์ฐ์ ๋ค์ด๊ฐ ๊ฒ์ด๋ผ๋ ์ฌ์ค์ ๋งํ ๊ฒ๋ ์๊ณ , ํน์ ํ์ด React๋ฅผ ์ฑํํ๋๋ก ์ค๋ํ๋ ๊ฒ์ ์ด๋ฏธ ์ถฉ๋ถํ ์ด๋ ต์ต๋๋ค.
๋ด๊ฐ React์ ๋ํด ๊ฐ์ฅ ์ข์ํ๋ ๊ฒ์ ReactDOM.render(...)
๋ฅผ ํธ์ถํ ๋๊น์ง ์๋ฌด ๊ฒ๋ ํ์ง ์๊ณ , ๊ทธ๋ ๊ฒ ํ ๋ ์ฌ์ฉ์๊ฐ ์ง์ํ DOM์๋ง ๋ฌผ๊ฑด์ ๋ฃ๋๋ค๋ ๊ฒ์
๋๋ค. ์ด๊ฒ์ด ๋ฐ๋ก ์ด๊ฒ์ด ํ๋ฅญํ๊ณ ๊ฒฉ๋ฆฌ๋ ๊ธฐ๋ฅ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ ์ด์ ์
๋๋ค.
์ฌ๋๋ค์ด ์ถ์๋์ง ์์ ๋ฒ๋ค์ ๋ฐฐ์กํ๋์ง ์ฌ๋ถ๋ ๊ฐ์งํด์ผ ํฉ๋๊น? ์บ์ฑํด์ผ ํ ๋ ์บ์ฑํ์ง ์์ผ๋ฉด ์ด๋ป๊ฒ ๋ฉ๋๊น? nginx๋ฅผ ์ต์ ์ผ๋ก ๊ตฌ์ฑํ์ง ์์ ๊ฒฝ์ฐ๋ ์ด๋ป๊ฒ ๋ฉ๋๊น? ์๋๋ฉด shouldComponentUpdate
๋ฅผ ์ฌ์ฉํด์ผ ํ ๋ ์ฌ์ฉํ์ง ์์ต๋๊น? ์๋๋ฉด ํ์ํ์ง ์์๋ฐ๋ ๋ชจ๋ ๊ฒ์ ๋ถํ์ํ๊ฒ ๋ ๋๋งํ๊ณ ์์ต๋๊น?
์ฑ๋ฅ์ด ์ข์ง ์์ ๋ฐ์๋ ๋ช ๊ฐ์ง ์ด์ ๊ฐ ์์ผ๋ฉฐ React์ ๊ฐ๋ฐ ๋ชจ๋์์๋ง ์ด๋ฅผ ๋น๋ํ๋ ๊ฒ์ ์๋ชป๋ ๊ฒ์ ๋๋ค. ์ฌ์ดํธ๋ฅผ ๋ฐฐํฌํ ๋ ์ต์ ํ๋ ์ฌ์ดํธ๋ฅผ ๋ฐฐํฌํ๋ ๋ฐฉ๋ฒ์ ์ดํดํ๊ณ ์์ด์ผ ํฉ๋๋ค. ์ฐ๋ฆฌ๊ฐ ํ ์ ์๋ ์ผ์ด ์๋ค๋ ๋ง์ ์๋์ง๋ง ์ด ๋ฌธ์ ์ ํต์ฌ ์ด์ ๋ ๋ฒค์น๋งํฌ ์์ฑ์๊ฐ ์ค์ฌ๋ฅผ ํ์ง ์๊ณ ์์ผ๋ฉฐ ์ฐ๋ฆฌ๊ฐ ๊ทธ ๋น์ฉ์ ์ง๋ถํ ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ ๋ถ๋ฌ๋ผ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ์ฐพ์์ผ ํฉ๋๋ค.
๋๋ ์ฌ๋ฐ๋ฅธ ํด๊ฒฐ์ฑ ์ด๋ผ๊ณ ์๊ฐํ๋ ๊ฒ์ ๋ํ ํ์ ์กฐ์น๋ฅผ ์ทจํ๋ ค๊ณ ํ์ต๋๋ค. ๋๊ตฌ์ ์ด๋ฌํ ์ข ๋ฅ์ ์ ํ์ ๋๋ ๊ฒ์ ๋๋ค. ์นํฉ์ด๋ ํ๋ก๋์ ์ ์ํด ์ฌ์ดํธ๋ฅผ ๊ตฌ์ถํ๋ ๋ฐ ์ฌ์ฉํ๋ ๋๊ตฌ๊ฐ ์ด๋ฌํ ๊ฒ์ฌ๋ฅผ ๊ฐ์ ํด์ผ ํ๋ ์์น์ธ์ง ํ์ธํ๊ณ ๋น๋ ํ๋ก์ธ์ค์ ์ ์ฉํ๋ ค๋ ๋ชจ๋ ์ข ๋ฅ์ ์ ํ ์ฌํญ์ด ์์ต๋๋ค.
NODE_ENV ์ค์ ์ ๊ฐ์ ํ๋ webpack๊ณผ ๊ด๋ จํ์ฌ(์ด๋ฏธ ํด๋น ์ ์ฅ์์ ๋ฌธ์ ๊ฐ ์์ ์ ์์) env ์ค์ ์ ์์กดํ์ง ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ ์ด๋ ค์์ง์ง ์์ต๋๊น?
์๋๋ฉด NODE_ENV ์ฌ์ฉ์ ๊ฐ์งํ๊ณ ์ฝ๋๊ฐ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์๋ง ๊ฐ์ ๋ก ์ฌ์ฉํ๋ค๋ ์์ด๋์ด์ ๋๊น?
"2์๊ฐ"์ ๋๋ฌด ์ฐ์ฐํ์ง ๋ง์๋ค. ๊ทธ๊ฒ์ ์๋ํ๋ ํ ๊ธฐ๊ฐ์ด ๋ ์ ์์ต๋๋ค.
๋ํ ๋ก์ปฌ ์คํ ๋ฆฌ์ง ์ด๋ฒคํธ๋ ์ค๋ฆฌ์ง๋น ํ ๋ฒ๋ง ํด์ ํ๋ฉด ๋จ์ ์๋ฏธํฉ๋๋ค. ํ ํ์ด์ง์ ์ฌ๋ฌ ๋ฐ๋ชจ๊ฐ ์๋ ๊ฒฝ์ฐ ํ๋๋ฅผ ๋ซ์ผ๋ฉด ๋ค๋ฅธ ๊ฒ๋ ๋ซํ๋๋ค.
๊ฒฝ๊ณ ๊ฐ ์ค์๊ฐ์ผ๋ก ์คํ๋๋ ๊ฒฝ์ฐ ์ฌ์ฉ์์๊ฒ ๋์์ด ๋๋ ๋น ๋ฅธ ์์ ์ด ํ์ํ ์ ๋๋ก ์๋๋ฝ์ต๋๋ค. React๊ฐ ๊ณต๊ฐ์ ์ผ๋ก ์ด๋ป๊ฒ ๋ณด์ด๋์ง ๊ฑฑ์ ๋๋ค๋ฉด ์ด์ ๊ฐ์ ๋ถํ์ํ ์๋ ์ ํ๋ฅผ ํผํ๊ณ ์ถ์ต๋๋ค.
๋ฌผ๋ก ์ด๊ฒ์ ์๋ชป๋ ์บ์ฑ ํค๋ ๋ฑ์ ๊ฐ์งํ์ง ๋ชปํฉ๋๋ค. ์ด๊ฒ์ "๊ฐ๋ฐ ๋ชจ๋"๋ง ๊ฐ์งํ๋ ๊ฒ์ ๋๋ค. ๋ํ "๋ฏธ๋๋ฌ์ด ๊ฒฝ์ฌ" ์ธ์๋ ๋์์ด ๋์ง ์์ต๋๋ค.
๊ฐ๋ฐ์๊ฐ ๋ค๋ฅธ ๋น๋ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ํ๋ก๋์ ๋ชจ๋๋ก ์ ํํ์ง ๋ชปํ๋ ๊ฒฝ์ฐ ๋์ผํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฏ๋ก ๋ฌธ์ ๋ฅผ ๋น๋ ๋๊ตฌ๋ก ์ฎ๊ธฐ๋ ๊ฒ์ ์ ์ฉํ์ง ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ฐ๋ฐ ๋ชจ๋ ํ๋ ์์ํฌ๋ ์ด๋ฏธ ์ฝ์ ๊ฒฝ๊ณ ๋ฅผ ์์ฑํ๋ฉฐ ๋ถ๋ช ํ ์๋ํ์ง ์์ต๋๋ค.
์ด๊ฒ์ ๋ฒค์น๋งํฌ์ ๊ดํ ๊ฒ์ด ์๋๋ผ ์ค์์น๊ฐ ์ ํ๋์ง ์์๊ธฐ ๋๋ฌธ์ ์ค์ ์ฌ์ฉ์์๊ฒ ๋๋ฆฌ๊ฒ ์คํ๋๋ ์ค์ ์น์ฌ์ดํธ์ ๊ดํ ๊ฒ์ ๋๋ค.
@jakearchibald ๊ฐ์ ์ด์ ๋ ์ ์ ์ด์ฑ์ ์ธ ๋ต๋ณ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. React์์ ์ฌ์ดํธ๊ฐ ๋๋ ค์ง๋ ๋ฐ์๋ ์ฌ๋ฌ ๊ฐ์ง ์ด์ ๊ฐ ์๋ค๋ ๊ฒ์ด ํ๋นํ ์ง์ ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๊ฐ๋ฐ ๋ชจ๋ ๋ฐ ๋ธ๋ผ์ฐ์ ๋ด ๊ฒฝ๊ณ ์ ๋ํ ์กฐ์กํ ํ์ธ๋ณด๋ค ๋ ๋์ ์ฑ๋ฅ ํฅ์์ ์ ์ํ ์ ์๋ ๋ฐฉ๋ฒ์ ๋ณด๊ณ ์ถ์ต๋๋ค. React ์ฑ์ ๋ถ์ํ๊ณ ๊ฐ๋ฐ ๋ชจ๋์ ๊ฐ์ ๋ชจ๋ ๊ฒ๋ถํฐ ๋๋ฌด ๋ง์ ์ฌ๋ ๋๋ง์ ์ด๋ฅด๊ธฐ๊น์ง ์ฑ๋ฅ์ ๋ํ ์ง์งํ ์ ์์ ์ ๊ณตํ๋ ๋๊ตฌ๊ฐ ์๋ค๋ฉด ํจ์ฌ ๋ ์ ์ฉํ ๊ฒ์ ๋๋ค. ์ด์ ๊ฐ์ ์ผ๋ฐ ๋๊ตฌ๋ webpack, browserify ๋ฑ ๋ชจ๋ ํ์ดํ๋ผ์ธ์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค.
์ด๊ฒ์ด ๋ด๊ฐ ๋งํ๊ณ ์ถ์ ์ฃผ์ ๋ด์ฉ์ ๋๋ค. ์ธ์ ๊ฐ๋ jsbin, ์์ต์, ์ฌ์ง์ด ์์ ํ ์คํธ ์ฌ์ดํธ๋ฅผ ํจ๊ป ๋์ง๊ณ file:// ํ๋กํ ์ฝ๋ก ์ฌ๋ ๊ฒ๊ณผ ๊ฐ์ 5-10๊ฐ์ ๋ค๋ฅธ ์ฅ์์์ React ๊ฐ๋ฐ ๋ชจ๋๋ฅผ ์ฌ์ฉํ ๊ฒ์ ๋๋ค. ๊ฐ์ ์ ์ธ ๋ธ๋ผ์ฐ์ ๋ด ๊ฒฝ๊ณ ๋ ์น์ด ๋งค์ฐ ๋ฐ์ด๋ ์ด๋ฌํ ์ข ๋ฅ์ ์ ์ฐํ ๊ฐ๋ฐ์ ์ ๋์ ์ ๋๋ค. ๋๋ ์น์ ์ฌ๋ฌ ๋๋ฉ์ธ์์ React๋ฅผ ๋ฐฐ์ฐ๊ณ ์๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ๊ณณ์์ ์ด๋ฌํ ๊ฒฝ๊ณ ๋ฅผ ๋ณด๊ฒ ๋ ๊ฒ์ ๋๋ค.
๊ฒฝ๊ณ ๊ฐ ์ค์๊ฐ์ผ๋ก ์คํ๋๋ ๊ฒฝ์ฐ ์ฌ์ฉ์์๊ฒ ๋์์ด ๋๋ ๋น ๋ฅธ ์์ ์ด ํ์ํ ์ ๋๋ก ์๋๋ฝ์ต๋๋ค. React๊ฐ ๊ณต๊ฐ์ ์ผ๋ก ์ด๋ป๊ฒ ๋ณด์ด๋์ง ๊ฑฑ์ ๋๋ค๋ฉด ์ด์ ๊ฐ์ ๋ถํ์ํ ์๋ ์ ํ๋ฅผ ํผํ๊ณ ์ถ์ต๋๋ค.
์ต์ข ์ฌ์ฉ์์๊ฒ ๊ฐ๋ฐ์๋ณ ๊ฒฝ๊ณ ๊ฐ ํ์๋ ๊ฐ๋ฅ์ฑ์ ํ์ฉํ๋ ๊ฒ์กฐ์ฐจ ์ฉ๋ฉ๋์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ๋๋ฆฐ ์ฌ์ดํธ๋ ํ ๊ฐ์ง์ด์ง๋ง ์ด์ ๊ฐ์ ๋ฉ์์ง๋ ํนํ ๋ณด์์ ์ค์ ์ ๋ ์ฌ์ดํธ์ ๊ฒฝ์ฐ ์ฌ์ฉ์ ์ ๋ขฐ๋ฅผ ํผ์ํ ์ ์์ต๋๋ค(์ํ ์ฌ์ดํธ์ ๊ฐ์๊ธฐ ์์๊ป๋ผ ๊ฐ์ ์ค๋ฅ๊ฐ ํ์๋๋ค๋ฉด ๊ธฐ์ ๊ฒ์ ๋๊น?) ์ ์๋ง์ด๋ผ๋ ์ฌ์ฉ์๊ฐ ๊ฐ์๊ธฐ ์ด ๊ฒฝ๊ณ ๋ฅผ ๋ฐ๊ฒ ๋ฉ๋๊น?
๋ํ ๋ก์ปฌ ์คํ ๋ฆฌ์ง ์ด๋ฒคํธ๋ ์ค๋ฆฌ์ง๋น ํ ๋ฒ๋ง ํด์ ํ๋ฉด ๋จ์ ์๋ฏธํฉ๋๋ค. ํ ํ์ด์ง์ ์ฌ๋ฌ ๋ฐ๋ชจ๊ฐ ์๋ ๊ฒฝ์ฐ ํ๋๋ฅผ ๋ซ์ผ๋ฉด ๋ค๋ฅธ ๊ฒ๋ ๋ซํ๋๋ค.
์ค๋ณต ์ ๊ฑฐ๋ฅผ ์ํด localStorage
์ ์์กดํ ์ ์์ต๋๋ค. localStorage
(๋๋ ๋ค๋ฅธ ๋ก์ปฌ ์๊ตฌ ๋ฐ์ดํฐ)๊ฐ ์ด๋ค ๊ฐ๊ฒฉ์ผ๋ก๋ ์ง์์ง์ง ์๋๋ค๋ ๋ณด์ฅ์ ์์ต๋๋ค.
ํธ์ง : ๋ํ {INTERVAL}
๋ง๋ค ํ ๋ฒ๋ง ์ค๋ฅ๋ฅผ ํ์ํจ์ผ๋ก์จ ๊ฒฐ์ ๋ก ์ ์ผ๋ก ์ฌํํ ์ ์๊ธฐ ๋๋ฌธ์ ์ฌํ ๋ฐ ๋๋ฒ๊ทธํ๊ธฐ๊ฐ ํจ์ฌ ๋ ์ด๋ ค์์ก์ต๋๋ค.
ํด๊ฒฐํด์ผ ํ 2๊ฐ์ง ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค.
DOM์ ๊ฑด๋๋ฆฌ์ง ๋ง๋ผ๋ ์ฃผ์ฅ์ ์ค๋๋ ฅ์ด ์์ต๋๋ค.
ํฌ๊ณ ํ๋ คํ๊ณ ๋ถ๋ช ํ ์ฝ์ ๊ฒฝ๊ณ ๊ฐ ์๋ ๊ฒฝ์ฐ ํ๋ก๋์ ์ผ๋ก ๋ฐฐ์กํ๊ธฐ ์ ์ ์ฌ๋๋ค์ด ๊ฐ๋ฐ ๋ฒ์ ์ ์ฌ์ฉํ๊ณ ์ด ๋ช ๋ฐฑํ ์ฝ์ ๋ฉ์์ง๋ฅผ ๋ณผ ๊ฐ๋ฅ์ฑ์ด ์์ต๋๋ค. ๋๋ ์ผ๋ถ ์ฝ๋๊ฐ ์ด๋ฏธ ํ๋ก๋์ ์ผ๋ก ๋ฐฐ์ก๋์์ง๋ง ๋ค๋ฅธ ํ๋ก์ ํธ์์๋ ์ฝ์ ๋ฉ์์ง๋ฅผ ๋์น ์ ์๋ ๋ค์ ๋ฐ์ ๋ฒ์ ์ ์ฌ์ฉํ ๊ฒ์ ๋๋ค. ์๋ง๋ ๊ทธ๋ค์ ํ๋ก๋์ ์ผ๋ก ๋ฐฐ์กํ ์ฌ์ดํธ๋ฅผ ๊ธฐ์ตํ๊ณ ๊ฑฐ๊ธฐ์์ DEV๊ฐ ํ์ฑํ๋์ด ์๋์ง ํ์ธํ ๊ฒ์ ๋๋ค.
์ฝ์ ๋ฉ์์ง๋ ๊ต์ก์ ์ผ ๊ฒ์ ๋๋ค. ์๋ฅผ ๋ค์ด React ๊ฐ๋ฐ์ ํ๋ ์ฌ๋์ด๋ผ๋ฉด ๋๊ตฌ๋ DEV์ ๋ํด ์ ๋ง ์ค์ํ ๊ฒ์ด ์๋ค๋ ๊ฒ์ ์๊ณ ์์ผ๋ฉฐ ๊ฐ๋ฐ์ ์ํด React๋ฅผ ์ฌ์ฉํ ๋๋ง๋ค ๊ทธ๊ฒ์ ๋ด ๋๋ค.
์ฌ๋๋ค์ ์ผ๋ฐ์ ์ผ๋ก ์ ๊ฑฐํ ์ ์๋ ๊ฒฝ๊ณ ๋ฅผ ์ข์ํ์ง ์๊ธฐ ๋๋ฌธ์ https://github.com/facebook/react/pull/8782 ์ ๋ํด ์ฃผ์ ํ์ต๋๋ค(https://github.com/facebook/react/issues/ ์ฐธ์กฐ). 3877), ๊ทธ๋ฌ๋ ๋์์ ๊ณ ๋ คํ๋ฉด ์์ฉ ๊ฐ๋ฅํ ์๋ฃจ์ ์ผ ์ ์์ต๋๋ค.
๊ถ๊ธํ. localStorage๋ฅผ ์ฌ์ฉํ๋ฉด ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ์ ์ฉ๋์ง ์๋ ์ฌ์ดํธ์์ EU ์ฟ ํค ๋ฒ๋ฅ ์ด ์ ์ฉ๋ฉ๋๊น?
๊ฐ๋ฐ ์ค ์ ์ตํ ๊ฒฝ๊ณ ๊ฐ ์ข์ ์๊ฐ์ด๋ผ๋ฉด ์ ๋ค๋ฅธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์๋ ๊ทธ๋ ๊ฒ ํ์ง ์์ต๋๊น? ๊ธ์, ํ ๊ฐ์ง ์ด์ ๋ ์ด์ ๊ฐ์ ๋ฌธ์ ์ ๋ํ ๊ฒ์ ๋๋ค. ๋ค๋ฅธ ์ฌ๋๋ค์ด ์ด๊ฒ์ ํ๊ธฐ๋ฅผ ์ํ๋ค๋ฉด ๊ทธ๋ค๋ ์ ์ฌํ UI๋ฅผ ํ์ ํด์ผ ํฉ๋๊น? ๋ชจ๋ ๋ซ์์ผ ํ๋์?
์ด ๋ฌธ์ ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด ๋ ์ค์ฌ์ ์ธ ๊ฒ์ด ์์ผ๋ฉด ์ด์์ ์ผ ๊ฒ ๊ฐ์ต๋๋ค.
Chrome์ ๊ฐ๋ฐ ๋ชจ๋๊ฐ ์์ ์ ์์ต๋๊น? ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ํธ์คํธ์๊ฒ ๊ฐ๋ฐ ๋ชจ๋์ ์์์ ์๋ฆฌ๋ฉด Chrome์์ ๋ฐฐ์ง๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ์ด๋ฅผ ๋ํ๋ด๊ธฐ ์ํด ํ์ ์ ํ์ํ ์ ์์ต๋๋ค.
react devtools ํ์ฅ์ ํ์ฉํ์ฌ dev ๋ชจ๋์์ react๋ฅผ ์ฌ์ฉํ์ฌ ํ์ด์ง๋ฅผ ์ด ๋ ์๋ฆผ์ด๋ ๋ถ๋ช ํ ๊ฒ์ ํ์ํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๊น?
@sebmarkbage
๊ฐ๋ฐ ์ค ์ ์ตํ ๊ฒฝ๊ณ ๊ฐ ์ข์ ์๊ฐ์ด๋ผ๋ฉด ์ ๋ค๋ฅธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์๋ ๊ทธ๋ ๊ฒ ํ์ง ์์ต๋๊น?
๋๊ตฐ๊ฐ๊ฐ ๋จผ์ ๋์ด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. Angular์๋ http://code.gov ์ ๊ฐ์ ํญ๋ชฉ์ด ๊ฐ๋ฐ ๋ชจ๋์์ ์์๋๋ ์ ์ฌํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๋ค๋ฅธ ํ๋ ์์ํฌ๊ฐ ์๋ ๊ณณ์์ React๊ฐ ์ด ํญ๋ชฉ์ ์ก๊ธฐ ์์ํ๋ฉด ๋น์ทํ ๋ณ๊ฒฝ์ ํ๋๋ก ๋ฐ์ด๋ถ์ผ ๊ฒ์ ๋๋ค.
๋๋ ๊ทธ๋ค์๊ฒ ๋น์ทํ ๋ณํ๋ฅผ ์ผ์ผํค๋๋ก ๊ฐ์ํ ๊ฒ์ ๋๋ค.
@jakearchibald ๊ฐ ํ๋ ์์ํฌ๊ฐ ์์ฒด ๊ฒฝ๊ณ ๋ฅผ ์ ๊ณตํด์ผ ํ๋ค๊ณ ์ ์ํ๊ณ ์์ต๋๊น? ํ๋ก๋์ ํ๊ฒฝ์์ ์์ฒด ๊ฐ๋ฐ ๊ฒฝ๊ณ ๋ฅผ ์ ๊ณตํ๋ ํ๋ ์์ํฌ/๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํ ํ์ค์ ์ค์ ํ๋ ๊ฒ์ ์ข์ ์๊ฐ์ด ์๋๋ผ๊ณ ์๊ฐํฉ๋๋ค. ํ๋ซํผ์์ ํ์คํ๋ฅผ ์๋ํด์ผ ํ์ง ์์ต๋๊น? @sebmarkbage ๊ฐ ์ธ๊ธํ๋ฏ์ด
Chrome์ ๊ฐ๋ฐ ๋ชจ๋๊ฐ ์์ ์ ์์ต๋๊น? ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ํธ์คํธ์๊ฒ ๊ฐ๋ฐ ๋ชจ๋์ ์์์ ์๋ฆฌ๋ฉด Chrome์์ ๋ฐฐ์ง๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ์ด๋ฅผ ๋ํ๋ด๊ธฐ ์ํด ํ์ ์ ํ์ํ ์ ์์ต๋๋ค.
์ข์ ์์ด๋์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์ ๋ก: Safari์๋ DevTools์ ์ก์ธ์คํ๊ธฐ ์ํด ํ์ฑํํด์ผ ํ๋ ๋ณ๋์ ๋ชจ๋๊ฐ ์์ต๋๋ค. Chrome์ด ๋์ผํ ์์ ์ ์ํํ๋ค๋ฉด DEV ๋ชจ๋์ ๋ํ ํ์๊ธฐ์ ์ด๋ฅผ ํธ๋ฆฌ๊ฑฐํ๋ API๋ฅผ ์์ ํ๊ฒ ์ถ๊ฐํ ์๋ ์์ต๋๋ค. ์ด ํ์๊ธฐ๋ ๊ฐ๋ฐ์์๊ฒ๋ง ํ์๋๋ฏ๋ก ์ฌ์ฉ์ ๊ฒฝํ์ ๋ฐฉํดํ์ง ์์ต๋๋ค.
๋ธ๋ผ์ฐ์ ๊ณต๊ธ์ ์ฒด๊ฐ ์ด๋ฌํ ์์ ์ ๊ตฌํํ๋ ๋ฐ ์๊ฐ์ด ๊ฑธ๋ฆด ๋๊น์ง ๊ธฐ๋ค๋ฆฌ์ง ์์ต๋๊น?
@jide ์, ํ์ง๋ง ์ด ๋ฌธ์ ๋ฅผ ๋นจ๋ฆฌ ํด๊ฒฐํ๋ ๊ฒ๋ณด๋ค ์ฌ๋ฐ๋ฅด๊ฒ ํด๊ฒฐํ๋ ๊ฒ์ด ๋ ์ค์ํฉ๋๋ค. ๋ํ ํ์คํ ๋ ธ๋ ฅ(ํ์ํ ๊ฒฝ์ฐ)์ ๊ณ ๋ คํ๊ธฐ ์ ์ ๋จ์ผ ๋ธ๋ผ์ฐ์ ์์ ๊ตฌํํ ์ ์์ต๋๋ค.
@ํผ๊ณคํ
๊ฐ ํ๋ ์์ํฌ๊ฐ ์์ฒด ๊ฒฝ๊ณ ๋ฅผ ์ ๊ณตํด์ผ ํ๋ค๊ณ ์ ์ํ๊ณ ์์ต๋๊น?
๊ฐ ํ๋ ์์ํฌ๊ฐ ์์ฒด ๊ฐ๋ฐ ๋ชจ๋๋ฅผ ์ ๊ณตํ๋ค๋ ์ ์ ๊ฐ์ํ ๋(ํด๋น ๋ชจ๋๋ ํ๋ ์์ํฌ๋ง๋ค ๋งค์ฐ ๋ค๋ฅผ ์ ์์), ํ๋ ์์ํฌ๊ฐ ์ ์ฌํ๊ฒ ๊ณ ์ ํ ๋ฐฉ์์ผ๋ก ๊ฒฝ๊ณ ๋ฅผ ๊ตฌํํด์ผ ํ๋ ๊ฒ์ด ์์ ํ ๊ณต์ ํด ๋ณด์ ๋๋ค.
๋ธ๋ผ์ฐ์ ๋ ํ์ด์ง์ devtools๊ฐ ๋ ธ์ถ๋๋ ๊ฒ์ ํผํ๊ธฐ ์ํด ์ด๋ ์ ๋ ๋ ธ๋ ฅํ์ต๋๋ค. ์ฌ๊ธฐ์์ devtools๋ฅผ ์ง์ ์ฅ๋ฒฝ์ผ๋ก ๋ง๋ ๋ค๋ฉด DOM ๊ฒฝ๊ณ ๊ฐ ๋์น ์ ์๋ ๋ง์ ์ฌ์ฉ์๋ฅผ ๋์น๊ฒ ๋ ๊ฒ์ ๋๋ค. DOM ๊ฒฝ๊ณ ๋ ๋ ๊ฐ๋จํ ๋ฟ๋ง ์๋๋ผ ํ๋ซํผ ์ข ์์ฑ์ด ์ ๊ณ ๋ ๋ง์ ๊ฐ๋ฐ์์๊ฒ ๋๋ฌํฉ๋๋ค. ๋ ๊ฐ๋จํ๊ณ ํจ๊ณผ์ ์ธ ์ฌ์ด๋๊ฐ ์น๋ฆฌํฉ๋๋ค.
@gaearon Chrome DevTools ์ธก์์๋ ์น ํ๋ซํผ ๋ฐ ํ๋ ์์ํฌ ์์ฑ์๊ฐ ์ค์ํ ๊ฒฝ๊ณ ๋ฅผ ์๋ฆฌ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ๋ผ์ด๋ธ "์๋ฐ API"๋ฅผ ๋ธ๋ ์ธ์คํ ๋ฐํ์ต๋๋ค. ์ด๋ ๋ค๊ฐ์ค๋ ๊ฐ์ฌ ํจ๋ ์๋ก ๊ณ ์นจ๊ณผ ๊ฐ์ ์์น์ ํ์๋ฉ๋๋ค. ๊ทํ์ ์ง๋ฌธ๊ณผ ์ ์ฌํ๊ฒ ๋ค๋ฆฌ๋ฉฐ DEV ๋ชจ๋ ๊ฐ์ง์ ๋ํ ๊ฒฝ๊ณ ๋ฅผ ํธ๋ฆฌ๊ฑฐํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ด ํน์ ๋ฌธ์ ์ ๊ฒฝ์ฐ ์๋ ๊ณํํ๋ ๊ฒ๋ณด๋ค ์กฐ๊ธ ๋ ํฐ ์๋ฆฌ๋ฅผ ๋ด๊ณ ์์ ์ ์์ต๋๋ค. ์ฝ์ ๋ก๊ทธ ๋ฉ์์ง์ ์ ์ฌํ ์๋ฐ ํจ๋์ ํจ๋์ด ํต์ฐฐ๋ ฅ์ ์ ๊ณตํ ๊ฒ์์ ์์์ผ ํฉ๋๋ค. ํ๋ ์์ํฌ๊ฐ ๋ฉ์์ง์ ๋ํด ํ์คํํ ์ ์๋ ํ์ด์ง ์๋์ ๋งค์ฐ ๋์ ๋๋ ํ์ด์ง ์ค๋ฒ๋ ์ด๋ฅผ ํ์ํ๋ ๋ฌด์ธ๊ฐ๋ฅผ ์ํ ์ถ๊ฐ UX ๊ณต๊ฐ์ด ์์ ์ ์์ต๋๋ค. @paulirish ์ @s3ththompson ์์ ํด์ผ ์ฃผ๋ง ์ดํ์ ์๊ฐ์ ๋ฐ๋ณตํฉ๋๋ค.
Fwiw, ๋ด ์๊ฐ์ ์ด API๋ ์์ผ๋ก ๋ช ๋ฌ ๋์ ์ค๋น๋์ง ์์ ๊ฒ์ ๋๋ค. ๊ทธ๋ ๋ค๋ฉด ์ฒ์์๋ Canary์์๋ง ์ฌ์ฉํ ์ ์์ผ๋ฉฐ 6-7์ฃผ ํ์๋ ์์ ํ๋ ์ ์์ต๋๋ค.
DOM ๊ฒฝ๊ณ ๋ ๋ ๊ฐ๋จํ ๋ฟ๋ง ์๋๋ผ ๋ ํจ๊ณผ์ ์ ๋๋ค.
๋๋ ์ด๊ฒ์ ๋ํด Jake์ ๋์ํฉ๋๋ค. DevTools ์๋ฃจ์ ์ ๋ํด ๊ณ์ ์ด์ผ๊ธฐํฉ์๋ค. ํ์ง๋ง API๊ฐ ๊ทํ์ ์๊ตฌ ์ฌํญ์ ๋ง์ง ์๊ฑฐ๋ ํ์๋ผ์ธ์ด ํ๋ช ํ์ง ์์ ๊ฒฝ์ฐ์ ๋๋นํ์ฌ React๊ฐ ๋์ฒด ๋ฌด์์ ํ ์ ์๋์ง ์์๋ด๊ณ ์ถ์ต๋๋ค.
๊ฐ ํ๋ ์์ํฌ๊ฐ ์์ฒด ๊ฐ๋ฐ ๋ชจ๋๋ฅผ ์ ๊ณตํ๋ค๋ ์ ์ ๊ฐ์ํ ๋(ํด๋น ๋ชจ๋๋ ํ๋ ์์ํฌ๋ง๋ค ๋งค์ฐ ๋ค๋ฅผ ์ ์์), ํ๋ ์์ํฌ๊ฐ ์ ์ฌํ๊ฒ ๊ณ ์ ํ ๋ฐฉ์์ผ๋ก ๊ฒฝ๊ณ ๋ฅผ ๊ตฌํํด์ผ ํ๋ ๊ฒ์ด ์์ ํ ๊ณต์ ํด ๋ณด์ ๋๋ค.
@jakearchibald ํ์ค์ผ๋ก ์ค์ ํ๋ฉด ์ฌ๋ฌ ํ๋ ์์ํฌ(๋๋ ์ ํ๊ตฐ์์ ๋ค๋ฐ๋ฅด๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ)๋ฅผ ์ฌ์ฉํ๋ ํ์ด์ง๊ฐ ์ต์ข ์ฌ์ฉ์์๊ฒ ์์์ ์์ ๋น๊ฒฐ์ ๋ก ์ ์ผ๋ก ๋ ๋๋ง๋ ์ํธ ๊ฒฝ๊ณ ๊ฐ ํ์๋ ์ ์๋ค๋ ๊ฒ์ ์๊ณ ์์ต๋๊น?
๋ธ๋ผ์ฐ์ ๋ ํ์ด์ง์ devtools๊ฐ ๋ ธ์ถ๋๋ ๊ฒ์ ํผํ๊ธฐ ์ํด ์ด๋ ์ ๋ ๋ ธ๋ ฅํ์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ทธ ์ด์ ๋ ์ ์ด๋ ๋ถ๋ถ์ ์ผ๋ก๋ ๊ฐ๋ฐ์๋ณ ๋ฉ์์ง์ด ์ต์ข ์ฌ์ฉ์์๊ฒ ๋ ธ์ถ๋์ด์๋ ์ ๋๊ธฐ ๋๋ฌธ์ด๋ผ๊ณ ํ์ ํฉ๋๋ค.
DOM ๊ฒฝ๊ณ ๋ ๋ ๊ฐ๋จํ ๋ฟ๋ง ์๋๋ผ ๋ ํจ๊ณผ์ ์ ๋๋ค.
์๋ฃจ์ ์ ๋จ์์ฑ์ด๋ ํจ์จ์ฑ์ ๋ํด ์ด์๋ฅผ ์ ๊ธฐํ๋ ์ฌ๋์ ์๋ฌด๋ ์์ต๋๋ค. ๊ทธ๊ฒ์ ์๋ ํ์ง๋ง ์ฌ์ฉ์ ๊ฒฝํ์ ํฌ์์ํค๋ฉด์. ์ฌ์ฉ์์๊ฒ ๋ถ์ ์ ์ธ ์ํฅ์ ์ค ์ ์๋ ๊ฒ์ ์๋๋ง์ด ์๋๋๋ค.
Fwiw, ๋ด ์๊ฐ์ ์ด API๋ ์์ผ๋ก ๋ช ๋ฌ ๋์ ์ค๋น๋์ง ์์ ๊ฒ์ ๋๋ค. ๊ทธ๋ ๋ค๋ฉด ์ฒ์์๋ Canary์์๋ง ์ฌ์ฉํ ์ ์์ผ๋ฉฐ 6-7์ฃผ ํ์๋ ์์ ํ๋ ์ ์์ต๋๋ค.
@addyosmani ๋ ๋์ ์๋ฃจ์ ์ด๋ผ๋ฉด ๊ทธ๊ฒ์ด ์ด๋ป๊ฒ ๋ฌธ์ ๊ฐ ๋ ์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. React์ ๋ํ ๋ชจ๋ ๋ณ๊ฒฝ ์ฌํญ์ ์ฃผ์ ๋ฆด๋ฆฌ์ค์ ํฌํจ๋ ๊ฒ์ด๋ฉฐ ๋ฆด๋ฆฌ์ค ํ์ด๋ฐ์ด ์ด์จ๋ ์งํ๋๋ ํ ๋ฏธ์ ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
๊ฒฐ์ ๋ ์๋ฃจ์ ์ ํฅํ ๋ชจ๋ ๊ฐ๋ฐ์ ์ ์ฌ์ ์ผ๋ก ์ํฅ์ ๋ฏธ์น ๊ฒ์ ๋๋ค. ๊ทธ๋ฐ ๋งฅ๋ฝ์์ ๋ช ์ฃผ ๋ ๋ช ๋ฌ์ IMO๋ก ๋ฐ์๋ค์ผ ์ ์์ต๋๋ค.
ํ๋ ์์ํฌ๊ฐ DOM์ ์์ ์ด ๋ฃ์ง ์์ ๊ฒ์ ์ฝ์ ํ๋ฉด ์ผ๋ถ ๊ฐ๋ฐ์๋ ์นจ์ ์ ๋ฐ๋๋ค๋ ๋๋์ ์ดํดํฉ๋๋ค. ๊ทธ๋ฌ๋ ํ์ด์ง ํ๋จ์ "์ด ์ฌ์ดํธ๋ DevMode์ ์์ต๋๋ค."๋ผ๋ ๋ฐฐ๋๊ฐ ์์ผ๋ฉด ์ฌ์ฉ์ ๊ฒฝํ์ ํฐ ์ํฅ์ ๋ฏธ์น์ง ์๋ ํ๋ฅญํ ์๋ฃจ์ ์ด ๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ ๋ง์ ์ฌ๋๋ค์ด ๋ฐ๋๋ก ์๊ฐํ๋์ง ์ดํดํ๊ณ ์ถ์ต๋๋ค.
@aweary : "๋ณด์ ์ค์ฌ" ์ฌ์ดํธ๊ฐ DevMode์์ ์์๋๋ฉด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ๋๊น์ง ์ ๋ขฐํ ์ ์์ต๋๋ค. "DevMode"์๋ ๋นํ์ฑํ๋ CORS ๊ฒ์ฌ ๋๋ ๋ ธ์ถ๋ ํ ํ๋ฆฟ ์์ค ์ฝ๋ ๋ฑ๊ณผ ๊ฐ์ ๋ชจ๋ ์ข ๋ฅ์ ๋ณด์ ๊ด๋ จ ๋ฐ๋ก ๊ฐ๊ธฐ๊ฐ ํฌํจ๋ ์ ์์ต๋๋ค. ์ฌ์ดํธ๊ฐ ๋ณด์์ ์ค์ ์ ๋ ๊ฒฝ์ฐ ์ด๋ฌํ ์ผ์ _๋ฐ๋์_ ๋ฐ์ํ์ง ์์์ผ ํฉ๋๋ค.
("DevMode"๊ฐ React์์ ๋งค์ฐ ๊ตฌ์ฒด์ ์ธ ์๋ฏธ๋ฅผ ๊ฐ๋๋ค๋ ๊ฒ์ ์๊ณ ์์ง๋ง ์ฌ๊ธฐ์๋ ๊ฐ๋ฐ์๊ฐ ์๋ ์ฌ๋์ ๊ด์ ์ ๊ฐ์ ํ๋ ค๊ณ ํฉ๋๋ค)
@ํผ๊ณคํ
ํ์ค์ผ๋ก ์ค์ ํ๋ฉด ์ฌ๋ฌ ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ๋ ํ์ด์ง๊ฐ ์ต์ข ์ฌ์ฉ์์๊ฒ ์์์ ์์ ๋น๊ฒฐ์ ์ ์ผ๋ก ๋ ๋๋ง๋ ๋น๋ฐ ๊ฒฝ๊ณ ๊ฐ ํ์๋ ์ ์๋ค๋ ๊ฒ์ ์๊ณ ๊ณ์ญ๋๊น?
๋๋ ๊ทธ๊ฒ์ ์ ๋์ ์ผ๋ก ๊นจ๋ซ๋๋ค. ๊ฐ๋ฐ ๋ชจ๋์์ ์ฌ๋ฌ ํ๋ ์์ํฌ๊ฐ ์๋ ํ์ด์ง๋ ์ ๋นํ ์ด์ ์์ด ์ฌ์ฉ์ ๊ฒฝํ์ ์ฌ๊ฐํ๊ฒ ์์์ํต๋๋ค. ๋์ ๋์ง ์๊ณ ์์ ๋์ง ์์ ์ํ๋ก ์งํ๋๋ ๊ฒ์ ์ ํธํ๋ ๊ฒ ๊ฐ์ต๋๋ค. ๊ฐ๋ฐ์๊ฐ ์๋ ๊ฐ๋ฐ์(๊ฐ๋ฐ์๋ฅผ ๋์์ผ๋ก ํ๋ ๊ฐ์์ ์ธ ๋ฉ์์ง)์๊ฒ ๋๋ฌด ์ข์ง ์์ ๊ฐ๋ฐ์๊ฐ ์ฆ์ ์์ ํ์ฌ ํจ์ฌ ๋ ๋์ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ์ผ๋ฉด ํฉ๋๋ค.
์ฌ์ฉ์์๊ฒ ๋ถ์ ์ ์ธ ์ํฅ์ ์ค ์ ์๋ ๊ฒ์ ์๋๋ง์ด ์๋๋๋ค.
๋ฌ๋ฆฌ ์ฃผ์ฅํ๋ ์ฌ๋์ด ๋ณด์ด์ง ์์ต๋๊น? ์ด๋ฐ ๋ฐ์์ด ๋๋ฌด ์ํ๊น๋ค ๐
๋น์ ์ ์ฐจ๋ผ๋ฆฌ ๋์ ๋์ง ์๊ณ ๊ณ ์ ๋์ง ์๋ ๊ฒ์ ์ํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
@jakearchibald ์ข ์ด์ํ ๊ฒฐ๋ก ์ด๊ตฐ์. ์ด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋๋ ๊ฒ์ ์ํ์ง ์์ผ๋ฉด ์ฌ๊ฐ ์๊ฐ์ ์ฌ๊ธฐ์์ ๋น์ ๊ณผ ์ด์ผ๊ธฐํ๋ฉด์ ๋ณด๋ผ ๊ฒ ๊ฐ์ง ์์ต๋๊น? ๋ด๊ฐ ๋น์ ์ ํด๊ฒฐ์ฑ ์ ๋์ํ์ง ์๋๋ค๊ณ ํด์ ๋ด๊ฐ ๊ทธ๊ฒ์ ๋ฏธํด๊ฒฐ ์ํ๋ก ๋๋ ๊ฒ์ ์ฌ์ํ๋ค๋ ์๋ฏธ๋ ์๋๋๋ค. ์ ๋ง ๋ถ๊ณตํํฉ๋๋ค.
๊ฐ๋ฐ์๊ฐ ์๋ ๊ฐ๋ฐ์(๊ฐ๋ฐ์๋ฅผ ๋์์ผ๋ก ํ๋ ๊ฐ์์ ์ธ ๋ฉ์์ง)์๊ฒ ๋๋ฌด ์ข์ง ์์ ๊ฐ๋ฐ์๊ฐ ์ฆ์ ์์ ํ์ฌ ํจ์ฌ ๋ ๋์ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ์ผ๋ฉด ํฉ๋๋ค.
๊ทผ๋ณธ์ ์ผ๋ก ์ฉ๋ฉํ ์ ์๋ ์ผ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๋จผ์ ๋ช ์์ ์ผ๋ก ์ฌ์ฉ์๋ฅผ ์ฒ๋ฒํ๋ ๊ฒ์ ๋๋ค.
"๋ณด์ ์ค์ฌ" ์ฌ์ดํธ๊ฐ DevMode์์ ์์๋๋ฉด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ๋๊น์ง ์ ๋ขฐํ ์ ์์ต๋๋ค.
@surma dev ๋ชจ๋๋ ๋ณธ์ง์ ์ผ๋ก ์์ ํ์ง ์์ง๋ง, ์ฌ์ฉ์์๊ฒ ์ด๋ฅผ ์ ๋ฌํ๋ ๊ฒ์ด ๊ด์ฐฎ๋ค๊ณ ๊ฐ์ ํ๋ ์ ์ ๋๊ณ ์์ต๋๋ค.
๊ฐ๋ฐ ๋๊ตฌ๋ฅผ ์ด๊ฑฐ๋ ํ์ฑํํด์ผ ํ๋ ์๋ฃจ์ ์ด ์ถฉ๋ถํ์ง ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ด๋ฅผ ์๋ฆฌ๋ ค๋ฉด QA, ๊ฒฝ์์ง ๋ฐ ์ต์ข ์ฌ์ฉ์๊ฐ ๋ณผ ์ ์์ด์ผ ํฉ๋๋ค. ๊ฐ๋ฐ์๋ค์ ์ด๊ฒ์ ๋ณด๋ ๋ฐ ๋๋ฌด ์ต์ํด์ง ๊ฒ์ ๋๋ค. ๋ฌธ์ ๊ฐ ์๋ SSL ๊ตฌ์ฑ์ด ๊ฐ์กฐ ํ์๋๋ ๋ฐฉ์๊ณผ ์ ์ฌํฉ๋๋ค. ๋ง์ ๊ฒ์ด ํ์ํ์ง๋ ์์ง๋ง ๋๊ตฐ๊ฐ๊ฐ ๊ทธ๊ฒ์ ๋ํด ๋ฌผ์ด๋ณด๊ณ ๊ณ ์น ๊ฒ์ด๋ผ๋ ๊ฒ์ ์์์ฐจ๋ฆด ๋งํผ ์ถฉ๋ถํฉ๋๋ค.
DOM์ ์ฃผ์ ํ๋ ๊ฒ์ ์ฌ๋ฌ ๊ฐ์ง ์ด์ ๋ก ๋ฌธ์ ๊ฐ ๋ฉ๋๋ค. ์ฐ๋ฆฌ๋ DOM ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๊ณ DOM ์ง์ ์ ์ด ์๊ธฐ ๋๋ฌธ์ React์ ๋ํด ์ข ๋ ์คํ ๊ฐ๋ฅํฉ๋๋ค. DOM์ ๊ตญํ๋์ง ์๊ณ ์์ ์์์ ์คํ๋ ์ ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ฒฝ์ฐ ๋ ์ด๋ ต์ต๋๋ค.
์ฐ๋ฆฌ๊ฐ ํ ์ ์๋ ํ ๊ฐ์ง๋ ํ๋น์ฝ์ ๋ช ์์ ์ผ๋ก ์ฌ์ ์ํ ์ ์๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํ๋ ํ ํ๋น์ฝ์ ๋ณ๊ฒฝํ๋ ๊ฒ์ ๋๋ค. ๋ง์ ์ฌ์ดํธ์๋ ์ด๋ฏธ ๊ฐ๋ฐ ๋ชจ๋์ ๋ํด ๋ณ๋์ ํ๋น์ฝ์ด ์์ต๋๋ค.
DOM์ ์ ์๋ฆฌ์ ์ ์งํ์ง ๋ชปํ ์ ์๋ React์ ์ค๋ฅ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํ ๊ธฐ๋ณธ ๊ฒฝํ์ ํ์ ํด์ผ ํฉ๋๋ค. master์ ํ์ฌ ๊ธฐ๋ณธ ๊ตฌํ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด ํธ๋ฆฌ์์ React ์ฝํ ์ธ ๋ฅผ ์ญ์ ํฉ๋๋ค. ๊ทธ๊ฒ๋ ์นจ์ต์ ์ด๋ค.
๊ฐ๋ฐ ๋ชจ๋๊ฐ ์๋์ ๊ฐ์งํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์๋ ๊ฒฝ์ฐ ํด๋น ์ค๋ฅ ๋ชจ๋๋ฅผ ํธ๋ฆฌ๊ฑฐํ ์ ์์ต๋๋ค. ๊ทธ๋ ๋ค๋ฉด ์๊ตฌ์ ์ผ๋ก ๊ฐ๋ฐ ๋ชจ๋๋ฅผ ์ ํํ ์ ์๋ ํ์คํ ๋ฐฉ๋ฒ์ด ํ์ํฉ๋๋ค.
๋ฌธ์ ๊ฐ ์๋ SSL ๊ตฌ์ฑ์ด ๊ฐ์กฐ ํ์๋๋ ๋ฐฉ์๊ณผ ์ ์ฌํฉ๋๋ค.
์ด๊ฒ์ด ๋ฐ๋ก ๋ด๊ฐ ์๊ฐํ๊ธฐ์ ์๋ฒฝํ ๊ฒ ๊ฐ์ ์ข ๋ฅ์ ๊ฒ์ ๋๋ค. ์ฌ์ฉ์๋ ๋ฐฉ๋ฌธํ๋ ์ฌ์ดํธ์ ๋ํ ๋ณด์ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ ๋ธ๋ผ์ฐ์ ์ ์ด๋ฏธ ์ต์ํฉ๋๋ค. ์ฑ๋ฅ ์ ๋ณด๋ ๊ฑฐ๊ธฐ์์ ํฌ๊ฒ ํฅ์๋์ง ์์ต๋๋ค. ๋ํ ์ ์ฌ์ ์ธ ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ๋ณด๊ณ ํ๊ณ ์ฌ์ฉ์ ์ํฌํ๋ก๋ฅผ ์ง์ ๋ฐฉํดํ์ง ์๋ ๋ชจ๋ ํ๋ ์์ํฌ/๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํด ์ผ๊ด์ฑ์ด ์์ต๋๋ค. ๐
๋๋ ํ๋น์ฝ ์์ด๋์ด๋ฅผ ์ข์ํ๋ค: ๋์ ๋๊ณ , devtools๋ ํ์ฅ ์์ด ์๋ํ๊ณ , ๋ชจ๋ ์ฌ๋์ด ๋์ ๋๊ณ , ์ฌ์ฉ์์๊ฒ ํด๋ฅผ ๋ผ์น์ง ์์ผ๋ฉฐ, ์ฃผ์๋ฅผ ๋๋๋ก ์ ๋๋ฉ์ด์ ๋ ์ ์๊ณ , ๊ฐ๋ฐ์๊ฐ ์ฌ๋ผ์ง๊ณ ์ถ์ ์ ๋๋ก ์ง์ฆ๋๊ฒ ํ ์ ์์ต๋๋ค.
DEV ๋ชจ๋๋ฅผ ์ตํธ์ธํ๋ ๊ฒ์ ์ด๋ป์ต๋๊น?
๋์ DX๋ ์์์ฐจ๋ฆฌ๊ธฐ ์ฝ๊ธฐ ๋๋ฌธ์ "์ข์ UX"์ ์ค๋ฅ๊ฐ ์์ต๋๋ค(์ด์ ๊ฐ์ ๋ฌธ์ ์ ๋ํ IMHO๋ ์ฌ์ฉ์๊ฐ ์ ํํ ์ ์์ง๋ง ๊ฐ๋ฐ์๋ ์ ํํ ์ ์๊ธฐ ๋๋ฌธ์ "์น๋ฆฌ"ํด์ผ ํจ).
์ผ๋ถ ํ๋ ์์ํฌ์์๋ ์ด๋ฏธ ์ด ์์
์ ์ํํ๊ณ ์๋ค๊ณ ํ์ ํฉ๋๋ค(์: ์ฌ๋ฐ๋ฅด๊ฒ ๊ธฐ์ตํ๋ค๋ฉด Relay).
๊ตฌํ ๋ฐฉ๋ฒ์ ๋ํ ์ ์:
NODE_ENV
๊ฐ ๋ช
์์ ์ผ๋ก development
๋ก ์ค์ ๋ ๊ฒฝ์ฐ์๋ง ๊ฐ๋ฐ ๋ชจ๋๋ฅผ ํ์ฑํํฉ๋๋ค.__DEV__
๊ฐ === true
์ธ ๊ฒฝ์ฐ ๊ฐ๋ฐ ๋ชจ๋๋ฅผ ํ์ฑํํฉ๋๋ค.์ฒซ ๋ฒ์งธ๊ฐ ๊ฐ์ฅ ์ข์ ์ด์ ๋ ๋ค๋ฅธ ๋ ๊ฐ๋ ๊ฐ๋ ์์ด ํ๋ ์ฝ๋ฉ๋์ด(์: if(NODE_ENV === 'development')
๋ฌธ) ์ด์จ๋ ํ๋ก๋์
์ผ๋ก ๋ฐฐ์ก๋ ์ ์๊ธฐ ๋๋ฌธ์
๋๋ค.
@mattecapu ์ ๊ดํ ๋ ๋ฒ์งธ ์๊ฒฌ์ ์ฐธ์กฐํ์ญ์์ค. https://twitter.com/sebmarkbage/status/820047144677584896
๊ฐ๋ฐ์๊ฐ DEV ๋ชจ๋์์ ์คํํ์ฌ ์์ํ๋๋ก ๊ฐ์ ํ๋ ์ ์ฌํ ๋ฐฉ๋ฒ์ด ์๋ ๊ฒฝ์ฐ ๊ธฐ๋ณธ๊ฐ์ด ๋ฌด์์ธ์ง๋ ์ค์ํ์ง ์์ต๋๋ค. ํ์ง๋ง ๋ค์ฒ์ง๋ฉด ์ ๋ง ๊ณค๋ํ๋ค.
์ฌ๊ธฐ์ ๋ํด ์ธ๊ธํ ๋ด์ฉ์ด ๋ง๊ณ ์๊ฐ์ด ์์ง๋ง ๊ฐ๋ฐ์ ๊ฒฝ๊ณ ๋ฅผ ๋นํ์ฑํํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์ง๋ฌธ์ ๋ํด ๊ตฌ์ฒด์ ์ผ๋ก ์ธ๊ธํ๊ณ ์ถ์ต๋๋ค.
์ ๋ ํน์ ๋ธ๋ผ์ฐ์ ์์ ์ผ์ ์๊ฐ ๋์ DOM ๊ฒฝ๊ณ ๋ฅผ ๋นํ์ฑํํ๋ ๋ฒํผ์ ์ด๋ ฌํ ํฌ์ด ์๋๋๋ค. @jlongster๊ฐ ์ง์ ํ๋ฏ์ด ์์ฃผ ๋ฐ์ํ๋ฉด ๊ฐ๋ฐ์์๊ฒ ๊ณ ํต์ ๋๋ค. ๊ทธ๋ฌ๋ ๋์๊ฒ ๋ ์ค์ํ ๊ฒ์ ๋ธ๋ผ์ฐ์ ๊ณ ์ ์ ๋์ ๋ณ๋์ฑ์ ๋์ ํ์ฌ ๋ฒ๊ทธ๋ฅผ ์ฌํํ ์ ์๋ "๋ด ์ปดํจํฐ์์๋ ์ ์๋ํ์ง๋ง ๋ด ์ปดํจํฐ์์๋ ์ ์๋ํฉ๋๋ค"๋ก ์ฝ๊ฒ ์ด์ด์ง ์ ์๋ค๋ ๊ฒ์ ๋๋ค.
๊ธฐ๋ณธ๊ฐ ["localhost", "127.0.0.1"]
์ผ๋ก ๊ฐ๋ฐ์ ์์๋ก ๊ฐ์ฃผ๋๋ ๋๋ฉ์ธ์ ๋์ดํ๋ ๋งค๊ฐ๋ณ์๋ฅผ ๋ ๋๋ง์ ์ ์กํ๋ ๊ฒ์ ์ ํธํฉ๋๋ค. ๋ค์๊ณผ ๊ฐ์ด ๋ณด์ผ ๊ฒ์
๋๋ค.
React.render(<App/>,
myDiv,
() => { console.log('finished render!'),
{ devDomains: ["localhost", "devbox.mycorp.com"] }
);
ํ์ฌ ๋๋ฉ์ธ์ด ๋ชฉ๋ก์ ์์ผ๋ฉด dev ๊ฒฝ๊ณ ๊ฐ ํ์๋์ง ์์ต๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ๊ทธ๋ ์ต๋๋ค. ์ด ์ฒด์ ์์:
localhost
๋๋ 127.0.0.1
๋ฅผ ์ฌ์ฉํ์ฌ ๋ก์ปฌ ์์คํ
์์ dev ๋น๋ ์ฌ์ฉ : ๊ฐ๋ฐ์ ๊ฒฝ๊ณ ๊ฐ ์์ผ๋ฉฐ ๊ฐ๋ฐ์ ์กฐ์น๊ฐ ํ์ํ์ง ์์ต๋๋ค.render
์ ์ ๋ฌ๋ ๋ชฉ๋ก์ ๋๋ฉ์ธ ์ด๋ฆ์ ์ถ๊ฐํ ๋๊น์ง DOM ๊ฒฝ๊ณ ๋ฅผ ๋ฐ์ต๋๋ค. ๊ทธ ํ์๋ DOM ๊ฒฝ๊ณ ๊ฐ ํ์๋์ง ์์ต๋๋ค.์ด ์๋ฃจ์ ์ ๋ํด ๋ด๊ฐ ๊ฑฑ์ ํ๋ ํ ๊ฐ์ง๋ ๊ฐ๋ฐ์๊ฐ ์ฝ๋์ ์๋ ๋ชจ๋ ๊ฐ๋ฐ ์๋ฒ ๋๋ฉ์ธ ๋ชฉ๋ก์ ๋จ๊ธฐ๊ณ ํด๋น ์ฝ๋๊ฐ ํ๋ก๋์ ์ ์ ์ฉ๋ ์ ์๋ค๋ ๊ฒ์ ๋๋ค. ๊ฐ๋ฐ ์๋ฒ ๋๋ฉ์ธ์ ๋น๋ฐ๋ก ์ฌ๊ธฐ๋ ํ์ฌ์ ๊ฒฝ์ฐ ๋ฌธ์ ๊ฐ ๋ฉ๋๋ค. ์๊ฐ?
@aickin ํด๋น ์ ๊ทผ ๋ฐฉ์์ ๋ฌธ์ ๋ ์ฌ์ฉ์๊ฐ ๊ตฌ์ฑ์ ์๊ณ ์์ด์ผ ํ๋ฉฐ, ๊ฒฐ๊ณผ์ ์ผ๋ก ํด๊ฒฐํ๋ ค๋ ๋ฌธ์ ๊ฐ ์๋ค๋ ๊ฒ์ ๋๋ค. ๋ฌธ์ ๋ ์ฌ๋๋ค์ด ์ฒ์๋ถํฐ ๊ฐ๋ฐ/์ ํ ๊ตฌ๋ถ์ ์ธ์ํ์ง ๋ชปํ๋ค๋ ๊ฒ์ ๋๋ค.
ํธ์ง : ์ ๊ฒฝ ์ฐ์ง ๋ง์ธ์. ๊ฐ๋ฐ ์ค์ธ DOM ๊ฒฝ๊ณ ๊ฐ ์ฌ์ ํ ์์ต๋๋ค.
์๋ฒ ์ธก ํ๊ฒฝ์ ๋๋ฒ๊ทธ ์ธ๋ถ ์ ๋ณด๊ฐ ํฌํจ๋ "ํน์" ์ค๋ฅ ํ์ด์ง๋ฅผ ํ์ํ๊ณ ํ๋ก๋์ ํ๊ฒฝ์์ ์ ๊ณตํ์ง ๋ง๋ผ๊ณ ์๋ ค์ค์ผ๋ก์จ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค.
์ฌ์ฉ์ ์ง์ ์ค๋ฅ ๊ฒฝ๊ณ๋ฅผ ์ ๊ณตํ์ง ์๋ ํ React๋ฅผ "๋น ๋ฅด๊ฒ ์คํจ"ํ๊ณ ๋ทฐ๋ฅผ ๋ง์ดํธ ํด์ ํ ๊ณํ์ด๋ฏ๋ก ๊ต์ก ํ์ด์ง ์ญํ ์ ํ๋ ๊ฐ๋ฐ์ ๊ธฐ๋ณธ "๋นจ๊ฐ์ ์์" ์ค๋ฅ ๊ฒฝ๊ณ๋ฅผ ์ถ๊ฐํ ์๋ ์์ต๋๋ค.
๊ทธ๋ฐ ๋ค์ ์ฌ์ฉ์๊ฐ ํ๋ก๋์ ์์ ์ฒ์์ผ๋ก ๋ฒ๊ทธ๊ฐ ์์ ๋ ํน๋ณํ ์์ธํ ์ค๋ฅ ๋ฉ์์ง๊ฐ ํ์๋ฉ๋๋ค. ์ด๊ฒ์ DEV ๋น๋์ ๋ํด ๊ต์กํ ์ ์๋ ๊ธฐํ๊ฐ ๋ ์ ์์ต๋๋ค.
๊ทธ๋ฌ๋ ํ์ด์ง ํ๋จ์ "์ด ์ฌ์ดํธ๋ DevMode์ ์์ต๋๋ค."๋ผ๋ ๋ฐฐ๋๊ฐ ์์ผ๋ฉด ์ฌ์ฉ์ ๊ฒฝํ์ ํฐ ์ํฅ์ ๋ฏธ์น์ง ์๋ ํ๋ฅญํ ์๋ฃจ์ ์ด ๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ ๋ง์ ์ฌ๋๋ค์ด ๋ฐ๋๋ก ์๊ฐํ๋์ง ์ดํดํ๊ณ ์ถ์ต๋๋ค.
๋๋ถ๋ถ์ ์ฌ์ฉ์๋ ์น ์ฑ์ด๋ผ๋ ๊ฒ์ ์๋ฉด ์น ์ฑ์ ์ซ์ดํฉ๋๋ค. ๊ทธ ์ด์ ๋ ๋ฌด์์ ๋๊น? ์น์ ๋ํ ์ด์ ์ ์ผ๋ฐ์ ์ธ ์ฌ๊ณ ๋ฐฉ์์ ์น์ด ํ๋ฉด์ ๋ํ๋๋ฉด ์๋ฌด๋ฆฌ ๋์ ํ๋์ ํ๊ณ ์ฌ์ฉ์๊ฐ ์น์ด ๋์๋ค๋ ๊ฒ์ ๋ฐฐ์ ๋๋ผ๋ ๋๋๋ค๋ ๊ฒ์ด์์ต๋๋ค. ๊ทธ๋ฌ๋ ์น์์ ํ๋ฅญํ UX๋ฅผ ๋ง๋๋ ๊ฒ์ ์๋ฒฝํ๊ฒ ๊ฐ๋ฅํ์ง๋ง ๊ทธ๋ ๊ฒ ํ๋ ค๋ฉด DOM์ ์์ ํด์ผ ํฉ๋๋ค. ๋๊ตฐ๊ฐ๊ฐ ์์์ ์์น์ ์์์ ๋ฐฐ๋๋ฅผ ์ฝ์ ํ๋ฉด ์๋ชป๋ ์์๊ฐ ์คํฌ๋กค๋๊ธฐ ์์ํ๊ฑฐ๋ ์คํฌ๋กคํ ๋ ์ ์ฒด ํ๋ฉด์ด ๋ค์ ๊ทธ๋ ค์ง๊ฑฐ๋ ์๋ฅผ ๋ค์ด ๋๋๊ทธ ์ ์ค์ฒ๋ ๋ค๋ฅธ ๊ฒ์ ๋ฐฉํดํ ์ ์์ต๋๋ค. ์์ ์ ๊ทธ ๋ฐฐ๋๊ฐ ์๋ ํ ๊ทธ ๋ฐฐ๋๊ฐ ์์ด์ ธ๋ ๊ฒฝํ์ด ๋๊ฐ๋ค๋ ๊ฒ์ ์ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ ๋ฐ์ ํ ์ ์๋ค๋ ๊ฒ์ ๋๋ค.
ํ๋ ์์ํฌ ์๋ฃจ์ ์ผ๋ก์ ํ๋น์ฝ ์์ด๋์ด๊ฐ ์ ๋ง ๋ง์์ ๋ญ๋๋ค. ๊ฐ๋ฐ์ ๋ฐฉํดํ์ง ์๊ณ , ์ฌ์ฉ์์๊ฒ ์ด์ํ๊ฒ ๋ณด์ด์ง๋ ์๊ณ , UX๋ฅผ ํ๊ดดํ ๊ฐ๋ฅ์ฑ๋ ์์ง๋ง ์ฃผ๋ชฉ๋ฐ์ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ ์ค์ ๋ก๋ ๋น์ ๋จ์ผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋๋ ํ๋ ์์ํฌ์์๋ง ์๋ํ๋ฉฐ ์์ ์์์ ์คํ๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์๋ ์ ํ ์๋ํ์ง ์์ต๋๋ค. ์ค์ ์๋ฃจ์ ์ ์ฌ๋ฌ ํ๋ ์์ํฌ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ง์ํ ์ ์๊ณ ๋ชจ๋ ์ปจํ ์คํธ์์ ์ก์ธ์คํ ์ ์๋ ๋ธ๋ผ์ฐ์ ๋ฅผ ํตํด ์ด๋ฅผ ์ํํ๋ ์ข์ ๋ฐฉ๋ฒ์ ๋๋ค.
์ฌ๋ฌ ํ๋ ์์ํฌ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ง์ํ๊ณ ๋ ๋ช ํํ์ง๋ง ๊ถํ ์์ฒญ์ด ํ์ํ ๋ ๋ค๋ฅธ ์๋ฃจ์ ์ ๋ธ๋ผ์ฐ์ ์๋ฆผ์ ํ์ํ๋ ๊ฒ์ ๋๋ค.
์์ด๋์ด๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. react์ ํํ์ด์ง์์ ์์ํ๊ธฐ ๋ฌธ์๋ฅผ ์ ๋ฐ์ดํธํ์ฌ react ์ฑ์ ๋ ๋ง์ด ์์ฑํ๋๋ก ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ ๋ฌธ์์์ npm build์ ์ค์์ฑ์ ๊ฐ์กฐํ์ญ์์ค. DOM ๊ฒฝ๊ณ ๋ ํ์ํ์ง ์์ต๋๋ค. ์ธ์์ด ํ์ํฉ๋๋ค.
๋ด ์๊ฐ์ @ropilz ๋ ์ค๋ ๋์ ์ด๊ธฐ์ "_.. ์ฐ๋ฆฌ๊ฐ devs.._์๊ฒ ์๋ฆฌ๊ณ ์ถ์ ๋ชจ๋ ์๋น์ค๋ฅผ ๋ฐ์ธ๋ฉํ ์๋ ์์ต๋๋ค." ์ฃผ์์ผ๋ก ์ด ๋ฌธ์ ์ ๋ํด ์ธ๊ธํ์ง๋ง, ๋์น์ฑ์ง ๋ชปํ(๋๋ ์น์ธ๋์ง ์์) ๊ฒ์ผ ์ ์์ต๋๋ค.
๋ด๊ฐ ์ดํดํ๋ ํ ์ฌ๊ธฐ์์ ํด๊ฒฐ๋๋ ๊ทผ๋ณธ์ ์ธ ๋ฌธ์ ๋
console.log
๋ฉ์์ง(๋๋ ํด๋น ๋ฌธ์ ์ ๋ํ DOM ๊ฒฝ๊ณ )๋ฅผ ๋ณด๋ ๊ฐ๋ฐ์์ ์์กดํ ์ ์์ต๋๋ค. ๋จ, ํด๋น ๊ฐ๋ฐ์๊ฐ ํ๋ก๋์
์ฌ์ดํธ ์์ฒด๋ฅผ ์ ๊ทน์ ์ผ๋ก ์ฌ์ฉํ์ง ์๋ ํ(๋๋ ์ต์ข
์ฌ์ฉ์, QA/ ์ด๋ฌํ ๊ฒฝ๊ณ ๋ฅผ ๊ฐ๋ฐ์์๊ฒ ๋ค์ ๋ณด๊ณ ํ๊ธฐ ์ํด ์ง์ ํ ๋ฑ)CSP์ report-uri
์ ์ ์ฌํ ๊ฒ์ด ์๋ค๋ฉด ํ๋ ์์ํฌ๊ฐ ์ต์ข
์ฌ์ฉ์๊ฐ ๋ณผ ์ ์๋ ์ฌ์ดํธ์์ ํ์ฅ ๊ฒฝ๊ณ ๋ฅผ ํ์ํ๋ ๋์ ๊ฐ๋ฐ ๋ชจ๋ ๊ฒฝ๊ณ ๋ฅผ ๋ณด๋ผ ์ ์์ต๋๊น?
๋ถ๋ช ํ ๋ค์๊ณผ ๊ฐ์ด ์ฌ๋ฌ ๊ฐ์ง ๊ณ ๋ คํด์ผ ํ ์ฌํญ์ด ์์ต๋๋ค.
report-uri
๋ ๋ฌด์์
๋๊น? (์ฐ๋ฆฌ๋ ๊ฐ ํ๋ ์์ํฌ๊ฐ https://report-uri.io์ ์ ์ฌํ ์์ฒด ๋ฌด๋ฃ ์๋น์ค๋ฅผ ํธ์คํ
ํ ๊ฒ์ผ๋ก ์์ํ ๊น์? (์ด๋ React & Angular์ ๊ฐ์ ๋๊ท๋ชจ ํ์ฌ ํ์ ํ๋ ์์ํฌ์์๋ _may_ ๊ฐ๋ฅํ์ง๋ง ์๊ท๋ชจ ์คํ ์์ค ํ๋ ์์ํฌ์์๋ ํ์คํ ๋น์ค์ฉ์ ์
๋๋ค. Preact, Vue ๋ฑ)๋๋ ์ด ์ ์์ด ๋จ์ง ์๊ฐ์ ๋ถ๊ณผํ๋ค๋ ๊ฒ์ ์์ ํ ์ธ์ ํ๋ฉฐ ์ด๊ฒ์ด ์ผ๋ง๋ ์ค์ฉ์ ์ธ์ง ๋๋ ์ค์ ๋ก ์ด๋ป๊ฒ ์๋ํ๋์ง ๊ณ ๋ คํ์ง ์์์ต๋๋ค. ํ์ง๋ง CSP/HPKP ๋ณด๊ณ ์ ๋ํด 'ํ๋ก๋์ ๋ฌธ์ ์ ๋ํ ๋ณด๊ณ ' ๋ฌธ์ ๊ฐ ์ด๋ฏธ ๋ถ๋ถ์ ์ผ๋ก ํด๊ฒฐ๋ ๊ฒ ๊ฐ์์ ์ฌ๊ธฐ์์ ๋น์ทํ ๊ฒ์ ํ์ํ ์ ์์ ๊ฒ ๊ฐ์์ ์ฌ๋ ค๋ณด๊ณ ์ถ์์ต๋๋ค.
ํ ๊ฑธ์ ๋ฌผ๋ฌ์์ React๊ฐ ํ๋ ์์ํฌ๋ผ๋ ๊ฒ์ ๊นจ๋ซ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ๋ค์ ํ์ ๋ฅผ ํด์๋ ์ ๋ฉ๋๋ค .
๊ฐ๋ฐ์ ๋ฅผ ์ํ ์๋ฆผ์ผ๋ก ์๊ฐ์ ์ผ๋ก ํ์๋๋๋ก DOM์ ์์ ํฉ๋๋ค. ๊ฐ๋ฐ์๋ฅผ ๋ฐฉํดํ์ง ์๊ณ ๋ชจ๋ ํ๊ฒฝ์์ ์๋ํ ์ ์๋ ๋ฌด์ธ๊ฐ๋ฅผ ์ดํดํ๊ณ ๊ฐ๋ฐํ์ง ์๋ ํ ์ด๊ฒ์ด ๋ฐ๋ก ์ ์๋ํ๋ ๋ฐฉ๋ฒ์ ์์ต๋๋ค. ๊ฐ๋ฐ์๋ฅผ ๋ฐฉํดํ๊ณ ํ๋ก๋์ ํ๊ฒฝ์์ ํ์ ๋๋ ๊ฒฝ์ฐ ์ฌ์ฉ์์ ์ ๋ขฐ๋ฅผ ์์ง ์์ผ๋ฉด ๊ฝค ์์ฃผ ๊ทธ๋ฆฌ๊ณ ๋ง์ ์ฌ๋๋ค์ด ๊ทธ๊ฒ์ ๋๋ ๋น ๋ฅธ ์์ ์ ๋ฐฐํฌํ ์ ์์ ๊ฒ์ ๋๋ค).
ํ๋น์ฝ์ ์์ ํฉ๋๋ค. favicon์ ์ง์ฆ๋๊ฒ ์บ์ฑ๋์ด ๋ถ๋งํฌ์ ์ฌ์ฉ๋๋ฉฐ ๋ชจ๋ฐ์ผ ์ฅ์น์ ์ ์ฅ๋ ์น ์ฑ ์์ด์ฝ(๋ค๋ฅธ ํญ๋ชฉ์ด ์ง์ ๋์ง ์์ ๊ฒฝ์ฐ) ๋ฑ์ ์ฌ์ฉ๋ฉ๋๋ค. ์ด๋ก ์ธํด ์ค์๋ก(๋๋ ์๋์ ์ผ๋ก) ํ๋ก๋์ ๋ฐฐํฌ๋ฅผ ๊ฐ๋ฐ ๋ชจ๋๋ก ๋ฐฐํฌํ์ฌ ๋ธ๋๋ ๋ก๊ณ ๋ฅผ ์ง์ธ ์ํ์ด ์์ต๋๋ค.
๋ธ๋ผ์ฐ์ ์๋ฆผ. ๋น์ ์ด ์์ ์ ๋ฐ๊ณ ์์ ๋, ๋น์ ์ ์ฌ์ฉ์์๊ฒ ์์ ์ ๋ฐ๊ณ ์์ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค. ์๋ฆผ ํ์ ์ ๋ธ๋ผ์ฐ์ ๊ถํ์ ์์ฒญํ๊ณ ์ฌ์ฉ์๊ฐ ์ดํดํ ์ ์๋ ์ด์ํ ํ์ ์ ํ์ํฉ๋๋ค. ๋ด ๊ฒฝํ์ ๋ฐ๋ฅด๋ฉด ์ด๋ฌํ ๊ฒ๋ค์ด ๋๋ถ๋ถ ๊ฐ๋ฐ์์๊ฒ ํ์๋ ๊ฒ์ด๋ผ๋ ๊ฐ์ ์ ์ ํํ ๋ฐ๋์ด๋ฉฐ ์ฌ์ฉ์์ ๋ํ ์ ๋ขฐ๋ฅผ ๋ง์น ์ ์์ต๋๋ค.
๊ฐ๋ฐ์๋ฅผ ๋๋ณด๋ ๊ฒ์ React์ ์ผ์ด ์๋๋๋ค. ๋๋ ๋ค์ ์ค ํ๋๋ฅผ ์ ์ํฉ๋๋ค.
๊ฐ๋ฐ ๋ชจ๋๋ฅผ ์ตํธ์ธ์ผ๋ก ์ค์ ํฉ๋๋ค. ๊ฐ๋ฐ์๊ฐ ๋๋ฒ๊ทธํ ์ ์๋ค๋ ์ฌ์ค์ ์๊ฒ ๋๋ฉด ์ด๋ฅผ ์ผ๋ ๋ฐฉ๋ฒ( ์ด๋์๋ ๋ฌธ์ํํด์ผ ํจ)์ ์ฐพ์ ๊ฒ์ ๋๋ค. ์๋์, ๋ค์ ๋๋ผ๊ณ ๋งํ๋ ๊ฒ์ React์ ์ผ์ด ์๋๋๋ค. ๊ทธ๋ค์ ๋ฌธ์ .
๊ฐ๋จํ console.log ๋ฉ์์ง์ ๊ทธ๋๋ก ๋์ญ์์ค(์ด๋ ๋นํ์ฑํ ๊ฐ๋ฅํด์ผ ํจ). ๊ฐ๋ฐ์๊ฐ ์ฐพ์์ ์ฒ๋ฆฌํ๋๋ก ํ์ญ์์ค. ๊ทธ๋ ์ง ์๋ค๋ฉด ์ค ๊ธ์. ๋ชจ๋ ์กฐ์ง์ ์ ๊ทผํ์ฌ ์ผ์ ์ฌ๋ฐ๋ฅด๊ฒ ์ํํ๋๋ก ํ ์๋ ์์ต๋๋ค. ํ์ฅ์ด ๋ถ๊ฐ๋ฅํ ๋ฟ์ ๋๋ค.
๊ฒฝ๊ณ ๋ฅผ ํ์ํ๊ธฐ ์ํด DOM์ ๋ง์ง๋ ๊ฒ์ ๋์ํ์ง ์์ต๋๋ค. React๋ DOM ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๊ธฐ ๋๋ฌธ์ ์ฝ๊ณ ๊ฐ๋จํด ๋ณด์ด์ง๋ง ๋ชจ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ DOM์ ์์ฒด ๊ฒฝ๊ณ ๋ฅผ ํ์ํด์ผ ํ๋ค๊ณ ์์ํด ๋ณด์ธ์. ์ด์ฒด์ ๋๊ตญ์ด ๋ ๊ฒ์ ๋๋ค.
๊ฐ๋ฐ์๊ฐ ์์ฒด ๊ฐ๋ฐ ๋ชจ๋๋ฅผ ์ฌ์ฉํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๋๋ฌด ๋ง์ต๋๋ค. process.env.NODE_ENV
๋ฅผ production
๋ก ์ค์ ํ๋ ๊ฒ์ ์ด๋ฏธ ๋ธ๋ผ์ฐ์ ์ฉ ๋ชจ๋ ๋ฒ๋ค์ ์ผ๋ฐ์ ์ธ ํ์ค์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์ด๊ฒ์ด ์ฐ๋ฆฌ๊ฐ ์ธ์์ ๊ฐ์ ํ๊ธฐ ์ํด ํ์ํ ๊ฒ์
๋๋ค.
๋๋ React ๋ฌธ์๊ฐ ๊ฐ๋ฐ ๋น๋์ ํ๋ก๋์ ๋น๋ ์ฌ์ด์ ์ฐจ์ด๊ฐ ์๋ค๋ ๊ฒ์ ๋์ ๋๊ฒ ๋ณด์ฌ์ฃผ์ง ์๋๋ค๋ ๋ฐ ๋์ํฉ๋๋ค. ๋ฌธ์๋ฅผ ์ด ๋ ๊ณ ๊ธ ๊ฐ์ด๋ ๋ฅผ ํตํด ๊ฐ๋ฐ ๋น๋์ ํ๋ก๋์ ๋น๋์ ์ฐจ์ด์ ์ ์ฝ์ด์ผ ํฉ๋๋ค. ์ ๋ชฉ์ Optimizing Performance ์ ๋๋ค. ์ด๋ณด์๋ค์ React๊ฐ ๋น ๋ฅด๋ค๊ณ ๋ค์๊ธฐ ๋๋ฌธ์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์ ๋ ๋ณด์ง ์์ ๊ฒ์ ๋๋ค. ๋น ๋ฅธ ์์ ์น์ ์์ "ํ๋ก๋์ ์์ React ์ฌ์ฉ" ๋๋ ์ด์ ์ ์ฌํ ์ ๋ชฉ์ ๋ค๋ฅธ ๋ฌธ์๋ฅผ ๊ฐ๋๋ก ๋ฌธ์๋ฅผ ๊ฐ์ ํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ด๋ณด์๋ ์ผ๋ฐ์ ์ผ๋ก ๊ณ ๊ธ ๊ฐ์ด๋๋ฅผ ์ฝ์ง ์์ง๋ง ์ ๋ชฉ์ด ์ถฉ๋ถํ ๋ช ํํ๊ณ ์ค์ํด ๋ณด์ด๋ ๊ฒฝ์ฐ ๋น ๋ฅธ ์์์์ ์ผ๋ถ ๋งํฌ๋ฅผ ์ฝ๋๋ค. ๋ด๊ฐ React๋ฅผ ๋ฐฐ์ฐ๊ธฐ ์์ํ ๋ ํ๋ ์ผ์ด๊ธฐ ๋๋ฌธ์ ๊ทธ๋ ๊ฒ ํ๋ค๋ ๊ฒ์ ์๋๋ค. ์์ ์๋ด์๋ ์ฝ์ง ์์์ง๋ง ๋น ๋ฅธ ์์ ์น์ ์ ์ผ๋ถ ํ์ด์ง๋ ์ฝ์์ต๋๋ค.
์ฐ๋ฆฌ๊ฐ ์ทจํ ์ ์๋ ๋ ๋ค๋ฅธ ์ ๊ทผ ๋ฐฉ์์ React๊ฐ ๋ฌธ์์ ๋ํ ํด๋น ์ง์ ์ ์์ ํ๊ธฐ ์ํ ๋งํฌ์ ํจ๊ป ๊ฐ๋ฐ ๋ชจ๋์์ ์ฌ์ฉ๋ ๋ ์ฝ์์ ๊ฒฝ๊ณ ๋ฅผ ํ์ํ๋ ๊ฒ์ ๋๋ค. ๊ฐ๋ฐ์๋ฅผ ์ํด ํ๋ก๋์ ํ๊ฒฝ์์ ์ฝ์์ ์ฌ๋ ๊ฒ์ ๋๋ฌธ ์ผ์ด์ง๋ง ๊ฐ๋ฐํ ๋ ๋ก์ปฌ ํ๊ฒฝ์์๋ ํ์คํ ์ฝ์์ด ์ด๋ฆฝ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๋ก์ปฌ์์ ๊ฐ๋ฐํ ๋ ํ๋ก๋์ ์ ๊ฒ์ํ๊ธฐ ์ ์ ํด์ผ ํ ์ผ์ด ์์์ ์๊ฒ ๋ฉ๋๋ค.
์ฝ์ ๊ฒฝ๊ณ ์๋ ๋ถ๊ตฌํ๊ณ http://code.gov ๊ฐ ์์๋์์ต๋๋ค. ์ด๊ฒ์ด ๋ฐ๋ก ์ฐ๋ฆฌ๊ฐ ์๋ฐฉํด์ผ ํ๋ ์ข ๋ฅ์ ๊ฒ์ ๋๋ค. (ํด๋น ์ฌ์ดํธ๋ Angular์ด์ง๋ง React์๋ ๋์ผํ๊ฒ ์ ์ฉ๋ฉ๋๋ค)
๋๊ตฌ๋ ์ง ๊ทธ๋ค์๊ฒ ์ฐ๋ฝํ๊ฑฐ๋ PR์ ๋ณด๋ด๋ ค๋ ๊ฒฝ์ฐ code.gov์ ๋ํ ๋ฌธ์ ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. https://github.com/presidential-innovation-fellows/code-gov-web/issues/221
Angular 2 is running in the development mode. Call enableProdMode() to enable the production mode.
์ ๋ Angular 2๋ฅผ ์ฌ์ฉํ ์ ์ด ์์ต๋๋ค(์ด ๊ฒฝ์ฐ ์ด๋ณด์๊ฐ ๋จ). ๊ฒฝ๊ณ ๋ฅผ ๋ณธ ํ์ ์ด๊ธฐ ๋ฐ์์ enableProdMode()
๋ฅผ ํธ์ถํ๋ ค๊ณ ํ๋ค๋ ๊ฒ์
๋๋ค. ์๋ํ์ง ์์ต๋๋ค. Angular ์ผ์ด์ค์ ๋ํ ์ฝ์ ๋ฉ์์ง๊ฐ ๊ฐ์ ๋ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋ง๋ฒ์ ์์กดํ๋ ๋์ ๋ฌธ์๋ฅผ ๊ฐ๋ฆฌ์ผ์ผ ํฉ๋๋ค.
Angular ๋ฌธ์๋ฅผ ์ด๋ฉด ํ๋ก๋์ ๋น๋์ ๋ํด ์๋ฌด ๊ฒ๋ ๋ณผ ์ ์์ต๋๋ค. ๋๋ ์ด๊ฒ์ด Angular์ React ๋ชจ๋์ ๋ฌธ์ ๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๋ ๋ค dev ๋ชจ๋๋ฅผ ์ฌ์ฉํ์ง๋ง ๋ฌธ์์ ์๋ ์ฌ๋๋ค์๊ฒ ๋นํ์ฑํํ๋ ๋ฐฉ๋ฒ์ ์๋ ค์ฃผ์ง ์์ต๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๋ฌธ์ ๊ฐ์ ์ด ๊ฐ๋ฐ์ ๊ต์ก์ ํฐ ๋์์ด ๋ ์ ์์ต๋๋ค.
๊ฐ๋ฐ์๊ฐ "์ค์"๋ฅผ ํ ๋ ์ฌ์ฉ์ ๊ฒฝ๊ณ ๋ฅผ ํ์ํ๋ ๊ฒ์ ๋ฐ๋ํ์ง๋ ์์ง๋ง ์์์ DOM ์์๋ฅผ ์ฝ์ ํ๋ ๊ฒ์ ๋ฐฉํด๊ฐ ๋ฉ๋๋ค. ๋๋ ๋ธ๋ผ์ฐ์ ๊ฐ ์ฌ์ดํธ๊ฐ ์์ ํ์ง ์๋ค๋ ๊ฒ์ ๋ณด์ฌ์ฃผ๋ ์ ์ฉ UI๋ฅผ ๊ฐ์ง๊ณ ์๋ ๋ธ๋ผ์ฐ์ ๊ฐ HTTPS ๋ฌธ์ ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ์ข์ํฉ๋๋ค. ์ฑ๋ฅ ๊ด๋ จ ์ํ์ ๋ํ ์ ๋ณด๊ฐ ์์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์น ์ฑ๋ฅ์ ๋ํ ์ฐ๋ ค๊ฐ ๋์์ง๋ ๊ฒ์ ๊ฐ์ํ ๋ ๋ธ๋ผ์ฐ์ ๊ณต๊ธ์ ์ฒด๊ฐ ์ฌ์ฉ์์๊ฒ ๋ฐฉ๋ฌธํ๋ ์ฌ์ดํธ๊ฐ ํํธ์๋ค๊ณ ๋งํ ์ ์๋ ๋ฐฉ๋ฒ์ ์ ์ํ์ง ์๋ ์ด์ ๋ฅผ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
์ด๊ฒ์ ๋๊ตฌ ์์ค์์ ํด๊ฒฐ๋์ด์ผ ํ๋ฏ๋ก webpack๊ณผ Babel์ ๊ฐ๋ฐ์์๊ฒ NODE_ENV ์ค์ ์ ์ด์ ์ ์๋ฆด ์ ์์ต๋๋ค.
@pveyes ๋์ํ์ต๋๋ค. Angular ํ์ ๋ํด์๋ ๊ฐ์ ์ง์ ์ ํ์ต๋๋ค.
@matthewp ์ด https://github.com/presidential-innovation-fellows/code-gov-web/issues/129 ์ ๋ํ ํจ์ฌ ์ค๋๋ ๋ฌธ์ ๊ฐ ์์ผ๋ฉฐ Angular ํ์ด ์ง์ ์ฐ๋ฝํ์ฌ ์์ ์ฌํญ์ ์ ๊ณตํ์ต๋๋ค. ๊ทธ๊ฒ์ ์ ์ฉํ๋ ค๋ ์์ ์๋ง. ์ง๋ฌธ์ DOM ๊ฒฝ๊ณ ๊ฐ ์ด ์์ ์ฌํญ์ ๋ ๊ธด๊ธํ๊ฒ ๋ง๋ค์์ต๋๊น? ์๋๋ฉด ์ฒ์๋ถํฐ ๊ฐ๋ฐ ๋ชจ๋์์ ์์ํ์ง ๋ชปํ๊ฒ ํ์ต๋๊น?
์ง๋ฌธ์ DOM ๊ฒฝ๊ณ ๊ฐ ์ด ์์ ์ฌํญ์ ๋ ๊ธด๊ธํ๊ฒ ๋ง๋ค์์ต๋๊น? ์๋๋ฉด ์ฒ์๋ถํฐ ๊ฐ๋ฐ ๋ชจ๋์์ ์์ํ์ง ๋ชปํ๊ฒ ํ์ต๋๊น?
๊ทธ๋ค์ ๊ฐ๋ฐ ๋จ๊ณ์์ ๊ฒฝ๊ณ ๋ฅผ ๋ณผ ๊ฐ๋ฅ์ฑ์ด ๋์ผ๋ฉฐ Google์์ ๋นํ์ฑํํ๊ณ ๋นํ์ฑํํ๋ ๋ฐฉ๋ฒ์ ์ ์ ์์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ์์ด ๋ฒ๋ฆฌ๊ธฐ ๋๋ฌธ์ ๋ฏธ๋์ ๊ทธ๊ฒ์ ๊นจ๋ซ์ง ์๊ณ ๊ฐ๋ฐ ๋ชจ๋๋ก ๋ฐฐํฌํ์ต๋๋ค. ๊ฐ๋ฐ ์ค์๋ ํ๋ก๋์ ์ฒ๋ผ ๋ณด์ด๊ธฐ๋ฅผ ์ํ๋ฏ๋ก ์์์ DOM ์ฒญํฌ๊ฐ ์ฝ์ ๋ ์ ์์ต๋๋ค. ์์ฐ์ ๋ํ๋ด๋ ๊ฒ์ด ์๋๊ธฐ ๋๋ฌธ์ QA ๋๋ ์คํ ์ด์ง ์์คํ ์ด ์ด๊ฒ์ ๋ณผ ์ ์์ต๋๋ค.
๋ฐ๋ผ์ ์ฌ์ดํธ์ UX๋ฅผ ๋ง์น๋ ์ด๊ฒ์ ๋นํ์ฑํํ๋ ๋ง์ ์ ํฌ ์ฝ๋๋ก ๋๋ฉ๋๋ค. ๊ฐ๋ฐ ์ค์ ๋นํ์ฑํํ ์๋ ์์ง๋์ด๊ฐ ๋ฐ๋์ ๊ธฐ์ตํ๋ ๊ฒ๊ณผ๋ ๋ค๋ฆ ๋๋ค. ๊ทธ๋ค์ ์์ฐ์ ๋ค์ด๊ฐ๊ธฐ ์ ์ ์ด๋ํ์ ์๋ ์์ต๋๋ค.
code.gov์์ ๋ฐฐํฌ ํ๋ก์ธ์ค๊ฐ ์ด๋ป๊ฒ ์๋ํ๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ง๋ง ์ค์๋ก ๊ฐ๋ฐ ๋ชจ๋๋ฅผ ํ๋ก๋์ ์ ๋ฐฐํฌํ๋ ๊ฒ๋ณด๋ค ์ ๋ถ ๊ณ์ฝ์๋ก์ ๊ฒฝํํ ๊ฒ๊ณผ ๊ฐ์ ๊ฒฝ์ฐ ๋ค์ ์ค ํ๋๋ฅผ ์ํํฉ๋๋ค.
์ ์ฒด ๋ฐฐํฌ๋ฅผ ๊ฐ์ ๋ก ๋กค๋ฐฑ(์ผ๋ถ๋ ์น์ธ์ ๋ฐ๊ณ UI ๋ณ๊ฒฝ์์ ์๋ฒ ์ํํธ์จ์ด ์ ๋ฐ์ดํธ์ ์ด๋ฅด๊ธฐ๊น์ง ๋ชจ๋ ๊ฒ์ ๋ฒ๋ค๋ก ๋ฌถ๋ ๋ฐ 6๊ฐ์์ด ์์๋จ)ํ๊ณ ์๋ง๋ ๋ค์ ๋ ์ ๋ฐ์ํ ์ผ์ ๋ํ ํ์์ ํ์ ๋ฌธ์ ์์ ์ ๋ฐ๊ฒ ๋ฉ๋๋ค. ์ ๋ฐฐํฌ ์ฐฝ ์์ฝ(UI์ ๋จ์ผ ๊ฒฝ๊ณ ๋๋ฌธ์ DB ์คํฌ๋ฆฝํธ๋ ์๋น์ค ๋๋ ๊ธฐํ ๋ชจ๋ ๊ฒ์ด ๊ฐ๋ฐ ๋ชจ๋์ ์๋์ง ๊ณ์ํด์ ๋ฌป์ต๋๋ค.) ๋๋ ์ด๊ฒ์ด ์์ฃผ ์ฌ์ํ ์ผ์ ์ผ์ด๋๋ ๊ฒ์ ๋ณด์์ต๋๋ค. ๋๋ก๋ YMMV๊ฐ ์๋ ์์ธ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
์ฌ์ฉ์๊ฐ ์์์ฐจ๋ฆฌ๋ฉด ์์ ๋์ง๋ง ์ํฅ์ ๋ฏธ์น์ง ์์ ๊ฐ๋ฅ์ฑ์ด ๋๊ธฐ ๋๋ฌธ์ ๋ค์ ๋ฐฐํฌ ์ฐฝ๊น์ง ๊ธฐ๋ฅ์ด ์ ๋ฐ์ดํธ๋์ง ์์ต๋๋ค. ๋ฐ๋ผ์ ๋ชจ๋ ์ฌ์ฉ์๋ ๋ช ์ฃผ ๋๋ ๋ช ๋ฌ ๋์ ๋ณผ ์ ์์ต๋๋ค.
์ ์ด๋ ๋ด ๊ฒฝํ์ ๊ทธ๋ฌ๋ค. ์์ ์ ๋ฐฐํฌ ์งํ DOM ์นจ์ ์ด ๊ฐ์ง๋๋๋ผ๋ ํด๋น ์ธํ๋ผ/ํ๋ก์ธ์ค๊ฐ ์ด๋ค ๊ฒ์ธ์ง ์ ์ ์์ผ๋ฉฐ ์ฆ์ ์์ ํ ์ ์๋ ๊ฒ์ด ์๋ ์๋ ์์ต๋๋ค(ํ ์ ์์ด์ผ ํจ์๋ ๋ถ๊ตฌํ๊ณ ).
๊ฒฝ๊ณ ๋ฉ์์ง๋ #7360(๋ ธ๋์ ์์)์ด ๋ณํฉ๋ ๋ ๋ ๋์ ๋๊ฒ ๋ฉ๋๋ค. ๋ ธ๋์ ์์์ ๋ฉ์์ง๋ฅผ ์ถ๊ฐํ ์๋ ์์ต๋๋ค("React Development Mode Warnings"๋ผ๊ณ ํฉ๋๊น?).
Angular ๋ฌธ์๋ฅผ ์ด๋ฉด ํ๋ก๋์ ๋น๋์ ๋ํด ์๋ฌด ๊ฒ๋ ๋ณผ ์ ์์ต๋๋ค. ๋๋ ์ด๊ฒ์ด Angular์ React ๋ชจ๋์ ๋ฌธ์ ๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๋ ๋ค dev ๋ชจ๋๋ฅผ ์ฌ์ฉํ์ง๋ง ๋ฌธ์์ ์๋ ์ฌ๋๋ค์๊ฒ ๋นํ์ฑํํ๋ ๋ฐฉ๋ฒ์ ์๋ ค์ฃผ์ง ์์ต๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๋ฌธ์ ๊ฐ์ ์ด ๊ฐ๋ฐ์ ๊ต์ก์ ํฐ ๋์์ด ๋ ์ ์์ต๋๋ค.
์ค์น ํ์ด์ง์ ์์ต๋๋ค.
https://facebook.github.io/react/docs/installation.html#development-and-production-versions
์ฑ๋ฅ ์ต์ ํ:
https://facebook.github.io/react/docs/optimizing-performance.html#use -the-production-build
๋๋ ๋ฌธ์๊ฐ ๊ทธ๊ฒ์ ๋ํด ์ ํํ์ง ์๋๋ค๊ณ ๋งํ๋ ๊ฒ์ ๊ณต์ ํ์ง ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋ฌธ์๋ฅผ ์ด ๋ ๊ณ ๊ธ ๊ฐ์ด๋๋ฅผ ํตํด ๊ฐ๋ฐ ๋น๋์ ํ๋ก๋์ ๋น๋์ ์ฐจ์ด์ ์ ์ฝ์ด์ผ ํฉ๋๋ค. ์ ๋ชฉ์ Optimizing Performance์ ๋๋ค. ์ด๋ณด์๋ค์ React๊ฐ ๋น ๋ฅด๋ค๊ณ ๋ค์๊ธฐ ๋๋ฌธ์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์ ๋ ๋ณด์ง ์์ ๊ฒ์ ๋๋ค. ๋น ๋ฅธ ์์ ์น์ ์์ "ํ๋ก๋์ ์์ React ์ฌ์ฉ" ๋๋ ์ด์ ์ ์ฌํ ์ ๋ชฉ์ ๋ค๋ฅธ ๋ฌธ์๋ฅผ ๊ฐ๋๋ก ๋ฌธ์๋ฅผ ๊ฐ์ ํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋ฐ๋ก ์ฒซ ๋ฒ์งธ ํ์ด์ง(์ค์น)์ ์์ต๋๋ค.
https://facebook.github.io/react/docs/installation.html#development-and-production-versions
๋ค๊ฐ ์ณ์. ๋ฏธ์ ๋ด ์ค์. ๋๋ ํ๋ก๋์ ๋น๋๊ฐ ๋ค๋ฅธ ์น์ ์ ์๋ค๊ณ ๊ฐ์ ํ์ฌ ๊ฑฐ๊ธฐ๋ฅผ ๋ณด์ง ์๊ณ ๋์ ์ฌ์ด๋๋ฐ์์ ๊ด๋ จ ์ ๋ชฉ์ ๊ฒ์ํ์ต๋๋ค(์ต์ ํ ์ฑ๋ฅ ํ์ด์ง๋ฅผ ์ฐพ์์ต๋๋ค). ๋ด๊ฐ ๋ ์ ์์์ด์ผ ํ๋ค.
์ ๋ React์ ์ด๋ณด์๊ฐ ์๋๋๋ค. ๊ทธ๋์ ๋ด ๊ฐ์ ์ ํ์ธํ๊ธฐ ์ํด ๋ฌธ์๋ฅผ ์ด ๋ - React ๋ฌธ์๋ prod vs dev์ ๋ํด ์ฌ์ ์ ์์ง ์์ต๋๋ค - ์ค์น ๋ฌธ์๋ฅผ ์ด์ง ์์์ต๋๋ค ๐
๊ฑฑ์ ๋ง. ๋์ ์ ๋์ง ์์ผ๋ฉด ๋ ๋์ ๋ฐฐ์น๋ฅผ ์ํ ์ ์์ ๋ฐ์ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ์ ์ฉ ํ์ด์ง๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค( Deploying to Production
).
์ด ๋ฌธ์ ๋ ํด๊ฒฐํด์ผ ํ ์ค์ํ ๋ฌธ์ ์ด์ง๋ง ๊ฐ์กฐํด์ผ ํ ๊ฐ์ฅ ์ค์ํ ๋ฌธ์ ๊ฐ ์๋์ ์์ง ๋ง์ญ์์ค. ๋๋ ๋ํ ์ฌ๋๋ค์ด ๊ทธ๊ฒ์ ๋ณด๊ณ ํ์ํ๊ณ ์์ด๋ฒ๋ฆฌ๊ณ "๋ด๊ฐ ํ๋ ์ผ์ ์๊ณ ์๋ค"๊ณ ์๊ฐํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๋งจ ์ ํ์ด์ง์ ๊ฐ์กฐ ํ์๋๋๋ผ๋ ์ถฉ๋ถํ ๊ฒ์ด๋ผ๊ณ ํ์ ํ์ง ๋ชปํฉ๋๋ค. ๊ทธ๋์ ๋๋ ๋ฌธ์์ ๋ํด ์ง๋์น๊ฒ ํผ๋ฒํ์ง ์์ ๊ฒ์ ๋๋ค.
์ด๋ฅผ ํด๊ฒฐํ๋ ์ ์ผํ ์ค์ ๋ฐฉ๋ฒ์ ๊ฐ์งํ๊ณ ์๋ฆฌ๋ ๊ฒ์ ๋๋ค.
@KrisSiegel ํ๋น์ฝ์ด ์บ์๋๋ ๊ฒ์ ์ข์ ์ ์ ๋๋ค. 1~2์ด ํ์ ์ ํํ ๋ค์ ๋ช ์ด๋ง๋ค ์งง๊ฒ ๋ค์ ๋ค์ง์ด์ผ ํ๋์ง ๊ถ๊ธํฉ๋๋ค. ๊ทธ๋ ๊ฒํ๋ฉด ์บ์ฑ ๋ฐ ๋ถ๋งํฌ ๋ฌธ์ ๊ฐ ์ฌ์ ์ ๋ ์์ด์ฝ ์๊ฐ์ ์๊ฐ์ ๋ง์ถ ๊ฐ๋ฅ์ฑ์ด ๊ฑฐ์ ์์ต๋๋ค.
๋๋ favicon์ ๋ํ JS ์กฐ์์ด ์บ์๋์ง ์๋๋ค๊ณ ์๊ฐํ์ง๋ง ์๋ง๋ ๋ด๊ฐ ํ๋ฆด ์ ์์ต๋๋ค.
๋๋ ์ด๊ฒ์ ์ํ ํํฌ๋ฅผ ๊ฐ๋ ์ ์ ํ ์ฅ์๊ฐ Chrome์ด๋ Firefox๊ฐ ์๋๋ผ webpack, Browserify ๋๋ Rollup์ด๋ผ๊ณ ์ฃผ์ฅํ๊ณ ์ถ์ต๋๋ค.
React์ฉ ํ๋ก๋์ ๋ฒ๋ค๋ก ์๋๋์์ง๋ง ํ๋ก๋์ ๋ชจ๋๋ฅผ ํ์ฑํํ์ง ์๊ณ ๋น๋ํ๋ ๊ฒ์ ๋น๋ ์ค๋ฅ์ผ ๋ฟ์ ๋๋ค. ๋ฐํ์์ ์ด๊ฒ์ ํ์ํ๋ ๋ฐฉ๋ฒ์ ๋ํ ํฉ์๊ฐ ์๋ ์ด์ ๋ ์ด๊ฒ์ด ๋ฐํ์์ ์ฒ๋ฆฌ๋์ด์ผ ํ๋ ๋ฌธ์ ๊ฐ ์๋๋ผ๋ ์ ์ ๋ฐ์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
@taion ๋์ํฉ๋๋ค. ๋๋ ์ด๊ฒ์ด ํ์คํ DOM์ด ์๋ ๋น๋ ๋๊ตฌ์ ์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋ ธ๋ env๊ฐ ํ๋ก๋์ ์ฝ๋์ ๋ํด ํ๋ก๋์ ์ผ๋ก ์ค์ ๋์ด์ผ ํ๋ค๊ณ ๊ฐ์ ํ๋ ๋น๋ ๋๊ตฌ ์ฅ์์ฌ์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋ชจ๋ ํ๋ก์ ํธ์ ํ์ํ ๊ฒ์ ์๋์ง๋ง ์ข์ ๊ฐ์ ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
npm run build
๊ฐ ํฐ๋ฏธ๋์์ ์คํ๋๊ณ ํ๊ฒฝ์ด ํ๋ก๋์
์ผ๋ก ์ค์ ๋์ง ์์ ๊ฒฝ์ฐ ๊ธฐ๋ณธ ์ถ๋ ฅ๊ณผ ํจ๊ป ํฐ๋ฏธ๋์ ๋นจ๊ฐ์ ๊ฒฝ๊ณ ๊ฐ ํ์๋์ด์ผ ํฉ๋๋ค. env is not set to production, some scripts may be in development mode
ํ์ฌ webpack์์ ๊ทธ๋ฌํ ๊ฒฝ๊ณ ๋ฅผ ๋ฐ์ง ์์ต๋๋ค.
ํธ์ง: ์ถ๊ฐ ์ค๋ช
์๋๋ฉด ์ ๋ง NODE_ENV๋ฅผ ์ค์ ํ์ญ์์ค.
์ฝ์ ๊ฒฝ๊ณ ๊ฐ ์๋ํ์ง ์์ผ๋ฉด ๋น๋ ๊ฒฝ๊ณ ๊ฐ ์๋ํ ์ง ํ์ ํ ์ ์์ต๋๋ค.
๋น๋๋ ์ฌ์ฉ์๋ฅผ ์ํด ๊ตฌ์ฑํด์ผ ํ๋ฉฐ, ๊ทธ๋ ์ง ์์ผ๋ฉด ํ๋ก๋์ ์ฉ์ผ๋ก ์๋ชป ๊ตฌ์ฑ๋๋ฉด ์คํจํฉ๋๋ค. ์ ์ด๋ React์ ๊ฒฝ์ฐ ์ด _is_ ๋น๋ ์๊ฐ ํ๋๊ทธ์ ๋๋ค.
@jakearchibald ์ผ๋ถ ์ฌ๋๋ค์ ์ฌ์ ํ โโ๋ฌด์ํ ๊ฒ์ด๋ผ๊ณ ํ์ ํ์ง๋ง, ํ๋ก๋์ ํ๊ฒฝ์์๋ ์ ๋ ์ด๋ฆฌ์ง ์์ ์ ์๋ ๋ธ๋ผ์ฐ์ ์ฝ์์ ๊ฒฝ๊ณ ๊ฐ ์จ๊ฒจ์ ธ ์๊ธฐ ๋๋ฌธ์ ํ์๋์ง ์๋ ๋์ ์ต์ํ ๋น๋ํ ๋ ๊ฒฝ๊ณ ๊ฐ ํ์๋ ๊ฒ์ ๋๋ค. . ๊ฐ์ฅ ์ค์ํ ๊ฒ์ ๊ฒฝํ์ด ์ ์ ์ฌ๋๋ค์๊ฒ ์ฝ๋ ์์ฐ์ ์ค๋นํ๊ธฐ ์ํด ๋ฌด์์ ํด์ผ ํ๋์ง์ ๋ํ ๋จ์๋ฅผ ์ ๊ณตํ๋ค๋ ๊ฒ์ ๋๋ค.
๋ง์ ๊ฐ๋ฐ์๊ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ ๋ฐ์ดํธํ์ง๋ง ์นํฉ ๋ฐ ๋ ์ผ๋ฐ์ ์ผ๋ก ๋๊ตฌ๋ฅผ ์ ๋ฐ์ดํธํ์ง ์๋ ๊ฒ์ด ์ผ๋ฐ์ ์ ๋๋ค. ๋ง์ ์ฌ๋๋ค์ด ์นํฉ์ด ์ ๋๋ก ์๋ํ๋ค๊ณ ๊ฐ์ ํ๊ณ ์นํฉ ๋ฐ ๊ณต๋ ์ ๋ฐ์ดํธ๋ฅผ ์ ๋ฐ์ดํธํ๋ ๊ฒ์ด ์ด๋ ค์ธ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
React์ฉ ํ๋ก๋์ ๋ฒ๋ค๋ก ์๋๋์์ง๋ง ํ๋ก๋์ ๋ชจ๋๋ฅผ ํ์ฑํํ์ง ์๊ณ ๋น๋ํ๋ ๊ฒ์ ๋น๋ ์ค๋ฅ์ผ ๋ฟ์ ๋๋ค.
CDN์์ ๋ฏธ๋ฆฌ ํจํค์ง๋ ๋ฒ์ ์ React๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๋ ์ง์๋๋ ๊ตฌ์ฑ ์ด์ง๋ง ํด๋น ์ํฌํ๋ก์๋ ๋น๋ ๋จ๊ณ๊ฐ ์ ํ ์์ต๋๋ค. ๋ฐ๋ผ์ ๋น๋์๋ง ์ด์ ์ ๋ง์ถ ์ด ๋ฌธ์ ์ ๋ํ ์๋ฃจ์ ์ CDN ์ฌ์ฉ ์ฌ๋ก๋ฅผ ๋ฌด์ํฉ๋๋ค.
๋๋ ์์งํ ๊ทธ๊ฒ์ ๋ํด ์ด๋ป๊ฒ ๋๋ผ๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ๋๋ React CDN ์ฌ์ฉ์ ๋ํ ๊ฐ๋ฐ์ ๊ฒฝ๊ณ ๋ฅผ ๊ฐ๋ ๊ฒ์ ๋ํ ์ฐฌ์ฑ๊ณผ ๋ฐ๋ ๋ชจ๋๋ฅผ ๋ณผ ์ ์์ต๋๋ค.
@taion ๋น๋ ์ ์ฉ ์๋ฃจ์ ์ ์ง์ํ๋ ์ฌ๋์ผ๋ก์ ์ด๊ฒ์ด ๋ค๋ฃจ์ด์ผ ํ ์ค์ํ ์ฌ์ฉ ์ฌ๋ก๋ผ๊ณ ์๊ฐํ์ญ๋๊น?
๋ค๋ฅธ ๋ถ๋ค์ ์ด๋ป๊ฒ ์๊ฐํ์๋์?
๊ฑฐ๊ธฐ์ ์๋ ๋ฌธ์๋ ํ๋ก๋์
์ .min.js
๋ฒ๋ค์ ์ฌ์ฉํด์ผ ํ๋ค๋ ๊ฒ์ด ๊ฝค ๋ถ๋ช
ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์๋ง๋ ๊ตต๊ณ ๋ ํฐ ๊ธ๊ผด ํฌ๊ธฐ์ ๊ฐ์ ๊ฒ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋๊ตฐ๊ฐ๊ฐ ์น ์ฌ์ดํธ๋ฅผ ์ํด ํ๋ก๋์
์์ ์ถ์๋์ง ์์ React ๋ฒ๋ค์ ์ฌ์ฉํ๊ณ ์๋ค๋ฉด ์ด์จ๋ ๋ค๋ฅธ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
๊ฑฐ๊ธฐ์ ์๋ ๋ฌธ์์๋ ํ๋ก๋์ ์ .min.js ๋ฒ๋ค์ ์ฌ์ฉํด์ผ ํ๋ค๋ ๊ฒ์ด ๊ฝค ๋ถ๋ช ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋์ํ์ง๋ง React๋ฅผ npm ํจํค์ง๋ก ํฌํจํ๋ ๊ฒฝ์ฐ ํ๋ก๋์ ์ฉ ๋น๋ ๋๊ตฌ๋ฅผ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ์ ๋ํ ํ์ด์ง๋ ๋งค์ฐ ๋ช ํํฉ๋๋ค. ์ด ๋ฌธ์ ์ ์์ ์ ๋ฌธ์์ ํด๋น ํ์ด์ง๋ฅผ ์ฃผ์ ๊น๊ฒ ์ฝ์ง ์๋ ์ฌ๋๋ค์ ์ํด ์ฑ๊ณต์ ๊ตฌ๋ฉ์ด๋ฅผ ๋ง๋ค๋ ค๋ ๊ฒ์ด์์ต๋๋ค.
๊ทธ๋ฌ๋ ๋์ํ์ง ์์ ์ ์์ผ๋ฉฐ CDN์ dev ๋น๋๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ ์ ๊ทน์ ์ธ dev ๊ฒฝ๊ณ ๋ก ์๋ฐฉํ๋ ๋ฐ ์ค์ํ ๊ฒฝ์ฐ๊ฐ ์๋๋ผ๊ณ ์๊ฐํ๋ ๊ฒ์ฒ๋ผ ๋ค๋ฆฝ๋๋ค. ๊ทธ๊ฒ์ด ๋น์ ์ ์ ์ฅ์ ๋ํ ๊ณต์ ํ ์์ฝ์ ๋๊น, ์๋๋ฉด ์ ๊ฐ ์ฝ๊ฐ์ ๋์์ค๋ฅผ ๋์น๊ณ ์์ต๋๊น?
CDN+dev ๊ตฌ์ฑ์ ์ฌ์ฉ์๊ฐ React์ ์ถ์๋์ง ์์ ๋น๋๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค๋ ์ ์์ ๋ ๋ช ๋ฐฑํ๊ฒ ์๋ชป๋ ๊ตฌ์ฑ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์ถ์๋ ๋น๋๋ฅผ ์ฌ์ฉํ๋ ๋ฐ ํ์ํ ์ง์์ ๋ถ๋ด์ด ๋ ์ ๊ธฐ ๋๋ฌธ์ ์ด๋ฌํ ๋ฐฉ์์ผ๋ก ์คํจํ๋ ๊ฒ์ด ๋ ์ด๋ ต์ต๋๋ค.
webpack ๋๋ Browserify์์ ์ถ์๋ฅผ ์คํํ๊ธฐ ๋๋ฌธ์ ํ๋ก๋์
์ค๋น๊ฐ ๋ ๊ฒ _์๊ฐ_ ํ๋ ๊ตฌ์ฑ์ด์ง๋ง ์ค์ ๋ก๋ NODE_ENV
๋ฅผ ์ค์ ํ์ง ์์๊ธฐ ๋๋ฌธ์ ๊ทธ๋ ์ง ์์ต๋๋ค. CDN ๋ฒ๋ค์ ํตํด ์ด๋ฅผ ์ป์ ์ ์์ต๋๋ค.
Chrome Developer Tools
์ React
ํญ์ ์ฐ๋ฆฌ๊ฐ DEV Mode
์ ์๋์ง ์๋ ค์ฃผ๊ธฐ์ ์ถฉ๋ถํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
๊ฐ๋ฐ ๋ชจ๋์์ ํ์ด์ง์ DOM ์์๋ฅผ ์ฃผ์ ํ๋ ํ๋ ์์ํฌ์ ๋ํ ๋ช ๊ฐ์ง ์ ๋ก๊ฐ ์๋ค๋ ์ ์ ์ฃผ๋ชฉํ ๊ฐ์น๊ฐ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
http://symfony.com/blog/new-in-symfony-2-8-redesign-web-debug-toolbar
๋ด๊ฐ ๋งํ ์์๋ ํ ์ด๊ฒ์ด ๊ธฐ๋ณธ์ ์ผ๋ก ์ผ์ ธ ์๋ค๊ณ ์๊ฐํ์ง ์์ต๋๋ค.
์์ ๋ ผ์์ ๋ฐ๋ฅด๋ฉด ๋ชจ๋ ์ ์ฝ ์กฐ๊ฑด์ ์ถฉ์กฑํ์ง๋ง ๋ชจ๋ ์ฌ๋์ด ๊ฐ๋ฐ ๋ชจ๋์์ ์คํํ์ง ์์์ผ ํ ๋ ์์ ์ ์ผ๋ก ์ค์งํ๋ ์๋ฒฝํ ์๋ฃจ์ ์ ๋ฌ์ฑํ๋ ค๋ ์ผ๋ฐ์ ์ธ ๋ชฉํ๊ฐ ์๋ ๊ฒ ๊ฐ์ต๋๋ค. OP๋ ๊ฐ๋ฐ์์ ์ฌ์ฉ์๋ฅผ ์ํ ์ ์ฌ์ ๊ฒฝํ ์ฌ์ด์ ์ ์ถฉ์ ์ด ํ์ํ๋ค๊ณ ๋งํ๊ณ ์ด๊ฒ์ด ๋งค์ฐ ์ฌ์ค์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
๋ฌธ์ ๋ฅผ ๋ค์ ์ธ๊ธํ๋ ค๋ฉด:
์ด๋ฌํ ์ ์ ๊ฐ์ํ ๋ ์ ์ ํ ์ฒซ ๋ฒ์งธ ๋จ๊ณ๋ ๊ฐ๋ฐ ๋ชจ๋์ React๊ฐ console.warn
๋๋ console.info
๋ฅผ ํตํด ๊ฐ๋ฐ ๋ชจ๋์ ์์์ ์๋ฆฌ๊ณ ์ด๊ฒ์ด ํ๋ก๋์
์์ ๋นํ์ฑํ๋์ด ์๋์ง ํ์ธํ๋ ์ง์นจ์ด ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์ ๊ฐ.
๋ฌผ๋ก , ์ด๊ฒ์ด ๋ชจ๋ ์ฌ๋์ ์ฌ๋ก์ก์ ์๋ ์์ง๋ง _๊ด์ฐฎ์ ์์์ ๋๋ค_. ์ด๋ ๊ฒ ํ๋ฉด ์ค์๋ก ํ๋ก๋์ ํ๊ฒฝ์ผ๋ก ๋ฐฐ์ก๋๋ ์ฌ๋์ ์๋ฅผ ์ค์ด๊ณ ํฅํ ๊ฐ์ ์ ์ํด ๋ฌธ์ ๋ซ์ง ์์ต๋๋ค.
์ด๋ฌํ ์ ์ ๊ฐ์ํ ๋ ์ ์ ํ ์ฒซ ๋ฒ์งธ ๋จ๊ณ๋ ๊ฐ๋ฐ ๋ชจ๋์ React๊ฐ console.warn ๋๋ console.info๋ฅผ ํตํด ํ๋ก๋์ ๋ฐฐํฌ์ ๋ํด ๋นํ์ฑํ๋์๋์ง ํ์ธํ๋ ์ง์นจ๊ณผ ํจ๊ป ๊ฐ๋ฐ ๋ชจ๋์ ์์์ ์๋ฆฌ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
๊ฐ๋ฐ ์ค์ผ ๋ ๊ฐ๋ฐ ๋ชจ๋์ ์๋ ๊ฒ์ด ์๋ชป๋ ๊ฒ์ ์๋๋๋ค. ๋ค๋ฅธ ์ด๋ค ํด๋ฆฌ์คํฑ์ ์ฌ์ฉํ ์ ์์ต๋๊น?
๋ํ ํ๋ก๋์ ํ๊ฒฝ์์ ์๋ฌด๋ ์ฝ์์ ์ฝ์ง ์๋๋ค๋ ์ ์ ๊ฐ์ํ ๋ ์ถฉ๋ ๋ณด๊ณ ์๋ฃจ์ ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๊ธฐ๋ก๋๋๋ก ์๊ฐ ์ ํ์ ๋์ง ์ ์๋์ง ๊ถ๊ธํฉ๋๋ค.
๊ฐ๋ฐ ์ค์ผ ๋ ๊ฐ๋ฐ ๋ชจ๋์ ์๋ ๊ฒ์ด ์๋ชป๋ ๊ฒ์ ์๋๋๋ค. ๋ค๋ฅธ ์ด๋ค ํด๋ฆฌ์คํฑ์ ์ฌ์ฉํ ์ ์์ต๋๊น?
ํ์ฌ React DevTools ๊ณต์ง์ ์ ์ฌํด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
ํ์ฌ ๊ฐ๋ฐ ๋ชจ๋์ ์์ผ๋ฉฐ ํ๋ก๋์ ์ฌ์ดํธ์์๋ ๊ฐ๋ฐ ๋ชจ๋๋ฅผ ๋นํ์ฑํํด์ผ ํจ์ ์๋ ค์ฃผ๋ ์ ๋ณด ๋ฉ์์ง์ ๋๋ค. ์ด๊ฒ์ (์ด๋ก ์ ์ผ๋ก) ๋ ๋ง์ ๊ฐ๋ฐ์๊ฐ ๊ตฌ๋ณ์ด ์์ผ๋ฉฐ ํ๋ก๋์ ์ฌ์ฉ์ ์ค๋นํ๊ธฐ ์ํด ๋ช ๊ฐ์ง ์กฐ์น๋ฅผ ์ทจํด์ผ ํ๋ค๋ ๊ฒ์ ์ธ์ํ๊ฒ ํด์ผ ํฉ๋๋ค.
๋น์ ์ด ๋งํ๋ฏ์ด ๊ฑฐ์ ์๋ฌด๋ ์ค์ ํ๋ก๋์ ์์ ์ฝ์ ๊ฒฝ๊ณ ๋ฅผ ๋ณด์ง ์์ ๊ฒ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ ์์ ๊น์ง๋ ์ฝ๊ฐ ๋ฆ์ต๋๋ค.
์ ์ง๋ ๋ ์ฝ๋์ฒ๋ผ ๋ค๋ฆฌ๊ฒ ํด์ ๋ฏธ์ํ์ง๋ง ์ฝ์ ๊ฒฝ๊ณ ๊ฐ ์๋ํ์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ์: https://code.gov.
์ ์ง๋ ๋ ์ฝ๋์ฒ๋ผ ๋ค๋ฆฌ๊ฒ ํด์ ๋ฏธ์ํ์ง๋ง ์ฝ์ ๊ฒฝ๊ณ ๊ฐ ์๋ํ์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ์: https://code.gov.
๋จ์ผ ๋ฐ๋ ์ฌ๋ก๋ ๊ทธ๊ฒ์ด ์ค๋ฅ๊ฐ ์๋ค๋ ๊ฒ์ ๋ณด์ฌ์ฃผ์ง๋ง ์ด๋ค ์ ๊ทผ ๋ฐฉ์๋ ๊ทธ๋ ๊ฒ ๋ ๊ฒ์ด๋ผ๊ณ ๋ ์๊ฐํ์ง ์์ต๋๋ค.
์ฝ์ ๊ฒฝ๊ณ ๊ฐ ์ธ์ง๋๋ฅผ ๋์ด๊ณ ์ค์๋ก ๊ฐ๋ฐ ๋ชจ๋๋ฅผ ์คํํ์ง ์์์ผ ํ ๋ ์คํํ๋ ์ฌ๋๋ค์ ์๋ฅผ ์ค์ผ ์ ์๋ค๋ฉด ์ฌ๋ฐ๋ฅธ ๋ฐฉํฅ์ผ๋ก ๋์๊ฐ๋ ๋จ๊ณ์ธ ๊ฒ ๊ฐ์ต๋๋ค. ์๋ฒฝํ ๊ฒ์ ์ ์ ์ ์ด๋ค.
@jakearchibald
์, ํ์ง๋ง code.gov์ ๋น๋ ๋๊ตฌ๊ฐ ์ฌ๊ธฐ์์ ํํฌ์ ํจ๊ป ์ค์ ๋์ด ์๋ค๋ฉด ์ต์ํ ์ด๋ฅผ ์ํด ๋น๋ ํ์ ํํฌ๋ฅผ ์ฌ์ฉํ๋ React์ ์ปจํ ์คํธ์์ ๊ด์ฐฐํ๋ ๋ฌธ์ ๋ฅผ ๋ฐฉ์งํ์ ๊ฒ์ ๋๋ค. ๊ทธ๋ค์ ๊ฒฐ๊ตญ ์นํฉ์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
์นํฉ์ด ๋น๋ ๊ฒฝ๊ณ ๋ฅผ ๋ด๋ณด๋ด์ผ ํ๋ค๊ณ ๋งํ๋ ๊ฒ์ด ์๋๋๋ค. ์ฌ๋ฐ๋ฅธ ์์ ์ webpack์ด process.NODE_ENV
๋ฅผ ์ค์ ํ๊ฑฐ๋ ์ ์ ํ ํ๋ก๋์
๊ตฌ์ฑ ์์ด ํ๋ก๋์
๋น๋๋ฅผ ๋ง๋ค๋ ค๊ณ ํ๋ฉด ํด๋น ์นํฉ์ด ๊ธฐ๋ณธ์ ์ผ๋ก ๋น๋์ ์คํจํ๋ค๋ ๊ฒ์
๋๋ค.
DevTools "์๋ฐ"์ ๋ํ @addyosmani ์ ์ด์ ์์ ์ ์ ์ํ๊ฒ ๋์ํ๊ณ ์ถ์์ต๋๋ค. ์ฐ๋ฆฌ๋ Chrome DevTools์์ ํน์ ์ค๋ฅ์ ๋ํ ๋ ๊ฐ๋ ฅํ ํ์๋ฅผ ๋ณด์ฌ์ฃผ๋ ํ๋กํ ํ์
์ ๋ง๋ค๊ณ ์์ง๋ง ์ด ์์
์ ์์ง ์ด๊ธฐ ๋จ๊ณ์ด๋ฉฐ ์ ๋ @jakearchibald ๊ฐ ๊ฒฝ๊ณ ๋ฅผ ํ์ํ๋ ๋ฐ ๋์ํ๋ ๊ฒฝํฅ์ด ์์ต๋๋ค( console.warn
๋ณด๋ค ๋ ๋ฌด์ญ๋๋ผ๋). ์ถฉ๋ถํ ์ข์ ์๋ฃจ์
์
๋๋ค.
NODE_ENV == 'development'
๋๋ ํธ์คํธ ์ด๋ฆ์ด localhost
/ 127.0.0.1
์ธ ๊ฒฝ์ฐ์๋ง React๋ฅผ ํ๋ก๋์
๋ชจ๋๋ก ๊ธฐ๋ณธ ์ค์ ํ๊ณ ๊ฐ๋ฐ ๋ชจ๋๋ฅผ ์ผ๋ ๊ฒ์ ์ด๋ป์ต๋๊น? ๋๋ถ๋ถ์ ๊ฐ๋ฐ์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ๋ฐ๋ฅธ ๋์์ ์ป์ ์ ์์ผ๋ฉฐ ์ ๋ง๋ก ํ์ํ ๊ฒฝ์ฐ ๊ฐ๋ฐ ๋ชจ๋๋ฅผ ์๋์ผ๋ก ๊ฐ์ ์คํํ๋ ๋ฐฉ๋ฒ์ด ํญ์ ์์ต๋๋ค.
ํญ์ ์๋นํ ๋ณต์กํ ์กฐ๊ฑด๋ถ(๋ ธ๋์์ ์คํจํ์ง ์์์ผ ํ๊ธฐ ๋๋ฌธ์)๋ก ํด๋น ๋ถ๊ธฐ๋ฅผ ๊ณ์ ๊ณต๊ฒฉํ๋ ๊ฒ์ ์ด์์ ์ด์ง ์์ ๊ฒ ๊ฐ์ต๋๋ค.
BTW, ์นํฉ 2์ -p
("์์ฐ" ๋ชจ๋, ๊ธฐ๋ณธ ์ค์ ์ผ๋ก ์ถ์๋ ๊ฐ๋ฅ)์ ์ฌ์ฉ์๋ฅผ ์ํด NODE_ENV
๋ฅผ ์ค์ ํฉ๋๋ค. https://webpack.js.org/guides/production-build /#๋
ธ๋ - ํ๊ฒฝ ๋ณ์.
์ด๊ฒ์ ๋์๊ฒ ๋งค์ฐ ํฉ๋ฆฌ์ ์ผ๋ก ๋ณด์ด๋ฉฐ webpack์ ์ฌ์ฉํ๋ ๊ฑฐ์ ๋ชจ๋ ์ฌ๋๋ค์๊ฒ ์ด ๋ฌธ์ ๋ฅผ ๋ฐฉ์งํด์ผ ํฉ๋๋ค. ๋ฐํ์์ ์ด๊ฒ์ ์ฒ๋ฆฌํด์ผ ํ๋ค๊ณ ์ฃผ์ฅํ๋ ์ด์ ๋ ๋ฌด์์ ๋๊น?
webpack 2์ BTW, -p(๊ธฐ๋ณธ ์ค์ ์ผ๋ก ์ถ์๋ ๊ฐ๋ฅํ๊ฒ ํ๋ "ํ๋ก๋์ " ๋ชจ๋)๋ ์ฌ์ฉ์๋ฅผ ์ํด NODE_ENV๋ฅผ ์ค์ ํฉ๋๋ค: https://webpack.js.org/guides/production-build/#node -environment-variable.
๋ค. ์ฐ๋ฆฌ๋ ์ด๊ฒ์ ์๊ณ ์์ต๋๋ค. Webpack core์ @TheLarkInn ์ด ํ์คํ ํ์ธํ ์ ์์ง๋ง -p
๋ Webpack ์ปค๋ฎค๋ํฐ atm์์ ๋๋ฆฌ ์ฌ์ฉ๋์ง ์๋ ๊ฒ์ผ๋ก ์๊ณ ์์ต๋๋ค. ์ฌ๊ธฐ์ ๊ทผ๋ณธ์ ์ธ ๋ฌธ์ ๋ ํ์ฌ console.log ๊ฒฝ๊ณ ๊ฐ ์๋ ํ์ฌ ์ํ์ ์ ์ฌํ ์๋ฃจ์
์ด ์ตํธ์ธ๋ ๊ฒฝ์ฐ React ์ฌ์ฉ์์๊ฒ ์ค์ ๋ณํ๊ฐ ์์ ๊ฐ๋ฅ์ฑ์ด ์๋ค๋ ๊ฒ์
๋๋ค. ์ฐ๋ฆฌ๋ ์ฌ๋๋ค์๊ฒ '๋น ๋ฅธ' ๋ฐฐ์ก์ ๋ํด ๋ ๋์ ๋ณํ๋ฅผ ์ฃผ๊ณ ์ถ์ต๋๋ค.
Webpack์์ DEV ๋ฐ PROD ํ๊ฒฝ์ ์ฝ๊ฒ ๊ฐ์งํ ์ ์๋ค๋ ์ (-p๊ฐ ์ถฉ๋ถํ์ง ์์)๋ https://github.com/webpack/webpack/issues/3216์์ ์ฝ๊ฐ์ ๊ณ ํต์ ์ฃผ์๋ค๋ ์ ์ ์ธ๊ธํ ๊ฐ์น๊ฐ ์์ต๋๋ค.
์ฌ๋ฐ๋ฅธ ์์ ์ webpack์ด process.NODE_ENV๋ฅผ ์ค์ ํ๊ฑฐ๋ ์ ์ ํ ํ๋ก๋์ ๊ตฌ์ฑ ์์ด ํ๋ก๋์ ๋น๋๋ฅผ ๋ง๋ค๋ ค๊ณ ํ๋ฉด ํด๋น ์นํฉ์ด ๊ธฐ๋ณธ์ ์ผ๋ก ๋น๋์ ์คํจํ๋ค๋ ๊ฒ์ ๋๋ค.
๋๋ ์ฐ๋ฆฌ๊ฐ ์ด๊ฒ์ ์ถ๊ตฌํ๋ ๊ฒ์ ์ง์งํ์ง๋ง ๋ด๊ฐ ๋งํ ์ ์๋ ๊ฒ์์ Webpack์ ๋ํ ํ๊ธฐ์ ์ธ ๋ณํ๊ฐ ๋ ๊ฒ์ ๋๋ค. ์ ๋ ๊ฐ์ธ์ ์ผ๋ก ๋ช ๊ฐ์ง ์ง๋ฅํ ๊ฒฝํ(localhost, DevTools ์ด๊ธฐ ๋ฑ)์ ์ฌ์ฉํ์ฌ ํ์๋๋ ๋ช ํํ ์ค๋ฒ๋ ์ด ๋ฉ์์ง _only_์ ๊ด๋ จ๋ ๋ฐํ์ ์๋ฃจ์ ์ด ์ฐ๋ฆฌ๋ฅผ ์ ์ ํ๊ฒ ๋ค๋ฃฐ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
์ฆ, Webpack process.NODE_ENV ํญ๋ชฉ์ผ๋ก ๊ณ์ ๋์ ๊ฐ๋ฉด์ @sokra ๋๋ @TheLarkInn ์ด ์ด์ ๋ํ ์๊ฒฌ์ด ์๋์ง ๊ถ๊ธํฉ๋๋ค.
๋ด ์ดํด๋ ๋น์ ๊ณผ ๋ค๋ฆ
๋๋ค -p
๋ ์นํฉ์ ์ ๋ฌธ๊ฐ๊ฐ ์๋ ๋๋ถ๋ถ์ ์ฌ์ฉ์๊ฐ ํ๋ก๋์
๋น๋๋ฅผ ์ค์ ํ๋ ์ฌ์ค์์ ๋ฐฉ๋ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
์ ๋ช
ํ ํจํค์ง๋ -p
๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ก๋์
๋น๋๋ฅผ ์์ฑํฉ๋๋ค.
https://github.com/ReactTraining/react-router/blob/5e69b23a369b7dbcb9afc6cdca9bf2dcf07ad432/package.json#L23
https://github.com/react-bootstrap/react-bootstrap/blob/61be58cfdda5e428d8fb11d55bf743661bb3f0b1/tools/dist/build.js#L10
webpack์์ Uglify ํ๋ฌ๊ทธ์ธ์ ์ง์ ๊ตฌ์ฑํ๋ ๊ฒ์ ๋งค์ฐ ๋๋ฌธ ์ผ์ด๋ฏ๋ก -p
๊ฐ ์์ผ๋ฉด ์ฌ๋๋ค์ ์ถ์๋์ง ์์ ๋น๋๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ฉฐ ์ด ๊ฒฝ์ฐ ๋ ํฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค.
์ ๋ ๊ฐ์ธ์ ์ผ๋ก ๋ช ๊ฐ์ง ์ง๋ฅํ ๊ฒฝํ(localhost, DevTools ์ด๊ธฐ ๋ฑ)์ ์ฌ์ฉํ์ฌ ํ์๋๋ ๋ช ํํ ์ค๋ฒ๋ ์ด ๋ฉ์์ง๋ฅผ ํฌํจํ๋ ๋ฐํ์ ์๋ฃจ์ ์ด ์ฐ๋ฆฌ๋ฅผ ์ ์ ํ๊ฒ ๋ค๋ฃฐ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
๋๋ ์ด๊ฒ์ด ์ผ์ด๋ _only_ ์๋๋ฆฌ์ค๋ฅผ ์ค์ ๋ก ํ๊ฐํ์ง ์๊ณ ์ด๊ฒ์ด ์ฌ๋ฌ ๋ฒ ๊ฒฉ์ถ๋ ๊ฒ์ฒ๋ผ ๋๋๋๋ค("ํ๋ ์์ํฌ๊ฐ DOM์ ๋ฌด์ธ๊ฐ๋ฅผ ์ฃผ์ ํ๋ ๊ฒ์ ํ์ฉ๋์ง ์์ต๋๋ค").
๊ฐ๋ฐํ๋ ๋์ ์ง์์ ์ผ๋ก DOM์์ ์๊ตฌ์ ์ธ ๋ฉ์์ง์ ์์์น ๋ชปํ ์ผ์ ๋์ฒํด์ผ ํ๋ ๊ฒ์ ์ฉ๋ฉ๋ ์ ์๋ค๋ ์ ์ ์ ์ ์ผ๋ก ๋์ํฉ๋๋ค. ํ์ง๋ง ์ฌ๊ธฐ์ ์ ์ํ๋ ๊ฒ์ DevMode๊ฐ ํ๋ก๋์ ์ ๋ฐฐํฌ๋๋ ๊ฒฝ์ฐ์๋ง ํ์๋๋ ๋ฉ์์ง์ ๋๋ค(๊ฒฝํ์ ๋ฐฉ๋ฒ์ ์ ๋ ฅํ์ธ์!). ์ด๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ์์์ ์์ ๊ฒ์ฌ ๋ฐ ์ฝ์ ๋ฉ์์ง๋ฅผ ๋๊ตฌ, CI ๋ฐ ๋ธ๋ผ์ฐ์ ํ์ฅ์ ๊ตฌ์ถํ ์ ์์ต๋๋ค.
๊ทธ๋ฌ๋ ํ์ฌ์ ์ธ ์ตํ์ ๋น์ ์์ ์ฅ์น๋ก์ ํ๋ฉด์ ๋ณด์ด๋ ๋ฐฐ๋๊ฐ ์ ์ ํ๊ณ ์ ์ ํ ์๋ฃจ์ ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
DevMode๊ฐ ํ๋ก๋์ ์ ๋ฐฐํฌ๋ ๊ฒฝ์ฐ์๋ง ํ์๋ฉ๋๋ค(ํด๋ฆฌ์คํฑ ์ ๋ ฅ!)
๋ฐ๋ผ์ ๊ฐ๋ฐ์๋ ์ด ๋ฉ์์ง๋ฅผ ์ ๋ ๋ณผ ์ ์์ผ๋ฉฐ (์๋ง๋ ์ค์๋ก) ๊ฐ๋ฐ ๋ชจ๋๋ฅผ ํ๋ก๋์ ์ ๋ฐฐํฌํ๊ณ ๊ฐ์๊ธฐ ๋ชจ๋ ์ฌ์ฉ์๊ฐ ๋ณผ ์ ์๋๋ก ์ด ์ HTML์ด ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์๋๋ ๊ฒ์ ๋ณด๊ฒ ๋๋ ๊ฒ์ ๋๊น?
๊ทธ๊ฒ์ ๋์๊ฒ ๋ ๋ง์ ํ๋ฒ์ฒ๋ผ ๋ค๋ฆฐ๋ค. ์์ง ๊ฐ๋ฐ ๋ชจ๋๋ฅผ ์ดํดํ์ง ๋ชปํ๊ณ ๋ฉ์์ง์ ํจ๊ป ์ด ์ด๋ก ์ ์ธ ์ ๋ฒ์ ์ React๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐฐํฌํ๋ฉด ๋๋ผ์์ ๋๋ผ๊ฒ ๋ ๊ฒ์ด๋ฉฐ ๋น์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ์ฉ์๋ ์ด๋ฅผ ๋ณด๊ฒ ๋ ๊ฒ์ ๋๋ค. ๋๋ ์ด๊ฒ์ด ๊ฐ๋ฐ์๋ ํ์ฌ๋ฅผ ๋์ฒํ๊ฒ ๋ง๋๋ ๋ฐ ๋์์ด ๋๋ ๋ฐฉ๋ฒ์ ์์ง ๋ชปํฉ๋๋ค. ๋ฌผ๋ก ๊ทธ๋ ๊ฒ ํ๋ฉด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋ ์ ์์ง๋ง ๋ด ์๊ฐ์๋ ๊ทธ ๋น์ฉ์ด ๋๋ฌด ๋๊ณ ๊ณต๊ฐ์ด ์กฐ๊ธ ๋ถ์กฑํฉ๋๋ค.
๊ทธ๋ฌ๋ ํ์ฌ์ ์ธ ์ตํ์ ๋น์ ์์ ์ฅ์น๋ก์ ํ๋ฉด์ ๋ณด์ด๋ ๋ฐฐ๋๊ฐ ์ ์ ํ๊ณ ์ ์ ํ ์๋ฃจ์ ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
์ด ์๋ฃจ์ ์ ๋ฌธ์ ๋ ๋๋ฌด ์ด์์ ์ด๋ฉฐ ํ๋ ์์ํฌ๋ฅผ ๊ฐ๋ฐํ ๋ ๋ค๋ฅธ ํ์ฌ์๋ ์ต๊ณ ์ ๋ฐฐํฌ ์ ์ฑ ์ด๋ ์ต๊ณ ์ QA(์๋ ๊ฒฝ์ฐ)๊ฐ ์์ ์๋ ์๋ค๋ ํ์ค์ ์ง์ค ํด์ผ ํ๋ค๋ ๊ฒ์ ๋๋ค.
์, ๋๊ตฐ๊ฐ ํ๋ก๋์ ์์ ๊ฐ๋ฐ ๋ชจ๋๋ก ๋ฐฐํฌํ๋ ๊ฒฝ์ฐ ์ด๋ฅผ ๋ณด๊ณ ๋น ๋ฅด๊ฒ ๋ณ๊ฒฝํ ์ ์์ด์ผ ํฉ๋๋ค. ๋ถํํ๋, ํนํ ๊ธฐ์ ์ฐ์ ์ธ๋ถ์์๋ ์ด๊ฒ์ด ๋ถ๊ฐ๋ฅ ํ๊ฑฐ๋ ์ฝ์ง ์์ต๋๋ค . ์ฌ๊ธฐ์ ๋๊ธ์ ๋ค๋ ์ฌ๋๋ค์ ๋๋ค์๋? ๊ทธ๋ค์ ํ์ฌ์๋ ์ด ์๋๋ฆฌ์ค์ ์ ๋์ฒํ ์ ์๋ ๋ฐฐํฌ ํ๋ก์ธ์ค๊ฐ ์์ ์ ์์ต๋๋ค. ๊ตฌ๊ธ, ํ์ด์ค๋ถ, ํ๋ ์ด์คํ ์ด์ ๋ฑ ์ด ๋ชจ๋ ๊ธฐ์ ํ์ฌ๊ฐ ์ด ์ ๋๋ ์ ์ฒ๋ฆฌํ ์ ์์ง๋ง ์ด๊ฒ์ React๋ฅผ ์ฌ์ฉํ๋ ๋๋ค์์ ์ฌ์ฉ์๋ฅผ ๋ํํ๋ ๊ฒ์ ์๋๋๋ค. ๊ทธ๋ ์ฃ ? (์ฌ์ค, React ์ฌ์ฉ์ ๋ํ ํต๊ณ๊ฐ ์์ต๋๊น? ํธ๋ฆฌํ ๊ฒ์ ๋๋ค!)
์, ๊ทธ๋ ์ต๋๋ค. ์ด๋ฌํ ํ์ฌ์ ์ ๋ถ๋ ๋ฐฐํฌ ํ๋ก์ธ์ค์ ์ ์ฑ ๋ฑ์ ๋ณ๊ฒฝํด์ผ ํฉ๋๋ค. ๊ทธ๋ฌ๋ ํ์ค์ ์ด๊ฒ์ ๋๋ค. ๋๋ถ๋ถ์ ํ์ฌ๋ ๋ฐฐํฌ ํ๋ก์ธ์ค๊ฐ ํ์ ํ๊ณ QA๊ฐ ์กด์ฌํ์ง ์์ต๋๋ค.
์ ๊ฐ ๊ฐ์ธ์ ์ผ๋ก ๊ฒฝํํ ๋ ๊ฐ์ง ์๋๋ฆฌ์ค๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
์ฒซ์งธ , ์ ๋ถ์์ ๊ทผ๋ฌดํ๋ ๋์ ์ง์ฌ ๋ฐ ๋ถ์์ ๋ฐ๋ผ 3-6๊ฐ์๋ง๋ค ๋จ์ผ ๋ฐฐํฌ๊ฐ ์์ ์ ์์ต๋๋ค. ์ด๋ฌํ ๋ฐฐํฌ๋ ๊ฐ๋ฅํ ํ ๋ง์ ๊ฒ์ ๋กค์ ํ๊ณ ์ ์ฒด ๋ฐฐํฌ์ ์ผ๋ถ๊ฐ ์คํจํ๋ฉด ๋ชจ๋ ๊ฒ์ด ๋กค๋ฐฑ๋ ์ ์์ต๋๋ค. ๊ทธ๋์ ์ฐ๋ฆฌ๋ OWF๋ผ๊ณ ํ๋ ์ด ์ํํธ์จ์ด๋ฅผ ์ฌ์ฉํ๊ณ ์์์ต๋๋ค. ์ด ์ํํธ์จ์ด๋ ์ต์ํ์ง ์์ผ์๊ฒ ์ง๋ง iframe์ ์ฌ์ฉํ์ฌ ๋จ์ผ ์น ์์ฉ ํ๋ก๊ทธ๋จ์ ์ฌ๋ฌ ์น ์์ฉ ํ๋ก๊ทธ๋จ์ ํ์ํ๋ค๋ ์ ์์ iSocial๊ณผ ๋น์ทํฉ๋๋ค. ๋ช ๊ฐ์ง ์ ํ๋ฆฌ์ผ์ด์ ๋ฐฐํฌ์ ์๋ ๊ตฌ์ฑ ๋จ๊ณ๊ฐ ์์ด ์๋ํ ์ ํ๋ฆฌ์ผ์ด์ ๋์ ์ผ๋ถ iframe์ 404 ๋ฐ 500 ์ค๋ฅ๊ฐ ํ์๋์ง ์์์ต๋๋ค.
๊ฐ๋ฐ์๋ ์ผ๋ฐ์ ์ผ๋ก ๋ฐฐํฌ๋๋ ์์คํ ์ ์ก์ธ์คํ ์ ์๊ธฐ ๋๋ฌธ์ ๋ฌธ์ ๋ฅผ ์์๋ด๊ธฐ๊น์ง ๋ง์ ์๊ฐ์ด ๊ฑธ๋ ธ์ต๋๋ค. ๊ทธ ์์ ์์ ์ฐ๋ฆฌ๋ ์์ฌ๊ฐ ๋ค๋ฅธ ์ฌ๋์ ์์ฌ์๊ฒ ์ ํ๋ฅผ ๊ฑธ์ด ์ ์ฒด ๋ฐฐํฌ๋ฅผ ๋กค๋ฐฑํ์ง ์๋๋ก ๋ค๋ฅธ ์ฌ๋์๊ฒ ์ํฅ์ ๋ฏธ์น์ง ์๋๋ค๊ณ ๋งํ๋๋ก ํด์ผ ํ์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ๋ฉฐ์น ํ์ ๋ค๋ฅธ ์ฌ๋์ด ์ผ๋ถ ๊ตฌ์ฑ์ ๋ค์ ์คํํ๋๋ก ํ๊ธฐ ์ ์ ์์ฑํด์ผ ํ ์๋ง์ ์๋ฅ ์์ ๊ณผ ๋ฌธ์๊ฐ ์์์ต๋๋ค. ๊ทธ ๋์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ทธ ์ ์ฒด ๊ธฐ๊ฐ ๋์ ์๋ํ ์ ์์์ต๋๋ค.
๋ ๋ฒ์งธ ๋ก, ์ ๊ฐ ์ฌ๋ฌด ๋ถ์์์ ์ผํ ๋ ์น ์ฌ์ดํธ์ ์ค์ ํญ๋ชฉ ๋ ์ด์์ ๋์ ๊ฐ๋ฐ์ ์ด๋ฆ์ ์ค์๋ก ํฌํจํ๋ ๋ฐฐํฌ๊ฐ ์์์ต๋๋ค(๊ทธ๊ฐ ๋ญ๊ฐ๋ฅผ ํ ์คํธํ๊ณ ์์๋ ๊ฒ ๊ฐ์์?). ์ด์จ๋ , ๊ทธ๊ฒ์ ๋ฐ๋ก ์์์ฐจ๋ ธ์ง๋ง ๊ทธ๊ฒ์ ๊ณ ์น๊ธฐ ์ํด ์ฐ๋ฆฌ๋ ๊ทธ๋ ํจ์ฌ ๋ฆ๊ฒ๊น์ง ๊ฑธ๋ฆฌ๋ ๊ธด๊ธ ๋ณ๊ฒฝ ํต์ ๋ฅผ ๋ฐ์์ผ ํ์ต๋๋ค. ๊ทธ๋์ ๊ทธ๋ค์ ๊ณ ๊ฐ๋ค์ ์ด ์ด๋ฆฌ์์ ๋ฐฐ๋๋ฅผ ๊ณ ์น๊ธฐ๊น์ง ๊ฑฐ์ 8์๊ฐ ๋์์ด๋ ๋ด์ผ ํ์ต๋๋ค.
์ ์์ ์: ๊ฐ๋ฐ์๊ฐ ๋ฃ์ง ์์ ์์์ ์์๋ฅผ DOM์ ์ฝ์ ํ ๋ ์ธ์ฌํ ์ฃผ์๊ฐ ํ์ํฉ๋๋ค. ํนํ ์ผ๋ถ ์๋๋ฆฌ์ค ์์๋ง ํ์ํ๋ ๊ฒ์ ๋ํด ์ด์ผ๊ธฐํ๋ ๊ฒฝ์ฐ ๋๊ตฐ๊ฐ๊ฐ ์ฒ์์ผ๋ก ๊ทธ๊ฒ์ ๋ณผ ๋ ์ ์ํ๊ฒ ๋นํ์ฑํํ์ฌ ๋ค์ ๊ท์ฐฎ๊ฒ ํ ํ์๊ฐ ์๋๋ก ํ๋ ๋ฐฉ๋ฒ์ ์์๋ผ ๊ฒ์ ๋๋ค.
@KrisSiegel
์์ง ๊ฐ๋ฐ ๋ชจ๋๋ฅผ ์ดํดํ์ง ๋ชปํ๊ณ ๋ฉ์์ง์ ํจ๊ป ์ด ์ด๋ก ์ ์ธ ์ ๋ฒ์ ์ React๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐฐํฌํ๋ฉด ๋๋ผ์์ ๋๋ผ๊ฒ ๋ ๊ฒ์ด๋ฉฐ ๋น์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ์ฉ์๋ ์ด๋ฅผ ๋ณด๊ฒ ๋ ๊ฒ์ ๋๋ค.
DevTools๊ฐ ์ด๋ ค ์๋ ๋์์๋ง ๋ฉ์์ง๊ฐ ํ์๋๋ค๋ฉด(์ฆ, ๊ฐ๋ฐ์๊ฐ ์๋ ํ๋ก๋์ ์ฌ์ฉ์๊ฐ ๋ณผ ๊ฐ๋ฅ์ฑ์ด ๋ฎ์) ์ ๊ทผ ๋ฐฉ์์ ๋ํ ๊ทํ์ ์๊ฐ์ด ๋ค๋ฅธ์ง ๊ถ๊ธํฉ๋๋ค. React๋ ํ์ฌ ์ฌ์ฉํ๊ณ ์๋ ํ์ฌ console.log ์ ๋ต์ ํจ๊ณผ์ ์ธ ํ์ฅ์ ๋๋ค.
DevTools๊ฐ ์ด๋ ค ์๋ ๋์์๋ง ๋ฉ์์ง๊ฐ ํ์๋๋ค๋ฉด(์ฆ, ๊ฐ๋ฐ์๊ฐ ์๋ ํ๋ก๋์ ์ฌ์ฉ์๊ฐ ๋ณผ ๊ฐ๋ฅ์ฑ์ด ๋ฎ์) ์ ๊ทผ ๋ฐฉ์์ ๋ํ ๊ทํ์ ์๊ฐ์ด ๋ค๋ฅธ์ง ๊ถ๊ธํฉ๋๋ค. React๋ ํ์ฌ ์ฌ์ฉํ๊ณ ์๋ ํ์ฌ console.log ์ ๋ต์ ํจ๊ณผ์ ์ธ ํ์ฅ์ ๋๋ค.
๊ฐ๋ฐ ๋๊ตฌ๊ฐ ์ด๋ ค ์์ผ๋ฉด ์๋ง๋ console.log ๋ฉ์์ง๊ฐ ํ์๋ ๊ฒ์ด๋ฏ๋ก DOM ๋ณ๊ฒฝ์ ๊ด๋ฆฌํ๊ธฐ์ ๋ถํ์ํ ๋ณต์ก์ฑ๊ณผ ์ค๋ณต๋๋ ๊ฒ์ฒ๋ผ ๋ณด์ ๋๋ค. React ์ฝ์ ๋ฉ์์ง๋ฅผ ํญ์ ๋ ํฌ๊ฒ/๋ ๋ฉ์ง๊ฒ ๋ง๋ค ์ ์์ต๋๋ค. ์๋ง๋ ASCII React ๋ก๊ณ ์ผ ๊ฒ์ ๋๋ค. ๋๊ตฐ๊ฐ๊ฐ ๊ฑฐ๊ธฐ์ ๋ค์ด๊ฐ ๊ฒฝ์ฐ์ฃผ์๋ฅผ ๋ ๋ฌด์ธ๊ฐ.
๊ถ๊ทน์ ์ผ๋ก ๋๊ตฐ๊ฐ๊ฐ ์ด ๋ฌธ์ ์ ์ง๋ฉดํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์ง๋ง Stackoverflow์์ ๊ฒฝ๊ณ ๋ฅผ ๋นํ์ฑํํ๋ ๋ฐฉ๋ฒ์ ๋ฌผ์ด๋ณด๋ฉด ๋๊ตฐ๊ฐ๊ฐ ๊ฒฝ๊ณ ๋ฅผ ๋นํ์ฑํํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ฃผ๋ ์ฝ๋๋ฅผ ๊ฒ์ํ๊ณ ์ฌ๋๋ค์ ๊ฒฝ๊ณ ๊ฐ ๋ฐ์ํ๋ฉด ๋จ์ํ ๋นํ์ฑํํ ๊ฒ์ ๋๋ค. ๋น๋ ๋๊ตฌ๋ ์์์ด ๋ง๊ณ ๊ณผ๊ฑฐ์ ๋ด๊ฐ ์ด์ผ๊ธฐํ ๋ง์ ์ฌ๋๋ค์ ๊ทธ๊ฒ๋ค์ด ํผ๋์ค๋ฝ๊ฑฐ๋ ์ด๋ ต๋ค๊ณ ์๊ฐํ์ต๋๋ค(Babel 6์ ๋ฆด๋ฆฌ์ค๋ "์ฌ๋ฏธ์๋" ์๊ฐ์ด์์ต๋๋ค). ๋น์ ์ ๋จ์ํ ๊ทธ๊ฒ๋ค์ ์ฌ๋ฐ๋ฅด๊ฒ ์ฌ์ฉํ์ง ์๋ ๋ง์ ์ฌ๋๋ค๊ณผ ๋ง์ฃผ์น๊ฒ ๋ ๊ฒ์ ๋๋ค.
์ ์ด๋ ๋ด ๊ฒฝํ์ ยฏ\_(ใ)_/ยฏ
ํด, ๋๋์ด ์ค์ ๋ฐ๋ฅ๊น์ง ๋ถ์๋ค. ๊ด์ฐฎ์. ๋๋ ์ด๊ฒ์ ์กฐ๊ธ ๋ธ๋ ์ธ์คํ ๋ฐํ๋ค.
Webpack์ React๊ฐ DEV๋ฅผ PROD๋ก ๋ฐฐ์กํ๋ ์ฌ๋๋ค์ ๋ ์ฝ๊ฒ ํผํ๊ธฐ ์ํด ์ฌ์ฉํ ์ ์๋ NODE_ENV๋ฅผ ๊ฐ์ ๋ก ์ง์ ํ ์ ์์ง๋ง ์ด๋ Webpack์ ์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ์ด ๋ ๊ฒ์ ๋๋ค. ๋๋ ์ง๊ธ Webpack 3์์ ์ด์ ๊ฐ์ ๊ฒ์ด ์ผ๋ง๋ ์คํ ๊ฐ๋ฅํ์ง์ ๋ํด Sean๊ณผ ์ด์ผ๊ธฐํ๊ณ ์์ต๋๋ค. React + Webpack ์คํ์ ์ด๋ณด์์ ์ฑ๋ฅ ์นํ์ ์ผ๋ก ์ ์งํ๋ ๊ฒ์ ๋ ์ง์ ๋ชจ๋ ๊ด์ฌ์ ๊ฐ๊ณ ์๋ค๋ ๊ฒ์ ์๊ณ ์์ต๋๋ค.
์ด๊ฒ์ ์ง๊ธ๊น์ง ๋ด๊ฐ ๊ฐ์ฅ ์ข์ํ๋ ๊ฒ์ฒ๋ผ ๋๊ปด์ก์ง๋ง ์์ง 100% ํ๋งค๋์ง๋ ์์์ต๋๋ค.
๊ทธ๋ฌ๋ ์ด๊ฒ์ ์ฌ์ฉ์์๊ฒ ์๋นํ ์ดํ ์ง์ ์ ์ ๊ณตํฉ๋๋ค. ๋ชจ๋ ์ฌ๋์ด prod ๋๋ dev env๋ฅผ ์ํด ๊ธ์ ์ฐ์ง ์๊ฑฐ๋ env๊ฐ ๋ฌด์์ธ์ง ์์ง๋ ๋ชปํฉ๋๋ค. ๋๋ ์ด์ ๋ํ ํผ๋๋ฐฑ์ ์ป๊ธฐ ์ํด webpack/webpack์ ๋ํ ๋ฌธ์ ๋ฅผ ์ ๊ธฐํ ๊ฒ์ ๋๋ค. ๋ด ์ง๊ฐ์ ๋ชจ๋ ์ฌ๋์ด ์ด๊ฒ์ ์ํ์ง ์์ ๊ฒ์ด๊ณ ๋ด๊ฐ ๋์ํ๋ ๊ทธ๋ ์ง ์๋ ์ฐ๋ฆฌ๋ ํธ์๋ฐฑ์ ๊ณ ๋ คํด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
<something in-between 1 and 3 I haven't figured out yet>
webpacky
์๋ฃจ์
์ ์ปดํ์ผ๋ฌ ์๋ช
์ฃผ๊ธฐ์ ์ฐ๊ฒฐํ ์ ์๋ ๋
๋ฆฝ ์คํํ ํ๋ฌ๊ทธ์ธ์ ๋ง๋ค๊ณ ์ฝ๋๊ฐ ์ ๊ฑฐ๋๊ณ ์๋์ง ๋๋ ENV๊ฐ ์ ๊ณต๋์ง ์๋์ง ํ์ธํ๊ณ ์น์ํ ๊ฒฝ๊ณ ๋๋ ์ ํํ ์ค๋ฅ๋ฅผ ๋ด๋ณด๋ด๋ ๊ฒ์
๋๋ค.
๊ทธ๋ฌ๋ ๋๋ ๊ทธ ์๋ต์ด "ํ์ง๋ง ์ฌ์ฉ์๋ ๊ทธ ์ผ์ ํ๋ ๋ฐฉ๋ฒ ๋ฑ์ ๊ฒฐ์ฝ ์์ง ๋ชปํ ๊ฒ"์ด๋ผ๊ณ ์์ํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ CRA, ๋ฐ๋ผ์ ์ง๊ธ ์ด ๋ฌธ์ .
์๋์ ๊ฐ์ด React(๋๋ ํ์ํ ๋ชจ๋ fw)์ package.json์ ํ์ธํ๋ ์๋ก์ด ๋ฆฌ์กธ๋ฒ ํจํด์ ์์ฑํ ์ ์์ต๋๋ค.
"webpack": {
"plugin": "ReactEnviornmentPlugin"
}
์ฌ์ฉ์๊ฐ ์๊ฑฐ๋ ์ ๊ฒฝ ์ธ ํ์ ์์ด ์๋์ผ๋ก ์ฌ์ฉ์ ์ปดํ์ผ๋ฌ ๊ตฌ์ฑ์ ์ ์ฉ๋ฉ๋๋ค.
๋ค์ ํ๋ฒ ์ ๋ง ๋ธ๋ ์ธ์คํ ๋ฐ์ ํฉ๋๋ค.
@TheLarkInn webpack 2์์ -p
์ ํ์ฌ ๋์์ผ๋ก ์ถฉ๋ถํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ ์ผํ ์คํจ ์ฌ๋ก๋ ๋๊ตฐ๊ฐ๊ฐ ์ค์ค๋ก UglifyJsPlugin
DefinePlugin
๊ฒ์ ์์ด๋ฒ๋ฆฐ ๊ฒฝ์ฐ์ด์ง๋ง, ๊ทธ๋ด ๊ฐ๋ฅ์ฑ์ ํจ์ฌ ๋ฎ์ ๋ณด์
๋๋ค.
@taion ์/์๋์ค
-p
๋ ํ๋ก๋์
"์ฒ๋ฆฌ"๋ง ์ฝ๋์ ์ ์ฉํ์ง๋ง NODE_ENV
์ ๋ํด ์ด๋ ํ ๊ฐ์ ๋ ํ์ง ์์ผ๋ฉฐ ์ด์ ๋ํ ์ง์๋ ์์ต๋๋ค. ์ด๊ฒ์ด ์ฌ๋๋ค์ด DefinePlugin()
๋ฅผ ์ฌ์ฉํด์ผ ํ๋ ์ด์ ์
๋๋ค.
๊ทธ๋ฌ๋ ์ฌ์ฉ์๊ฐ ํ๋ก๋์ ENV์์ ์ฝ๋๋ฅผ ์คํํ๊ณ ์๋ค๋ _์ถ์ธก_ ๋๋ _๋ฌต์_์ ๊ฐ์ฅ ๊ฐ๊น์ด "_ํฉ๋ฆฌ์ ์ธ_" ์์ญ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๊ฒ์ ์ฐ๋ฆฌ๊ฐ ์ปค๋ฎค๋ํฐ์ ํ์ด ๊ด์ฐฎ์์ง ํ์ธํ๊ณ ์ถ์ ํ ๊ฐ์ง ์์ญ์ด ๋ ๊ฒ์ ๋๋ค.
@TheLarkInn ๋๋ ์ด๊ฒ์ด v2์์ ๋ณ๊ฒฝ๋์๋ค๊ณ ๋ฏฟ์ต๋๋ค: https://webpack.js.org/guides/production-build/#node -environment-variable
์ ๋ง๋ค ์ ๊ฐ ์๋ชป์๊ณ ์์ต๋๋ค ์ฃ์กํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ฌ๋๋ค์ด ์ต์ ํํ๋ ํญ๋ชฉ์ ๋ํด ๋ณด๋ค ์ธ๋ถํ๋ ์ ์ด๋ฅผ ์ํ๊ธฐ ๋๋ฌธ์ ์์ฃผ ์ฌ์ฉ๋์ง ์์ต๋๋ค. ( @addyosmani๊ฐ ์ธ๊ธํ ๊ฒ์ฒ๋ผ)
์ ๋ง ํํ ์ผ์ธ๊ฐ์? webpack์ ์์ํ ๋ -p
๋ ๋ถ๋ช
ํ ๊ฐ์ผ ํ ๊ธธ์ฒ๋ผ ๋ณด์์ต๋๋ค. ์์์ ์ธ๊ธํ ๊ฒ์ฒ๋ผ ์ถ๊ฐ ์กฐ์ ์ ์ ์ฉํ ์ถฉ๋ถํ ์ด์ ๊ฐ ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ผ๋ -p
๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์๋์ ๊ฐ์ด React(๋๋ ํ์ํ ๋ชจ๋ fw)์ package.json์ ํ์ธํ๋ ์๋ก์ด ๋ฆฌ์กธ๋ฒ ํจํด์ ์์ฑํ ์ ์์ต๋๋ค.
"์นํฉ": {
"ํ๋ฌ๊ทธ์ธ": "ReactEnvironmentPlugin"
}
์ฌ์ฉ์๊ฐ ์๊ฑฐ๋ ์ ๊ฒฝ ์ธ ํ์ ์์ด ์๋์ผ๋ก ์ฌ์ฉ์ ์ปดํ์ผ๋ฌ ๊ตฌ์ฑ์ ์ ์ฉ๋ฉ๋๋ค.
@TheLarkInn ๋ด๊ฐ ์ด๊ฒ์ ์ฌ๋ฐ๋ฅด๊ฒ ์ฝ๊ณ ์๋ค๋ฉด ๋ฆฌ์กธ๋ฒ ํจํด์ ํธ๋ฆฌ๊ฑฐํ๋ ค๋ฉด ์ฑ์ package.json์ด ์๋์ผ๋ก ReactEnvironmentPlugin
๋ฅผ ์ง์ ํด์ผ ํฉ๋๋ค. ๋ง์ต๋๊น? ์๋๋ฉด ๋ด๊ฐ ์ ์์ ์๋ชป ์ดํดํ๊ณ ์์ต๋๊น? :)
Webpack์์ ํ๋ก์ ํธ๊ฐ React๋ฅผ ์ฌ์ฉํ๊ณ ์ ์ ํ ํ๊ฒฝ ์ ํ์ ์ํํ๊ณ ์์์ ๊ฐ์งํ๋ ํด๊ฒฐ ๋ง๋ฒ์ ์์ํ ์ ์์ง๋ง, ์ด๋ ํ๋ ์์ํฌ๋ณ ์ต์ ํ๋ฅผ ๋ฒ๋ค๋ฌ์ ๊ธด๋ฐํ๊ฒ ๊ฒฐํฉํ๋ ๊ฒ์ฒ๋ผ ๋ค๋ฆฌ๊ณ ๋ฐ๋์งํ์ง ์์ ์ ์์ต๋๋ค.
๋ฐ์์ ๊ฐ์งํ๋ ๊ฒ๋ณด๋ค js ๋ชจ๋ ์ค๋ช ํ๋๋ฅผ ๊ฐ์งํ๋ ๊ฒ๋ณด๋ค ํ๋ฌ๊ทธ์ธ์ด ์๋ webpack ํ๋๊ฐ ํฌํจ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ ๋น์ ๋ง์ด ๋ง์ต๋๋ค. ๊ทธ๊ฒ์ ๋งค์ฐ ๋ฐ์ ํ๊ฒ ๊ฒฐํฉ๋์ด ์์ผ๋ฉฐ ์ค์ ๋ก ์ ๊ฐ ๊ฐ์ฅ ์ข์ํ๋ ์์ด๋์ด๋ ์๋๋๋ค.
webpack์ React๋ฅผ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ์ ์์๋ด๊ธฐ ์ํ "ํ๋ก๋์
" ๋ชจ๋์ ๊ฐ๋
์ด ์๋ ํ ์ด๊ฒ์ด ์ค์ ๋ก ์ฌ๋ฌ๋ถ์๊ฒ ์ด๋ค ๋ณด์ฅ๋ ์ ๊ณตํ์ง ์๋๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์์์ ๋
ผ์ํ ๋ฐ์ ๊ฐ์ด -p
๊ฐ ์ด๋ฏธ ์ณ์ ์ผ์ ํ๊ณ ์๋ค๋ ์ ์ ๊ฐ์ํ ๋ ์ด๊ฒ์ ์ค๋ณต๋ ๊ฒ์ฒ๋ผ ๋ณด์
๋๋ค. ์ด์จ๋ ์นํฉ์ผ๋ก ์ถ์๋ ํ๋ก๋์
๋น๋๋ฅผ ๋ง๋ค ๋ ์ฌ์ฉ์๊ฐ ์ผ๋ฐ์ ์ผ๋ก ๋๋ฌํ๊ฒ ๋ ๊ฒ์
๋๋ค.
์ฐ๋ฆฌ๋ ์ด๊ฒ์ ๋ํด ์กฐ๊ธ ๋ ์ด์ผ๊ธฐํ๊ณ ํฉ๋ฆฌ์ ์ธ ํด๊ฒฐ์ฑ ์ด ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ฐ๋ฆฌ๋ ๊ฐ๋ฐ ๋จ๊ณ์์ React ๊ฒฝ๊ณ ์ ๋ํด "๊ฒฝ๊ณ ์์"๋ฅผ ํ์ฑํํ๋ ๊ฒ์ ์ค๋ซ๋์ ๊ณ ๋ คํ์ต๋๋ค. ์ฌ๊ธฐ ์์ ๋ฐ๋ชจ๋ฅผ ๋ณผ ์ ์์ต๋๋ค(PR: https://github.com/facebook/react/pull/7360). ๊ฒฝ๊ณ ๊ฐ ์์ ๋๋ง ํ์๋์ง๋ง ๊ฐ๋ฐ ์ค์๋ ๋งค์ฐ ์ผ๋ฐ์ ์ด๋ฉฐ(ํญ์ ์์ ํด์ผ ํจ) ์ฑ์ ๊ฐ๋ฐํ๋ ๋ฐ 5๋ถ ์ด์์ ์๋นํ ์ฌ๋์ด๋ผ๋ฉด ๋๊ตฌ๋ ๋ํ ์์๋ฅผ ๋ณด๊ณ ์กด์ฌํ๋ค๋ ๊ฒ์ ์๊ฒ ๋ ๊ฒ์ ๋๋ค.
์ด ๋ณ๊ฒฝ ํ์๋ ๊ฐ๋ฐ ๋ชจ๋๋ฅผ ์ธ์ํ๊ธฐ๊ฐ ๋ ์ด๋ ค์์ง ๊ฒ์ ๋๋ค. "๊ฒฝ๊ณ ๋ํ ์์๋ฅผ ์ ๊ฑฐํ๋ ๋ฐฉ๋ฒ"์ ๊ฒ์ํ๊ณ ํ๋ก๋์ ์ฉ ๋น๋์ ๋ํด ๋ฐฐ์ธ ๊ฒ์ ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์ด๋ ์์ ์ ๋ฐฐํฌ๋ ์ผ๋ถ ๊ฒฝ๊ณ ๋ฅผ ๋ฐ์ ์ ์์ผ๋ฉฐ ์ฌ์ฉ์์๊ฒ ๊ฒฝ๊ณ ๊ฐ ํ์๋ฉ๋๋ค. ๋๋ ์ด ๊ฒฝ์ฐ ์ฌ๋๋ค์ด React ์์ฒด๋ฅผ ๋น๋ํ์ง ์์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์๋ํ๋ฉด ์ฐ๋ฆฌ๋ ๋จ์ง ์์๋ฅผ ๋ถ์พํ๊ฒ ๋ณด์ฌ์ฃผ์ง ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ฐ๋ฆฌ๋ ๊ฐ๋ฐ ๋ชจ๋๊ฐ ํด์ผ ํ ์ผ์ ํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
(์ฐธ๊ณ ๋ก ์ฐ๋ฆฌ๋ ํ์ด์ค๋ถ์์ ์ค๋ซ๋์ ๋น์ทํ ๊ฒฝ๊ณ ์์๋ฅผ ๊ฐ๋ฐ ์ค์ด์๊ธฐ ๋๋ฌธ์ React๋ฅผ ์ฌ์ฉํ๋ ค๋ ์๋์ ์ผ์นํฉ๋๋ค.)
๊ทธ ์ ์์ ๋ณด๋ ์ ๋ง ๊ธฐ์ฉ๋๋ค @gaearon! ๋ด๊ฐ ๊ฟ๊พธ๋ ๋ชจ๋ ๊ฒ์ ๋๋ค ;)
์ฐธ๊ณ ๋ก: ๊ฐ๋ฐ์๊ฐ ๋งํฌ๋ฅผ ์ ๊ฑฐํ๋ ๋ฐฉ๋ฒ์ ๋ํด Google์ ๋ฌธ์ํ์ง ์์๋ ๋๋๋ก ์์์ ์ง์ ๋งํฌ๋ฅผ ํฌํจํ๋ ๊ฒ์ ๊ณ ๋ คํด ๋ณผ ๊ฐ์น๊ฐ ์์ต๋๋ค.
๋ค, ์ข์ ์ง์ ์ ๋๋ค. ์ฐ๋ฆฌ๋ ๋ฌด์ธ๊ฐ๋ฅผ ์ถ๊ฐํ ๊ฒ์ ๋๋ค.
@gaearon ๋๋ ๊ทธ ์๋ฃจ์ ์ด ๋งค์ฐ ๋ถ์พํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ฐ๋ฐ ์ค์๋ ๊ฒฝ๊ณ ๊ฐ DOM์ ์นจ๋ฒํ๋ ๊ฒ์ ์ํ์ง ์์ต๋๋ค . ์ด๋ ์ผ๋ฐ ๊ฐ๋ฐ์์๊ฒ ์ ํ ๋ชฉ์ ์ด ์์ผ๋ฉฐ ๋๋ถ๋ถ์ ๊ฒฝ์ฐ ์์ ํ ๋นํ์ฑํ๋ ์ ์์ต๋๋ค. ๊ฐ๋ฐ์ ๋๊ตฌ๋ ์ด์ ๋๋ฌธ์ ๊ฒฝ๊ณ ๋ฅผ ํ์ํ๋ฏ๋ก ๋ฐ๋ช ํ ํ์๊ฐ ์์ต๋๋ค.
๋๋ ๋ํ DOM ์๋ฃจ์ ์ด ๊ทธ๊ฒ์ ๋ํ ๋์ ์ด์ ์ฃผ์ฅ์ ๋ํ ๋ฐ๋ก ์ด ์ ํ ์๋ ์ํ๋ก ๊ณ์ ๋์จ๋ค๋ ๊ฒ์ด ๋ฌธ์ ๋ผ๋ ๊ฒ์ ์๊ฒ ๋์์ต๋๋ค. ๋ด ์์ ์ด ๋ฌด์๋๋ค๋ฉด ๊ด์ฐฎ์ต๋๋ค. ์ด๊ฒ์ ๋ด ์ ์ฅ์๊ฐ ์๋๋ฏ๋ก ์ถฉ๋ถํ ๊ณตํํ์ง๋ง ๊ฐ์ ์ฃผ์ฅ์ด ๋์ค๋ ๊ฒ์ ๋ณด๋ ๊ฒ์ ๋๋ดํฉ๋๋ค. , ๊ทธ๋ฐ ๋ค์ ๋ฐ๋ก ๋ค์ ๋ํ๋ฉ๋๋ค. ํน๊ตฌ๊ณ ๋ฐ๋ณตํฉ๋๋ค.
๋๋ถ๋ถ์ ๊ฒฝ๊ณ ์ ๋ํด ์ด๊ฒ์ด ์ฌ์ค์ด๋ผ๋ ๋ฐ ๋์ํ์ง๋ง React ๊ฒฝ๊ณ ๋ ํนํ ์ฝ๋์ ๋ฒ๊ทธ๋ฅผ ์ง์ ํฉ๋๋ค. ๊ทธ๊ฒ๋ค์ ๋จ์ํ ์ ์์ด ์๋๋๋ค.
๋ํ ์์๋ ํด์ ํ๊ธฐ ์ฝ๊ณ ๊ฐ๋ณ ๊ฒฝ๊ณ ๋ ์ผ์ ์ค์งํ๊ธฐ ์ฝ์ง๋ง(์ ์ ๋์ ์ ๊ฒฝ ์ฐ์ง ์๋ ๊ฒฝ์ฐ) ์์ ํด์ผ ํฉ๋๋ค.
๋น๊ต๋ฅผ ์ํด Facebook ์ฝ๋๋ฒ ์ด์ค์์ ๋ํ ์์๊ฐ ํ์๋๋ ๋ฐฉ์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์์ฒ ๋ช ์ ์์ง๋์ด๊ฐ ๋ฌธ์ ๊ฐ ์๊ณ ๋๋ถ์ ์์ฐ์ฑ์ด ๋ ๋๊ธฐ ๋๋ฌธ์ ํฉ๋ฆฌ์ ์ธ ๊ธฐ๋ณธ๊ฐ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๋ถ๋ช ํ ํ์๋ฉด, ์คํ ์์ค ๋ฒ์ ์ ๋ ์ธ์น ๊ฒ์ ๋๋ค.
์คํ์ผ ์กฐ์ ์ ๋ํ ์ ์ ์ฌํญ์ด ์์ผ๋ฉด https://github.com/facebook/react/pull/7360์ ์์ ๋กญ๊ฒ ์๊ฒฌ์ ๋ณด๋ด์ฃผ์ญ์์ค.
Dan์ด ๋งํ ๊ฒ์ ๋ง๋ถ์ฌ, ์ ๋ ์ต๊ทผ์ ์ถ๊ฐ๋ ์ค๋ฅ ๋ก๊ฑฐ ํ๋ฆ์ ์ฐ๊ฒฐํ๊ธฐ ์ํด #7360 ์์ ๊ตฌ์ถํ๊ณ ์์ต๋๋ค. ์ ๋ ํ์ฌ ์กฐ๊ธ ๋ ๋ฐฉํด๊ฐ ๋๋ ๋ช ๊ฐ์ง ์คํ์ผ์ ํ ์คํธ ์๋ฆผ์ ์๋ํ๊ณ ์์ต๋๋ค. ํผ๋๋ฐฑ์ ์ํด ์คํฌ๋ฆฐ์ท ๋ฐ/๋๋ Plnkr์ ๊ณง ๊ฒ์ํ๊ฒ ์ต๋๋ค.
์ด๋ฌํ ๊ฒฝ๊ณ ์๋ "์ถ์๋ ๊ฐ๋ฐ ์ฝ๋" ๊ฒฝ๊ณ ๊ฐ ํฌํจ๋ฉ๋๊น? ๊ทธ๋ ๋ค๋ฉด ๋ง์ ๊ฒ๋ค์ด ์์ฃผ ๊น๋ํ๊ฒ ํด๊ฒฐ๋ ๊ฒ์ ๋๋ค.
์ ๊ทธ๋ฐ ์ฉ๋๋ก๋ ์ฌ์ฉํ ์ ์๋์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
@gaearon
๋๋ถ๋ถ์ ๊ฒฝ๊ณ ์ ๋ํด ์ด๊ฒ์ด ์ฌ์ค์ด๋ผ๋ ๋ฐ ๋์ํ์ง๋ง React ๊ฒฝ๊ณ ๋ ํนํ ์ฝ๋์ ๋ฒ๊ทธ๋ฅผ ์ง์ ํฉ๋๋ค. ๊ทธ๊ฒ๋ค์ ๋จ์ํ ์ ์์ด ์๋๋๋ค.
์ค๋ฅ ๋๋ ์์ธ IMO์ฌ์ผ ํฉ๋๋ค. ๊ทธ๋ค์ ์ ๊ทธ๋ ์ง ์์ต๋๊น? ์์ธ๋ ์์ ์ ๊ฐ์ํ์ง๋ง ๋ฌด์ํ ์ ์๋ ๊ฒฝ๊ณ ๋ ๊ทธ๋ ์ง ์์ต๋๋ค.
์์ฒ ๋ช ์ ์์ง๋์ด๊ฐ ๋ฌธ์ ๊ฐ ์๊ณ ๋๋ถ์ ์์ฐ์ฑ์ด ๋ ๋๊ธฐ ๋๋ฌธ์ ํฉ๋ฆฌ์ ์ธ ๊ธฐ๋ณธ๊ฐ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
๋๋ ์ด์ ์์ ์์ ์ด๊ฒ์ ์ธ๊ธํ์ง๋ง ๊ทธ ์์ง๋์ด๋ค์ ์คํ ์์ค ๋ฒ์ ์ ์ฌ์ฉํ 90%์ ์ฌ๋๋ค๋ณด๋ค ๋ ๋์ ๊ฒ์ ๋๋ค. ๋๋ ๊ทธ๊ฒ์ด ํฉ๋ฆฌ์ ์ธ ๊ธฐ๋ณธ๊ฐ์ ๋ฐ๋๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๊ฐ๋ฐ ๋๊ตฌ์ ๊ฒฝ๊ณ ๊ฐ ์๋ ๋ฐ์๋ ์ด์ ๊ฐ ์์ต๋๋ค. ๊ทธ๊ฒ๋ค์ ์ฌ๋ฐ๋ช ํ๋ ๊ฒ์ ๋์๊ฒ ์๋ฏธ๊ฐ ์์ต๋๋ค. ๋นํ์ฑํ๋๊ณ ๋ค์๋ ๋ณผ ์ ์์ต๋๋ค.
์ด๊ฒ์ React๊ฐ IMO๋ฅผ ๋๋ฌด ๋ง์ด ํ๋ ค๊ณ ํ๋ ๊ฒ์ฒ๋ผ ๋ณด์
๋๋ค.
๋ด๊ฐ ์ ๋ถ ๊ณ์ฝ์ ํ ๋ ์ฐ๋ฆฌ๋ ๋ชจ๋ ํ๋ก ํธ ์๋์์ ์ฌ์ฉํด์ผ ํ๋ ๊ณตํต ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ฐ์ง๊ณ ์์์ต๋๋ค. ์ฝ์์์ ์ค๋ฅ๋ฅผ ๊ฐ์ ธ์ ํ ์คํธ ํ์ ์ผ๋ก ํ์ํฉ๋๋ค. ์ฌ๋ฌ ํ์์ ์ฌ๋ฌ ๋ฒ ํ๋ก๋์ ์ ๋ฐฐํฌํ์ ๋ฟ๋ง ์๋๋ผ ๋ง์ ๊ฐ๋ฐ์๊ฐ ํ ๋ฒ ๋ณด๊ณ ์๊ตฌ์ ์ผ๋ก ๋นํ์ฑํํ๋ ๋ฐฉ๋ฒ์ ๋ฌป์ต๋๋ค. ๋๋ ์ด๊ฒ์ด ๋ ๊ฐ๋ค๊ณ ๋ณธ๋ค.
์ฐ๋ฆฌ๋ ๊ฐ๋ฐ ๋จ๊ณ์์ React ๊ฒฝ๊ณ ์ ๋ํด "๊ฒฝ๊ณ ์์"๋ฅผ ํ์ฑํํ๋ ๊ฒ์ ์ค๋ซ๋์ ๊ณ ๋ คํ์ต๋๋ค. ์ฌ๊ธฐ์์ ๋ฐ๋ชจ๋ฅผ ๋ณผ ์ ์์ต๋๋ค(PR: #7360). ๊ฒฝ๊ณ ๊ฐ ์์ ๋๋ง ํ์๋์ง๋ง ๊ฐ๋ฐ ์ค์๋ ๋งค์ฐ ์ผ๋ฐ์ ์ด๋ฉฐ(ํญ์ ์์ ํด์ผ ํจ) ์ฑ์ ๊ฐ๋ฐํ๋ ๋ฐ 5๋ถ ์ด์์ ์๋นํ ์ฌ๋์ด๋ผ๋ฉด ๋๊ตฌ๋ ๋ํ ์์๋ฅผ ๋ณด๊ณ ์กด์ฌํ๋ค๋ ๊ฒ์ ์๊ฒ ๋ ๊ฒ์ ๋๋ค.
#7360 @gaearon ์ ๋ง ์ข์ํด์. ์๋ก์ด ๊ฒฝ๊ณ ์์์์ ๋ฐฐํฌ๋ฅผ ์ํด PROD๋ก ์ ํํด์ผ ํ ํ์์ฑ์ ๊ฐ์กฐํ๋ ์ง์์ ๋ฃ๊ฒ ๋์ด ๊ธฐ์๊ฒ ์๊ฐํฉ๋๋ค. ๋ฉ์ง๊ณ ๋น์ฅฌ์ผ์ ๋๋ค.
Dan์ด ๋งํ ๊ฒ์ ๋ง๋ถ์ฌ, ์ ๋ ์ต๊ทผ์ ์ถ๊ฐ๋ ์ค๋ฅ ๋ก๊ฑฐ ํ๋ฆ์ ์ฐ๊ฒฐํ๊ธฐ ์ํด #7360 ์์ ๊ตฌ์ถํ๊ณ ์์ต๋๋ค. ์ ๋ ํ์ฌ ์กฐ๊ธ ๋ ๋ฐฉํด๊ฐ ๋๋ ๋ช ๊ฐ์ง ์คํ์ผ์ ํ ์คํธ ์๋ฆผ์ ์๋ํ๊ณ ์์ต๋๋ค. ํผ๋๋ฐฑ์ ์ํด ์คํฌ๋ฆฐ์ท ๋ฐ/๋๋ Plnkr์ ๊ณง ๊ฒ์ํ๊ฒ ์ต๋๋ค.
@bvaughn ๋ ๋ง์ ๋ฐ๋ณต์ ๊ธฐ๋ํฉ๋๋ค :)
๊ฒฝ๊ณ ์์ ์ ๊ทผ ๋ฐฉ์์ด ๋๋ฌด ๊ฑฐ์ฌ๋ฆฐ๋ค๊ณ ์๊ฐํ๋ ์ฌ๋๋ค์ ์ํด ๋ค๋ฅธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(์: VueJS)๋ ๋ฒ๊ทธ ์์ ๋๋ ๋๋ฆฐ ๊ฒฝ๋ก๋ฅผ ๊ถ์ฅํ๊ธฐ ์ํด ๊ฐ๋ฐ/๋ฐ๋ณต ์ํฌํ๋ก ์ค์ ์ด๋ฏธ DOM ์ค๋ฒ๋ ์ด๋ฅผ ํ์ํฉ๋๋ค.
๋ด ๊ฒฝํ์ ๋ฐ๋ฅด๋ฉด ์ด๋ฌํ ๋ฉ์์ง๋ ์ฝ๊ฐ์ ๋ถํธ์ ๊ฒช์ง๋ง ์ฝ์์์ ๋ณผ ์ ์๋ ๊ฒ๋ณด๋ค ๋ ๋ถ๋ช ํฉ๋๋ค. ๋๋ ๊ทธ๊ฒ์ด ์ ์ด๋ ๋น์ ์ด prod์ ๋ฐฐํฌํด์ผ ํ๋ ๊ฒ์ด ์๋ dev ๋ชจ๋์ ๋ ์ค์ ์ ๋๊ณ ์ต์ข ์ฌ์ฉ์์๊ฒ "๋ ๋น ๋ฅธ ๋ชจ๋"๋ฅผ ์ ๊ณตํ๋ ๋ ๋ง์ ์ฌ์ดํธ๋ก ์ด์ด์ง ๊ฒ์ด๋ผ๋ Dan์ ๋ง์ด ์ณ๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ด ๋ณ๊ฒฝ ํ์๋ ๊ฐ๋ฐ ๋ชจ๋๋ฅผ ์ธ์ํ๊ธฐ๊ฐ ๋ ์ด๋ ค์์ง ๊ฒ์ ๋๋ค. "๊ฒฝ๊ณ ๋ํ ์์๋ฅผ ์ ๊ฑฐํ๋ ๋ฐฉ๋ฒ"์ ๊ฒ์ํ๊ณ ํ๋ก๋์ ์ฉ ๋น๋์ ๋ํด ๋ฐฐ์ธ ๊ฒ์ ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์ด๋ ์์ ์ ๋ฐฐํฌ๋ ์ผ๋ถ ๊ฒฝ๊ณ ๋ฅผ ๋ฐ์ ์ ์์ผ๋ฉฐ ์ฌ์ฉ์์๊ฒ ๊ฒฝ๊ณ ๊ฐ ํ์๋ฉ๋๋ค. ๋๋ ์ด ๊ฒฝ์ฐ ์ฌ๋๋ค์ด React ์์ฒด๋ฅผ ๋น๋ํ์ง ์์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์๋ํ๋ฉด ์ฐ๋ฆฌ๋ ๋จ์ง ์์๋ฅผ ๋ถ์พํ๊ฒ ๋ณด์ฌ์ฃผ์ง ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ฐ๋ฆฌ๋ ๊ฐ๋ฐ ๋ชจ๋๊ฐ ํด์ผ ํ ์ผ์ ํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
์ค๋ฅ ๋๋ ์์ธ IMO์ฌ์ผ ํฉ๋๋ค. ๊ทธ๋ค์ ์ ๊ทธ๋ ์ง ์์ต๋๊น? ์์ธ๋ ์์ ์ ๊ฐ์ ํ์ง๋ง ๋ฌด์ํ ์ ์๋ ๊ฒฝ๊ณ ๋ ๊ทธ๋ ์ง ์์ต๋๋ค.
๊ทธ๊ฒ๋ค์ ๊ณ ์ณ์ ธ์ผ ํ์ง๋ง, ๋๋ ๋ ๊ธํ ์ผ์ด ์์ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด UI ํ๋กํ ํ์ /๋ชจ์ ์์ ์ ์์ฃผ ํ๊ณ ๊ทธ ๋์ React๊ฐ ๊ฒฝ๊ณ ํ ์ ์๋ ๋น ๋ฅด๊ณ ์ผ๋ฐ์ ์ผ๋ก ํ์ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค. ์ด๋ฌํ ๊ฒฝ๊ณ ๋ฅผ ์์ ํ๊ณ ์ถ์ง๋ง ์ ์ด๋ ๋ค์ ์๊ฐ์๋ ๋ชจ๋ ์ฝ๋๋ฅผ ๋ฒ๋ฆฌ์ง ์์ ๊ฒ์ด๋ผ๋ ์ฌ์ค์ ์๊ธฐ ์ ๊น์ง๋ ๋ณ๋ก ๊ฐ์์น โโ์์ต๋๋ค. ์ฌ๋๋ค์ด ์ฆ์ ์์ ํ๋๋ก ํ๋ฉด ์คํ ๊ฐ๋ฐ์ด ํฌ๊ฒ ๋๋ ค์ง๋๋ค.
๊ฒฝ๊ณ ์์ ์ ๊ทผ ๋ฐฉ์์ด ๋๋ฌด ๊ฑฐ์ฌ๋ฆฐ๋ค๊ณ ์๊ฐํ๋ ์ฌ๋๋ค์ ์ํด ๋ค๋ฅธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(์: VueJS)๋ ๋ฒ๊ทธ ์์ ๋๋ ๋๋ฆฐ ๊ฒฝ๋ก๋ฅผ ๊ถ์ฅํ๊ธฐ ์ํด ๊ฐ๋ฐ/๋ฐ๋ณต ์ํฌํ๋ก ์ค์ ์ด๋ฏธ DOM ์ค๋ฒ๋ ์ด๋ฅผ ํ์ํฉ๋๋ค.
์คํฌ๋ฆฐ์ท 2017-01-24 at 10 57 11 am
Vue ์์ฒด์์ ์จ ๊ฒ์ด ํ์คํฉ๋๊น? webpack-hot-middleware ์ ์ค๋ฅ ์ค๋ฒ๋ ์ด์ ํจ๊ป ํ์๋๋ webpack ๋น๋ ์ค๋ฅ์ ๋งค์ฐ ์ ์ฌํฉ๋๋ค. ์ด ๊ฒฝ์ฐ ๋ฒ์ฉ ํ๋ก ํธ์๋ ํ๋ ์์ํฌ๊ฐ ์๋ ์ค๋ฒ๋ ์ด๋ฅผ ์ถ๊ฐํ๋ ๊ฐ๋ฐ ์๊ฐ ๋น๋ ๋๊ตฌ์ด๊ธฐ ๋๋ฌธ์ ๋ฏธ๋ฌํ๊ฒ ๋ค๋ฆ ๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ๋๋ ๊ฒฝ๊ณ ์ค๋ฒ๋ ์ด์ ์ฐฌ์ฑํ์ง๋ง ๊ทธ๊ฒ์ด ๋ฌด์์ธ์ง, ์ ๊ฑฐ๊ธฐ์ ์๋์ง, ๊ฐ๋ฐ ๋ชจ๋๋ฅผ ๋ ๋ ๋นํ์ฑํํ ์ ์๊ณ ๋นํ์ฑํํด์ผ ํ๋ค๋ ์ค๋ช ํ ์คํธ๋ฅผ ํฌํจํด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๊ฒ์ด ์กฐ๊ธ ๊ธธ๋ค๋ฉด expando ๋ค์ - ๊ทธ๋ฌ๋ ๋ฉ์์ง๋ฅผ ์ ๋ฌํ๊ธฐ์ ์ข์ ์ฅ์์ฒ๋ผ ๋ณด์ ๋๋ค.
์ค๋ฒ๋ ์ด๊ฐ ์๋ 15.2.0๊ณผ ๊ฐ์ ์ ๋ฐ์ดํธ๊ฐ ๋๋ ต์ต๋๋ค. ์ฌ์ํ ์ถฉ๋๊ณผ ๊ฐ์๊ธฐ DOM ๋ ธ๋์ ์ ๋ฌ๋๋ props์ ๋ํด ๋ง ๊ทธ๋๋ก 100๋ฒ์ ๊ฒฝ๊ณ ๊ฐ ํ์๋ฉ๋๋ค. ์ค๋ฅ๊ฐ ์์ ์ ์์ง๋ง ๊ฐ๊ฐ์๊ฐ ๊ฒฝ๊ณ ๊ฐ ๊ทธ๋ฐ ์นจ์ ์ ์ธ ๊ณต๊ฐ์ ์ํ๋ค๊ณ ์๊ฐํ์ง ์์ต๋๋ค.
์ค๋ฅ๊ฐ ์์ ์ ์์ง๋ง ๊ฐ๊ฐ์๊ฐ ๊ฒฝ๊ณ ๊ฐ ๊ทธ๋ฐ ์นจ์ ์ ์ธ ๊ณต๊ฐ์ ์ํ๋ค๊ณ ์๊ฐํ์ง ์์ต๋๋ค.
์ด๊ฒ์ด ์ด์ ์ ๋งค์ฐ ๋ช ํํ๊ฒ ์ ๋ฌ๋์๋์ง๋ ๋ชจ๋ฅด๊ฒ ์ง๋ง ๋ ธ๋์ ์์ ๊ฒฝ๊ณ (#7360)์ ๋ํ ์์ด๋์ด๋ _๋ชจ๋ _ ๊ฒฝ๊ณ (์ง์ ์ค๋จ ๋๋ ๊ธฐํ)๋ฅผ ํ์ํ์ง ์๋ ๊ฒ์ด์์ต๋๋ค. ์คํ๋ ค ํ์ด _ํนํ ์ค์ํ๋ค๊ณ ์๊ฐํ๋ ํน์ ๊ฒฝ๊ณ ๊ฐ ์ด๋ฌํ ๋ฐฉ์์ผ๋ก ๊ฐ์กฐ ํ์๋ฉ๋๋ค. ๋๋จธ์ง๋ ์๋ง๋ ์ฝ์์ ๋จ์ ์์ ๊ฒ์ ๋๋ค.
์ ์ด๋ 1~2์ฃผ ์ ์ ์ด ๊ธฐ๋ฅ์ ๋ํด Tom๊ณผ ๋ด๊ฐ ๋๋ ๋ํ์์ ๋ฐ์ทํ ๋ด์ฉ์ ๋๋ค.
15.2์ prop ๊ฒฝ๊ณ ๋ IMO์ ์ค์์์ผ๋ฉฐ ์ผ๋ฐ์ ์ธ MO๋ฅผ ๋ํ๋ด์ง ์์์ต๋๋ค. ์ด๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ๋ง์ด๋ ๋ฒ์ ์ผ๋ก ๊ฒฝ๊ณ ์์ค์ ์ ์ดํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์์ผ๋ฉด ํฉ๋๋ค.
์ฐ๋ฆฌ ํ์ด ํ๋ก๋์ ๋น๋๋ฅผ ์ฌ์ฉํ์ง ์๋ ์ฃผ๋ ์ด์ ๋ ํ ์คํธ ์ ํธ๋ฆฌํฐ๊ฐ ํฌํจ๋์ด ์์ง ์๊ธฐ ๋๋ฌธ์ JS ๋จ์ ํ ์คํธ๋ฅผ ์คํํ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
๋จผ์ React ํ( @sebmarkbage , @gaearon , @tomocchino ๋ฐ ๊ธฐํ)์๊ฒ ์ด ๋ฌธ์ ์ ๋ํด ๋ ผ์ํ๊ณ ์ด๋ฒ ๋ถ๊ธฐ BlinkOn ๋ฐ ๊ธฐํ ๋๊ธฐํ์์ ์ฑ๋ฅ ๋ฐ ๋ชจ๋ฐ์ผ์ ๋ํด ๊ณต๊ฐ์ ์ผ๋ก ์ด์ผ๊ธฐํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
์ํ ํ์ธ
https://github.com/facebook/react/pull/7360 ์ @aweary ์ ๋ฐ๋ฅด๋ฉด ์ด ํน์ ๋ฌธ์ ์ ๋ํ Yellow Box ์๋ฃจ์ ์ React์ ์ฐ์ ์์๊ฐ ๋์ V16 ์์ ์ด ์๋ฃ๋ ๋๊น์ง ๋ณด๋ฅ๋์์ง๋ง ์ฌ์ ํ ๋ฐ์ํด์ผ ํฉ๋๋ค. https://github.com/facebook/fbjs/pull/165 ๋ Fiber์์ ๊ตฌํ๋๊ณ ๊ตฌํ๋์ด์ผ ํฉ๋๋ค. ํํฌ๋ฅผ ๋ ธ์ถํ๊ธฐ ์ํ ์ข์ ๊ณต๊ฐ API๋ ์ ์ํด์ผ ํฉ๋๋ค. ๋ด ์๊ฐ๋ฝ์ ์งํฌ๊ฑฐ์ผ ๐ค
์ด ๋ฌธ์ ๋ ์ฌ์ ํ ๋ง์ฐํ ๊ฒ ๊ฐ์ต๋๋ค
๋ด ์ฑ
์์ ์๋ ์๋น์์ ํ๋ก๋์
์ฑ์ ์ฌ์ ํ โโDEV ๋ชจ๋๋ฅผ ํ๋ก๋์
์ผ๋ก ์ ๊ณตํ๊ณ ์์ต๋๋ค. ์ฌ๊ธฐ์์ ๋น๋์์ When deploying React apps to production
๋๋ฒ๊ทธ ๋ฌธ์์ด์ ๋ณผ ์ ์์ต๋๋ค.
https://cdnjs.cloudflare.com/ajax/libs/react/15.3.1/react.js (tombraider.com)
https://shared.reliclink.com/dlls/vendor-f3e016f6037eb107ffc0.live-shared.min.js (dawnofwar.com)
https://d1xx3pvec9nqb7.cloudfront.net/media/js/thread.af65c1a02d15.js(thread.com )
http://www.sothebys.com/etc/designs/redesigns/sothebys/redesignlibs.min.js (sothebys.com)
๋๋ ์ฌ์ ํ ์์ ๋ด์ฉ์ ๋ํ ์ฝ์์ DEV ๋ชจ๋ ๊ฒฝ๊ณ ๋ฅผ ๊ธฐ๋กํ๊ธฐ ์ํด pre-Yellow Box ์ด๋์ด ์ฝ๊ฐ์ ์ํฅ์ ๋ฏธ์น ์ ์๋ค๋ ๊ฒฌํด๋ฅผ ๊ฐ๊ณ ์์ต๋๋ค. ์ถฉ๋ ๋ณด๊ณ ๊ฐ ์ด๋ฅผ ๊ณ ๋ฅผ ์ ์๋๋ก ์ฝ์ ์ค๋ฅ๋ฅผ ๋ฐ์์ํค์๋ Sebastian์ ์ ์๋ ๊ณ ๋ คํ ๊ฐ์น๊ฐ ์๋ค๊ณ ๋๊ผ์ต๋๋ค.
๋ฐ๋์ ์ฌ๊ธฐ๋ก ์ฎ๊ธฐ๊ธฐ ์ํด ์ฐ๋ฆฌ๋ ๋ ๋ฌด์์ ํ ์ ์์ต๋๊น?
๋ ๋์ ์นํธ? ์ ๋ DEV ๋ชจ๋๋ฅผ ํ๋ก๋์ ์ ์ ๊ณตํ์ง ์๋ ์ฌ๋๋ค์ ๊ณ์ ์นํธ ํ ๊ฒ์ ์ฝ์ํ๊ฒ ๋์ด ๊ธฐ์ฉ๋๋ค. ํ์ง๋ง V16 ์ดํ์ ๊ณต์ ์๋ฃจ์ ์ ์ถ์ํ ์ ์๋์ง ์๊ณ ์ถ์ต๋๋ค. :)
๋จ๊ธฐ์ ์ผ๋ก๋ create-react-app
๊ฐ ์ ํ๋ก์ ํธ๊ฐ ์ด ๋ฌธ์ ๋ฅผ ํผํ๋ ๋ฐ ๋์์ด ๋๋ ์ข์ ์์น์ ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
์ค์น ๋ฌธ์ ๊ฐ์ ์ฌํญ
๋ค๋ฅธ ๋ชจ๋ ์ฌ๋๋ค์ ์ํด Installing React
์ ๋ชฉ ์๋์ ๋ช
ํํ๊ณ ๋์ ๋๋ ์ค๋ช
์ ํฌํจํ์ฌ https://facebook.github.io/react/docs/installation.html ์ ๋ํ ์ง์์ด ์์ต๋๊น? ์์ฐ?
์ฌ์ฉ์๋ก์ ์ ๋ https://facebook.github.io/react/docs/installation.html#development -and-production-versions๋ฅผ ์ธ๋ป ๋ณด๊ธฐ์ ์ฝ์ ๋งํ ํฐ ๋๊ธฐ๊ฐ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
์๊ฐ?
์ฐ๋ฆฌ ํ์ด ํ๋ก๋์ ๋น๋๋ฅผ ์ฌ์ฉํ์ง ์๋ ์ฃผ๋ ์ด์ ๋ ํ ์คํธ ์ ํธ๋ฆฌํฐ๊ฐ ํฌํจ๋์ด ์์ง ์๊ธฐ ๋๋ฌธ์ JS ๋จ์ ํ ์คํธ๋ฅผ ์คํํ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
๋๋ ์ด๊ฒ์ ๋ํด ํผ๋์ค๋ฝ๋ค. ํ๋ก๋์ ์น ์ฌ์ดํธ์์ ํ ์คํธ๋ฅผ ์คํํ๊ณ ์์ต๋๊น? ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ ํ๋ก๋์ ์น ์ฌ์ดํธ์์ ํ๋ก๋์ ๋น๋๋ฅผ ์ฌ์ฉํ๊ณ ๊ฐ๋ฐ ์ค์ ๊ฐ๋ฐ ๋น๋๋ฅผ ์ฌ์ฉํ์ง ๋ชปํ๋ ์ด์ ๋ ๋ฌด์์ ๋๊น?
๋ค๋ฅธ ๋ชจ๋ ์ฌ๋๋ค์ ์ํด ํ๋ก๋์ ์์ DEV ๋ชจ๋๋ฅผ ์ผ๋์ ๋๋๋ก ์ฌ๋๋ค์๊ฒ ์๊ธฐ์ํค๋ React ์ค์น ์ ๋ชฉ ์๋์ ๋ช ํํ๊ณ ๊ฐ์์ ์ธ ์ค๋ช ์ ํฌํจํ์ฌ https://facebook.github.io/react/docs/installation.html ์ ๋ํ ์ง์์ด ์์ต๋๊น?
ํ์ ํ๋. PR์ ๋ณด๋ด๊ณ ์ถ์ต๋๊น?
ํ์ ํ๋. PR์ ๋ณด๋ด๊ณ ์ถ์ต๋๊น?
๋ฌด์๋ณด๋ค ํ๋ณตํฉ๋๋ค.
์๋ง๋ ๋ฒค์น๋งํฌ์ ๋ํ ๋จ์ด๋ ์ฑ๋ฅ์ dev ๋ชจ๋์์ ๋ฐ์๊ณผ ๋น๊ตํ๋ ์ฌ๋๋ค์ ๊ต์กํ๋ ๋ฐ ๋์์ด ๋ ๊ฒ์ ๋๋ค.
react devtools ํ์ฅ์ ํ์ฉํ์ฌ dev ๋ชจ๋์์ react๋ฅผ ์ฌ์ฉํ์ฌ ํ์ด์ง๋ฅผ ์ด ๋ ์๋ฆผ์ด๋ ๋ถ๋ช ํ ๊ฒ์ ํ์ํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๊น?
๋๋ ์ด ์์ด๋์ด๋ฅผ ์ข์ํ๋ค! devtools์ ๋ํด ์ ์๋ ์์ด์ฝ ์ธํธ๋ฅผ ๋ชจ์์ต๋๋ค(facebook/react-devtools/pull/652 ์ฐธ์กฐ).
์ฐ๋ฆฌ๋ ๊ฑฐ๊พธ๋ก ๊ทธ๋ฆฌ๊ณ ๋ฏธ๋์ ์์ ํ ๋ฐฉ์์ผ๋ก dev vs prod React๋ฅผ ๊ฐ์งํ๋ ๋ฐฉ๋ฒ์ ๊ฒฐ์ ํด์ผ ํ์ง๋ง ์์์ผ ํ์ ์์ ์ ์ถ๊ฐํ์ต๋๋ค.
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ช ๊ฐ์ง ํฉ๋ฆฌ์ ์ธ ๋จ๊ณ๋ฅผ ์ํํ์ต๋๋ค.
React DevTools(์ต๋ 700K ์ฌ์ฉ์ ํฌํจ)๋ ์ด์ ๊ฐ๋ฐ ๋น๋์ ๋ํด ๊ณ ์ ํ ๋นจ๊ฐ์ ์์ด์ฝ์ ํ์ํฉ๋๋ค. ์ด๊ฒ์ ์ฌ๋๋ค์ด ๋ฒ์ ๊ฐ์ ์ฐจ์ด์ ์ ์ผ์ฐ ๋ฐฐ์ฐ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ๋ํ ๊ฐ๋ฐ์๊ฐ ๋ฐฉ๋ฌธํ๋ ์ฌ์ดํธ์์ ์ด๋ฅผ ์์์ฐจ๋ฆฌ๊ณ ์์ ํ๋ ์ฌ๋๋ค์๊ฒ ๋ณด๊ณ ํ๊ธฐ ๋๋ฌธ์ ๋๋ฃ ์๋ ฅ๋ ๋ฐ์ํฉ๋๋ค. ์ฐ๋ฆฌ๋ ๋ช ๊ฐ์ง ์ฃผ์ ์ฌ์ดํธ์์ ์ด ๊ธฐ๋ฅ์ ์ถ์ํ ์ง ๋ฉฐ์น ๋ง์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๊ฒ์ ๋ณด์์ต๋๋ค.
React DevTools์ ์๋ฆผ์ ๋ชจ๋ ์ฃผ์ ๋ฒ๋ค๋ฌ์ ๋ํ ํ๋ก๋์ ๋น๋๋ฅผ ์์ฑํ๊ธฐ ์ํ ์ง์นจ์ ๊ฒ์ํ ์น์ฌ์ดํธ๋ก ์ฐ๊ฒฐ๋ฉ๋๋ค. ๋ํ ์ค์น ํ์ด์ง์์ ๋ ๋์ ๋๊ฒ ๋ง๋ค์์ต๋๋ค.
Create React App์ ๊ณ์ํด์ ์ธ๊ธฐ๋ฅผ ์ป์์ต๋๋ค. ๋ณ๋์ ๋ช ๋ น์ผ๋ก ์ด๊ธฐ์ ์ด๋ฌํ ๊ตฌ๋ถ์ ๊ฐ๋ฅด์นฉ๋๋ค. ๋ํ ํฐ๋ฏธ๋์์ ๊ฐ๋ฐ ๋ชจ๋์ ๋ํ ์๊ตฌ ์๋ฆผ์ ํ์ํฉ๋๋ค.
React 16 ๋ฒ ํ 1 (๋ฐ ์ถ๊ฐ ๋ฆด๋ฆฌ์ค)์ react.development.js
๋ฐ react.production.min.js
๋ฅผ ํ์ผ ์ด๋ฆ์ผ๋ก ์ ๊ณตํ์ฌ ๋น์ถ์ ๋น๋๋ฅผ ํ๋ก๋์
์์ ์ฌ์ฉํด์๋ ์ ๋๋ค๋ ์ ์ ๋ถ๋ช
ํ ํฉ๋๋ค.
์์ผ๋ก ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ ๋ง์ ๋ฐฉ๋ฒ์ ๋ชจ์ํ ์ ์๋ค๊ณ ์๊ฐํ์ง๋ง ์ง๊ธ์ ๋ ๊ณผ๊ฐํ ์กฐ์น ์์ด ์์ผ๋ก ๋์๊ฐ ์ ์๊ณ ๋์์ด ๋๋์ง ํ์ธํ ์ ์์ต๋๋ค. ํ ๋ก ์ ์ฐธ์ฌํด์ฃผ์ ๋ชจ๋ ๋ถ๋ค๊ป ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋๋ ์ผ๋ฐ์ ์ผ๋ก ์์ ์ด ์ด๋ฏธ ์ ๊ธฐ๋ ๊ฒ์ฒ๋ผ ๋๊ปด์ง ๋ ๊ธด ํ ๋ก ์ ์ถ๊ฐํ์ง ์์ง๋ง ์ด ์ ์ ๋์ํ๊ณ ๊ฐ์กฐํ๊ณ ์ถ์ต๋๋ค. DOM์ ๋ง์ง๊ณ ๋ด๊ฐ dev ๋ฒ์ ์ ์ฌ์ฉํ๊ณ ์๋ค๊ณ ๊ฒฝ๊ณ ํ๋ React ํฐ ์ค์๊ฐ ๋ ๊ฒ์ ๋๋ค. ๋ด๊ฐ ์๋ ํ ๋ค๋ฅธ ํ๋ ์์ํฌ์๋ ์ด์ ๋ํ ์ ๋ก๊ฐ ์์ต๋๋ค.
๋ชจ๋ ํํ ๋ฆฌ์ผ, ๋ชจ๋ ํ๋ ์ด๊ทธ๋ผ์ด๋, dev ๋ชจ๋๋ฅผ ์ฌ์ฉํ์ฌ React๋ฅผ ๊ฐ๋ฅด์น๋ ๋ชจ๋ ์์ ์ฌ์ด๋ ํ๋ก์ ํธ๋ฅผ ์์ํด ๋ณด์ธ์. React์์ ์ฌ๋ฏธ์๋ ๊ฒ์ ํ์ํ๊ฑฐ๋ ํ ์คํธ ์ผ์ด์ค๋ฅผ ๋ถ๋ฆฌํ๋ ค๊ณ ํจ๊ป ํ๋ ๋ชจ๋ ์์ ํ ์คํธ ์ฌ์ดํธ. ์๋์ผ๋ก ๋นํ์ฑํํด์ผ ํ๋ ์ด๋ฌํ ์ฌ์ดํธ์ ๋ชจ๋ ๋จ์ผ ๊ฒฝ๊ณ ๋ฅผ ํตํด ๋ฐ์ํ๋ฉด ๋๋ ์์ฒญ๋๊ฒ ํ๋ฅผ ๋ผ ๊ฒ์ ๋๋ค. ๊ทธ๊ฒ์ ์์์ ์ธ ๋ถ๋ชจ์ฒ๋ผ ๋๊ปด์ง๊ณ ์๋ก์ด ๊ฒ์ ์๋ํ ๋๋ง๋ค ์๋ชฉ์ ๋๋ฆฌ๊ธฐ ๋๋ฌธ์ React๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์ ๊ทน์ ์ผ๋ก ๊ถ์ฅํ์ง ์์ต๋๋ค .
์ฌ์ง์ด 2์๊ฐ์ ํ๋ฒ์ฉ ? ์๋์ ๊ด์ฐฎ์ต๋๋ค. ์ด์ ๊ฐ์ ๋์์๋ ์์๋ฆฌ๋ ํ์คํ ์ฌ์ฉ์๊ฐ React์์ ๊ฐ๋ฐํ๋ ๊ฒ์ ๋ฐฉํดํ ๊ฒ์ด๊ณ ์์งํ ๋งํด์ ์ฌ๋๋ค์ด ๋ค๋ฅธ ํ๋ ์์ํฌ๋ฅผ ์ฑํํ๋๋ก ๋ฐ์ด๋ผ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์ด๊ฒ์ด Chrome ๊ฐ๋ฐ์๊ฐ ์ํ๋ ๊ฒ์ด ์๋๊น์?
์, ์ด๊ฒ์ด ์ด๋ป๊ฒ๋ ์์ฐ์ ๋ค์ด๊ฐ ๊ฒ์ด๋ผ๋ ์ฌ์ค์ ๋งํ ๊ฒ๋ ์๊ณ , ํน์ ํ์ด React๋ฅผ ์ฑํํ๋๋ก ์ค๋ํ๋ ๊ฒ์ ์ด๋ฏธ ์ถฉ๋ถํ ์ด๋ ต์ต๋๋ค.
๋ด๊ฐ React์ ๋ํด ๊ฐ์ฅ ์ข์ํ๋ ๊ฒ์
ReactDOM.render(...)
๋ฅผ ํธ์ถํ ๋๊น์ง ์๋ฌด ๊ฒ๋ ํ์ง ์๊ณ , ๊ทธ๋ ๊ฒ ํ ๋ ์ฌ์ฉ์๊ฐ ์ง์ํ DOM์๋ง ๋ฌผ๊ฑด์ ๋ฃ๋๋ค๋ ๊ฒ์ ๋๋ค. ์ด๊ฒ์ด ๋ฐ๋ก ์ด๊ฒ์ด ํ๋ฅญํ๊ณ ๊ฒฉ๋ฆฌ๋ ๊ธฐ๋ฅ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ ์ด์ ์ ๋๋ค.์ฌ๋๋ค์ด ์ถ์๋์ง ์์ ๋ฒ๋ค์ ๋ฐฐ์กํ๋์ง ์ฌ๋ถ๋ ๊ฐ์งํด์ผ ํฉ๋๊น? ์บ์ฑํด์ผ ํ ๋ ์บ์ฑํ์ง ์์ผ๋ฉด ์ด๋ป๊ฒ ๋ฉ๋๊น? nginx๋ฅผ ์ต์ ์ผ๋ก ๊ตฌ์ฑํ์ง ์์ ๊ฒฝ์ฐ๋ ์ด๋ป๊ฒ ๋ฉ๋๊น? ์๋๋ฉด
shouldComponentUpdate
๋ฅผ ์ฌ์ฉํด์ผ ํ ๋ ์ฌ์ฉํ์ง ์์ต๋๊น? ์๋๋ฉด ํ์ํ์ง ์์๋ฐ๋ ๋ชจ๋ ๊ฒ์ ๋ถํ์ํ๊ฒ ๋ ๋๋งํ๊ณ ์์ต๋๊น?์ฑ๋ฅ์ด ์ข์ง ์์ ๋ฐ์๋ ๋ช ๊ฐ์ง ์ด์ ๊ฐ ์์ผ๋ฉฐ React์ ๊ฐ๋ฐ ๋ชจ๋์์๋ง ์ด๋ฅผ ๋น๋ํ๋ ๊ฒ์ ์๋ชป๋ ๊ฒ์ ๋๋ค. ์ฌ์ดํธ๋ฅผ ๋ฐฐํฌํ ๋ ์ต์ ํ๋ ์ฌ์ดํธ๋ฅผ ๋ฐฐํฌํ๋ ๋ฐฉ๋ฒ์ ์ดํดํ๊ณ ์์ด์ผ ํฉ๋๋ค. ์ฐ๋ฆฌ๊ฐ ํ ์ ์๋ ์ผ์ด ์๋ค๋ ๋ง์ ์๋์ง๋ง ์ด ๋ฌธ์ ์ ํต์ฌ ์ด์ ๋ ๋ฒค์น๋งํฌ ์์ฑ์๊ฐ ์ค์ฌ๋ฅผ ํ์ง ์๊ณ ์์ผ๋ฉฐ ์ฐ๋ฆฌ๊ฐ ๊ทธ ๋น์ฉ์ ์ง๋ถํ ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ ๋ถ๋ฌ๋ผ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ์ฐพ์์ผ ํฉ๋๋ค.