1. Sync, Async์ ์ฐจ์ด์ (๋๊ธฐ, ๋น๋๊ธฐ์ ์ฐจ์ด์ )์ ๋ํด์ ์ค๋ช ํด์ฃผ์ธ์.
Sync๋ ์์ ์์ฒญ์ด ์ด๋ค์ง๊ณ , ์์ฒญ ์๋ต์ ๊ธฐ๋ค๋ฆฌ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. Async๋ ํน์ ํ ์์ฒญ์ ์๋ต์ ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ๋ค์ ์์ ์ ์ํํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์๋ฐ์คํฌ๋ฆฝํธ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฑ๊ธ์ค๋ ๋์ด๊ธฐ ๋๋ฌธ์ ์์ฒญ๋ ์์ ์ ํ๋์ฉ ์ํํ์ง๋ง setTimeout์ด๋ fetch๊ณผ ๊ฐ์ Web API๋ฅผ ์ฌ์ฉํ์ฌ ๋น๋๊ธฐ๋ก ์ฒ๋ฆฌํ ์ ์๊ฒ ๋ฉ๋๋ค.
2. ์๋ฐ์คํฌ๋ฆฝํธ์ ๋์ ์๋ฆฌ์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
์๋ฐ์คํฌ๋ฆฝํธ๋ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง ์์์ ๋์ํ๋๋ฐ์, ๋ํ์ ์ผ๋ก ๊ตฌ๊ธ์ V8์์ง์ด ์์ต๋๋ค. ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ๋ฉ๋ชจ๋ฆฌํ๊ณผ ์ฝ์คํ์ผ๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค. ๋ฉ๋ชจ๋ฆฌ ํ์ ๋ณ์, ํจ์ ๋ฑ ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ด ์ด๋ฃจ์ด์ง๋ ๊ณต๊ฐ์ ๋๋ค. ์ฝ์คํ์๋ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๋ฅผ ํ ์ค์ฉ ์ฝ์ผ๋ฉด์ ์ํํ ์์ ๋ค์ด ์์ด๊ณ , ์์ ์ด ์ํ๋๋ฉด ์ฝ์คํ์์ ์ ๊ฑฐ๋ฉ๋๋ค. ์๋ฐ์คํฌ๋ฆฝํธ๋ ์ฑ๊ธ์ค๋ ๋์ด๊ธฐ ๋๋ฌธ์ ํ๋ฒ์ ํ๋์ ์์ ๋ง ์ํํ ์ ์์ต๋๋ค. ํ์ง๋ง Web API๋ฅผ ์ด์ฉํ์ฌ ๋น๋๊ธฐ๋ก ์์ ์ ์ํํ ์ ์๋๋ฐ์, ์ฝ์คํ์์ ์คํ๋ ๋น๋๊ธฐ ํจ์๋ Web API๋ฅผ ํธ์ถํ๊ณ , Web API๋ ์ฝ๋ฐฑํจ์๋ฅผ Task Queue(Callback Queue)์ ๋ฃ์ต๋๋ค. ์ด๋ฒคํธ Loop๋ฅผ ํตํด ์ฝ์คํ๊ณผ ํ์คํฌํ๋ฅผ ํ์ธํ์ฌ ์ฝ์คํ์ ์๋ ์์ ์ ์ฐ์ ์ ์ผ๋ก ์ฒ๋ฆฌํ๊ณ ์ดํ, ํ์คํฌํ์ ์๋ ์์ ์ ์ฝ์คํ์ ๋ฃ์ด ์ฒ๋ฆฌํ๊ฒ ๋ฉ๋๋ค.
3. ํด๋ก์ ์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
ํด๋ก์ ๋ ์ ์ธ๋์๋ ๊ทธ๋์ ๋ ์์ปฌ ์ค์ฝํ๋ฅผ ๊ธฐ์ตํ๋ ํจ์์ ๋๋ค. ์๋ฐ์คํฌ๋ฆฝํธ์์ ๋ชจ๋ ํจ์๋ค์ Environment๋ผ๋ ํ๋กํผํฐ๋ฅผ ๊ฐ์ง๋๋ฐ ์ฌ๊ธฐ์ ์ธ๋ถ ํจ์์ ๋ณ์์ ์ฐธ์กฐ๊ฐ์ด ์ ์ฅ๋์ด ์ธ๋ถ ํจ์์ ๋ณ์์ ์ ๊ทผ์ด ๊ฐ๋ฅํฉ๋๋ค.
4. ํด๋ก์ ์ ๋จ์ ๊ณผ ํด๊ฒฐ๋ฐฉ๋ฒ์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
ํด๋ก์ ๋ ์ธ๋ถํ๊ฒฝ์ ๋ณ์๋ฅผ ๊ณ์ ๊ธฐ์ตํ๊ณ ์๊ธฐ ๋๋ฌธ์ ๊ฐ๋น์ง์ปฌ๋ํฐ์ ๋์์ด ๋์ง ์์ ๋ฉ๋ชจ๋ฆฌ ๋์๊ฐ ์ผ์ด๋ ์ ์๋ค๋ ๋จ์ ์ด ์์ต๋๋ค. ์ด๋ null์ ํ ๋นํด์ค์ผ๋ก์จ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํด์ ์ํฌ ์ ์์ต๋๋ค.
5. reflow์ repaint์ ์ฐจ์ด์ ์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
reflow์ repaint๋ ๋ชจ๋ ๋ ๋๋ง๊ณผ ๊ด๋ จ์ด ์์ต๋๋ค.
ํ๋ฉด์ด ๋ฆฌ๋๋๋ง ๋์ ๋, ๊ฐ ์ํฉ์ ๋ฐ๋ผ reflow์ repaint๊ฐ ์ผ์ด๋๊ฒ ๋ฉ๋๋ค. reflow๋ ๋ธ๋ผ์ฐ์ ๊ฐ ํ์ด์ง์ ๋ ์ด์์์ ๋ค์ ๊ณ์ฐํ๋ ๊ณผ์ ์ ์๋ฏธํ๊ณ repaint๋ ๊ณ์ฐ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํ์ผ๋ก ํ๋ฉด์ ๋ค์ ๊ทธ๋ฆฌ๋ ๊ณผ์ ์ ๋๋ค.
reflow๋ DOM์ ๊ตฌ์กฐ๊ฐ ๋ณ๊ฒฝ๋๊ฑฐ๋ ์์์ ํฌ๊ธฐ๋ ์์น๊ฐ ๋ณ๊ฒฝ๋ ๋ ์ผ์ด๋ฉ๋๋ค. repaint๋ ๋ ์ด์์์ ๊ทธ๋๋ก์ด๊ณ ์์์ด๋ ๋ฐฐ๊ฒฝ ๋ฑ์ ์คํ์ผ๋ง ๋ณ๊ฒฝ๋์์ ๋ ์ผ์ด๋ฉ๋๋ค. ๋ ์ด์์์ ๋ค์ ๊ณ์ฐํ๋ reflow๊ฐ ์ผ์ด๋๋ฉด repaint๊ฐ ํ์ฐ์ ์ผ๋ก ์ผ์ด๋๊ธฐ๋ ํ๊ณ , reflow๋ ๋น์ฉ์ด ๋ ๋ค๊ธฐ ๋๋ฌธ์ ๋ ์ด์์ ๊ณ์ฐ์ด ๋ค์ ์ผ์ด๋์ง ์๋๋ก ๊ด๋ฆฌํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
6. reflow๊ฐ ๋ค์ ์ผ์ด๋์ง ์๊ฒ ํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผํ๋์?
reflow๋ฅผ ์ ๋ฐํ๋ CSS ์์ฑ ์ฌ์ฉ์ ์ต์ํํด์ผํฉ๋๋ค. width, height, margin, padding, border ๋ฑ์ ์์ฑ์ ์์์ ๋ ์ด์์์ ๋ค์ ๊ณ์ฐํ๊ฒ ํ๊ธฐ๋๋ฌธ์ reflow๋ฅผ ์ผ์ผํต๋๋ค. ๋ฏธ๋ฆฌ ํด๋น ์์ฑ ๊ฐ์ ์ค์ ํด ์ด๊ธฐ ๋ก๋ ์์๋ง ๊ณ์ฐ์ด ์ด๋ฃจ์ด์ง๋๋ก ํ๊ณ , ์ดํ์๋ ๋ณ๊ฒฝํ์ง ์๋ ๊ฒ์ด ์ข์ต๋๋ค.
7. ์คํ์ปจํ ์คํธ์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
์คํ์ปจํ ์คํธ๋ ์๋ฐ์คํฌ๋ฆฝํธ์์ ์ฝ๋๊ฐ ์คํ๋๋ ํ๊ฒฝ์ ์๋ฏธํฉ๋๋ค. ํจ์์ ๊ฐ์ด ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ด ์ฝ๋๋ฅผ ์คํํ ๋, ๊ทธ ์ฝ๋๊ฐ ์คํ๋ ๋์ ํ๊ฒฝ์ ์ ์ํ๊ณ ๊ด๋ฆฌํ๊ธฐ ์ํด ์คํ์ปจํ ์คํธ๊ฐ ์กด์ฌํฉ๋๋ค.
์คํ์ปจํ ์คํธ๋ ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ์ฒ์ ์คํ๋ ๋ ์ ์ญ์ผ๋ก ๋จผ์ ์์ฑ๋๊ณ , ํจ์๊ฐ ํธ์ถ๋ ๋ ์ญ์ ์์ฑ๋ฉ๋๋ค. ์ด๋ฌํ ์คํ ์ปจํ ์คํธ๋ ์์ฑ๋ ๋ ์ฝ์คํ์ ์์ด๊ฒ๋๋ฉฐ ํจ์๊ฐ ์ข ๋ฃ๋๊ฑฐ๋ ํ๋ก๊ทธ๋จ์ด ์ข ๋ฃ๋ ๋ ์ฌ๋ผ์ง๊ฒ ๋ฉ๋๋ค.
8. ์คํ์ปจํ ์คํธ๋ ์ด๋ค ๊ตฌ์ฑ ์์๋ก ์ด๋ฃจ์ด์ ธ ์๋์?
์คํ์ปจํ ์คํธ๋ ๋ณ์ ๊ฐ์ฒด์ ์ค์ฝํ์ฒด์ธ, this ๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค.
๋จผ์ ๋ณ์ ๊ฐ์ฒด๋ ์คํ ์ปจํ ์คํธ ๋ด์์ ์ฌ์ฉ๋๋ ๋ณ์์ ํจ์์ ์ ์ธ์ ์ ์ฅํ๋ ๊ณต๊ฐ์ ๋๋ค.
์ค์ฝํ ์ฒด์ธ์ ํ์ฌ ์คํ ์ค์ธ ์ปจํ ์คํธ์ ์ธ๋ถ ๋ ์์ปฌ ํ๊ฒฝ์ ์ฐ๊ฒฐ์ ์ ์งํฉ๋๋ค. ๋ฐ๋ผ์ ๋ณ์๋ฅผ ์ฐธ์กฐํ ๋ ํ์ฌ ์คํ์ปจํ ์คํธ์์ ์ฐพ์ง ๋ชปํ๋ฉด ์ค์ฝํ ์ฒด์ธ์ ํตํด ์ธ๋ถ ํ๊ฒฝ์์ ๋ณ์๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค.
๋ง์ง๋ง์ผ๋ก this๋ ์คํ ์ปจํ ์คํธ์ ๋ฐ๋ผ ์ฐธ์กฐํ๋ ๊ฐ์ฒด๊ฐ ๋ฌ๋ผ์ง๋๋ค.
์ด๋ฌํ ๊ตฌ์ฑ ์์๋ค์ ํตํด ์ฝ๋๊ฐ ์คํ๋๋ ๋์์ ํ๊ฒฝ์ ๊ด๋ฆฌํ๊ณ ์ฝ๋๋ฅผ ์คํํ ๋ ๋ณ์์ ์ ํจ ๋ฒ์๋ ํจ์ ํธ์ถ์ ๋งฅ๋ฝ์ ๊ฒฐ์ ์ง์ ์ ์์ต๋๋ค.
9. ์ด๋ฏธ์ง ์ต์ ํ ๊ฒฝํ์ด ์๋๋ฐ ์ด๋ค ๋ฐฉ์์ผ๋ก ์งํ๋์๋์ง ์ค๋ช ํด์ฃผ์ธ์.(๊ฐ์ธ์ง๋ฌธ)
์จ๋ผ์ธ ์กธ์ ์ ์ ์ฌ์ดํธ๋ฅผ ์ด์ํ๋ฉฐ ์ด๋ฏธ์ง ์ต์ ํ๋ฅผ ์งํํ์ต๋๋ค. 20MB์ด์์ ์ฉ๋์ด ํฐ ์ด๋ฏธ์ง๋ฅผ ์ฃผ๋ก ์ฌ์ฉํ๊ณ ์๋ ์กธ์ ์ํ ์ฌ์ดํธ์ ํน์ฑ์ ๊ณ ๋ คํ์ฌ ์ฌ์ฉ์๊ฐ ๊ธด ๋ก๋ฉ์์ด ๋น ๋ฅด๊ฒ ์ํ์ ๊ฐ์ํ ์ ์๋๋ก ์ด๋ฏธ์ง ์ต์ ํ๋ฅผ ์งํํ์ต๋๋ค.
๋จผ์ ํ์ผ ํฌ๋งท์ ๋ณ๊ฒฝํ๋ ์์ ์ ์งํํ์ต๋๋ค. webp ํฌ๋งท์ ์ฌ์ฉํ์ฌ ์ฉ๋์ ๊ฐ์ ํ๋๋ฐ์, webp ํฌ๋งท์ ๊ตฌ๊ธ์์ ๋ฐํํ ํฌ๋งท์ผ๋ก ์์ถ ํจ๊ณผ๊ฐ ์ข์ ๋ง์ ์ฉ๋์ ์ค์ผ ์ ์๊ธฐ ๋๋ฌธ์ png ํฌ๋งท์์ webp๋ก ๋ณ๊ฒฝํ๊ฒ ๋์์ต๋๋ค. ๊ทธ ๊ฒฐ๊ณผ png ํฌ๋งท์ผ๋๋ณด๋ค 31%์ ์ฉ๋ ๊ฐ์ ์ด ์์์ต๋๋ค.
๋๋ฒ์งธ๋ก ์ด๋ฏธ์ง ์ฌ์ด์ฆ๊ฐ ์ค์ ์น์ฌ์ดํธ์์ ์ฌ์ฉํ๋ ๊ฒ๋ณด๋ค 1.5๋ฐฐ์ ๋ ํฐ ์ฌ์ด์ฆ๋ก ์ฌ์ฉ๋๊ณ ์์ด์ ์นํ์ด์ง์์ ์ฌ์ฉํ๋ ์ต๋ ์ฌ์ด์ฆ์ ์ด๋ฏธ์ง๋ก ๋ง์ถ์ด ์ ๊ณตํ์์ต๋๋ค. ์ด๋ฅผ ํตํด ์ถ๊ฐ์ ์ธ ์ฉ๋ ๊ฐ์ ์ ์ด๋ฃจ์์ต๋๋ค.
๋ง์ง๋ง์ผ๋ก AWS cloudfront์์ ์ ๊ณตํ๋ CDN ๊ธฐ์ ์ ์ด์ฉํ์ฌ ์ฃ์ง ์คํ ์ด์ ์ ์ด๋ฏธ์ง ๋ฆฌ์์ค๋ฅผ ์บ์ฑํ์ฌ ์ฌ์ฉํ ์ ์๋๋ก ํ์์ต๋๋ค. ์ด๋ฅผ ํตํด ์ฌ์ฉ์๋ ์บ์ฑ๋ ์ด๋ฏธ์ง๋ฅผ ๋ ๋น ๋ฅด๊ฒ ๋ก๋ฉํ ์ ์์์ต๋๋ค.
10. ์ด๋ฒคํธ๋ฃจํ์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
์ด๋ฒคํธ ๋ฃจํ๋ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ด ๋น๋๊ธฐ ์์ ์ ์ฒ๋ฆฌํ ์ ์๊ฒ ํด์ฃผ๋ ์ค์ํ ๋ฉ์ปค๋์ฆ์ ๋๋ค. ์๋ฐ์คํฌ๋ฆฝํธ๋ ์ฑ๊ธ์ค๋ ๋ ๊ธฐ๋ฐ์ผ๋ก ๋์ํ๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ์์ ๋ค์ ํ๋์ฉ ์ฒ๋ฆฌ๋๊ณ , ์ฝ์คํ์ ํ์ฌ ์คํ ์ค์ธ ์ฝ๋๋ค์ด ์์ด๊ฒ ๋ฉ๋๋ค. ํ์ง๋ง ์๋ฐ์คํฌ๋ฆฝํธ fetch๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ๋ฐ๊ฑฐ๋ setTimeout ํจ์ ๋ฑ์ Web API๋ฅผ ์ฌ์ฉํ์ฌ ๋น๋๊ธฐ ์์ ์ ์ํํ ์ ์์ต๋๋ค. ์ฝ์คํ์ ๋น๋๊ธฐ ์์ ์ด ์คํ๋๋ฉด ๋น๋๊ธฐํจ์๋ Wep API๋ฅผ ํธ์ถํ๊ณ Web API๋ Callback Queue๋ผ๊ณ ๋ ํ๋ Task Queue์ ์ฝ๋ฐฑํจ์๋ฅผ ๋ฃ์ต๋๋ค. ์ด๋ฒคํธ ๋ฃจํ๋ ์ฝ์คํ๊ณผ ํ์คํฌํ๋ฅผ ๊ด๋ฆฌํ๋ฉฐ ์ฝ์คํ์ ์๋ ์์ ์ ์ฐ์ ์ ์ผ๋ก ์ฒ๋ฆฌํ๊ณ ์ฝ์คํ์ด ๋น์์ง๋ฉด ํ์คํฌํ์ ์๋ ์์ ์ ์ฝ์คํ์ ๋ฃ์ด ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ผ๋ก ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ๋์ํฉ๋๋ค.
11. ์์ ๋ง์ํ์ ํ์คํฌ ํ์ ์ข ๋ฅ์๋ ๋ฌด์์ด ์๋์?
ํ์คํฌ ํ๋ ๋งคํฌ๋ก ํ์คํฌ ํ์ ๋ง์ดํฌ๋ก ํ์คํฌ ํ๋ก ๋๋ฉ๋๋ค. ๋งคํฌ๋ก ํ์คํฌ ํ๋ setTimeout, setInterval ๊ณผ ๊ฐ์ ์ผ๋ฐ์ ์ธ ๋น๋๊ธฐ ์์ ๋ค์ด ๋๊ธฐํ๋ ํ์ ๋๋ค. ๋งคํฌ๋ก ํ์คํฌ ํ๋ ์ด๋ฒคํธ ๋ฃจํ๊ฐ ์ฝ์คํ๊ณผ ๋ง์ดํฌ๋ก ํ์คํฌ ํ์ ์์ ์ ๋ชจ๋ ์ฒ๋ฆฌํ ํ ํ๋์ฉ ์ฒ๋ฆฌ๋ฉ๋๋ค.
๋ง์ดํฌ๋ก ํ์คํฌ ํ๋ Promise.then()๊ณผ ๊ฐ์ด ๋์ ์ค์๋์ ์์ ๋ค์ด ๋๊ธฐํ๋ ํ์ ๋๋ค. ๋ง์ดํฌ๋ก ํ์คํฌ ํ๋ ๋งคํฌ๋ก ํ์คํฌ ํ๋ณด๋ค ์ฐ์ ์์๊ฐ ๋์ผ๋ฉฐ ์ฝ์คํ์ด ๋น์์ ธ์์ผ๋ฉด ๋ง์ดํฌ๋ก ํ์คํฌ ํ์ ์์ ๋ค์ ๋จผ์ ์ฒ๋ฆฌํฉ๋๋ค.
์ ๋ฆฌํ๋ฉด, ํ์คํฌํ๋ ๋งคํฌ๋ก ํ์คํฌ ํ์ ๋ง์ดํฌ๋ก ํ์คํฌ ํ๋ก ์ด๋ฃจ์ด์ ธ ์์ผ๋ฉฐ, ๋ง์ดํฌ๋ก ํ์คํฌ ํ์ ์๋ ์์ ๋ค์ด๊ฐ ๋งคํฌ๋ก ํ์คํฌ ํ๋ณด๋ค ์ฐ์ ์์๊ฐ ๋์ ๋จผ์ ์ฒ๋ฆฌ๋ฉ๋๋ค.
12. ๋ฆฌ์กํธ์ props์ state์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
props๋ ๋ถ๋ชจ์ปดํฌ๋ํธ์์ ์์ ์ปดํฌ๋ํธ๋ก ์ ๋ฌํ๋ ๋ฐ์ดํฐ๋ก ์ ๋ฌ๋ ๋ฐ์ดํฐ๋ ์์์ปดํฌ๋ํธ์์ ์์ ์ด ๋ถ๊ฐ๋ฅํฉ๋๋ค. ์ด๋ฅผ ํตํด ์ปดํฌ๋ํธ ๊ฐ์ ๋ฐ์ดํฐ ํ๋ฆ์ ์์ธก์ด ๊ฐ๋ฅํ๊ณ ๋ฐ์ดํฐ๋ฅผ ๋ฐ๊ฟ ์ ์๊ธฐ๋๋ฌธ์ ์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฌ์ฉํ ์ ์์ต๋๋ค.
state๋ ์ปดํฌ๋ํธ ๋ด์์ ๊ด๋ฆฌ๋๋ ๋ฐ์ดํฐ๋ก setState๋ก ๊ฐ์ ๋ณ๊ฒฝํ ์ ์์ผ๋ฉฐ ๊ฐ์ด ๋ฐ๋๋๋ง๋ค ๋ฆฌ๋๋๋ง์ด ์ด๋ฃจ์ด ์ง๋๋ค. ๋ฐ๋ผ์ state๊ฐ ๋ณ๊ฒฝ๋๋ฉด ๋ฆฌ๋๋๋ง์ ํตํด UI๊ฐ ์
๋ฐ์ดํธ ๋ฉ๋๋ค.
13. HTTP ํต์ ์ ๋ํด์ ์ค๋ช ํด์ฃผ์ธ์.
HTTP๋ HyperText transfer protocol๋ก ์น์์ ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์๋ ํ๋กํ ์ฝ์ ๋๋ค. ๊ทธ๋์ ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ์ ํต์ ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค. ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ๋ก ์นํ์ด์ง๋ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ๋ฉด ์๋ฒ๋ ํด๋ผ์ด์ธํธ์๊ฒ ์์ฒญ๋ฐ์ ์นํ์ด์ง๋ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๊ฒ ๋ฉ๋๋ค.
14. HTTP์ stateless์ ๋ํด์ ์ค๋ช ํด์ฃผ์ธ์.
HTTP ํต์ ์ stateless์ ํน์ง์ ๊ฐ์ง๊ณ ์์ต๋๋ค. stateless๋ ์ด์ ์์ฒญ์ ๊ฒฐ๊ณผ, ์ฆ ์ํ๋ฅผ ์ ์ฅํ๊ณ ์์ง ์์์ ์๋ฏธํฉ๋๋ค. ๋ฐ๋ผ์ ๋ชจ๋ ์์ฒญ์ ๋ ๋ฆฝ์ ์ธ ํน์ง์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
15. HTTP ํ๋กํ ์ฝ์ request์ response ๊ตฌ์กฐ์ ๋ํด ์ค๋ช ํด๋ณด์ธ์.
HTTP request๋ฅผ ๋ณด๋ผ๋๋ ๊ตฌ์กฐ์ ๋ง๊ฒ ๋ณด๋ด์ผ ํ๋๋ฐ, ๋จผ์ start line์ http method๊ฐ ๋ค์ด๊ฐ์ผ ํฉ๋๋ค. get, post, delete ๋ฑ ์ด๋ค ์์ฒญ์ธ์ง๋ฅผ ๋ํ๋ด์ผ ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ header์ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ด ์์ฒญ์ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ๋ฃ๊ฒ ๋ฉ๋๋ค. body์๋ ์์ฒญ์ ๋ค์ด๊ฐ ์๋ ์๋ ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ด์ฃผ๊ฒ ๋ฉ๋๋ค. response์๋ ์ํ ์ฝ๋๊ฐ ๋์ด์ค๊ฒ ๋ฉ๋๋ค. 200ok๋ 400error ๋ฑ์ด ๋ด๊ฒจ์ ธ์๊ณ , header์๋ ์ญ์ ์๋ต์ ๋ํ ๋ฉํ๋ฐ์ดํฐ๊ฐ ๋ค์ด์์ต๋๋ค. body์๋ ์์ฒญ์ ๋ํ ๋ฐ์ดํฐ๊ฐ ๋ด๊ฒจ์์ต๋๋ค.
16. ๋ธ๋ผ์ฐ์ ๋ ๋๋ง ํ์ดํ๋ผ์ธ์ ๋ํด์ ์ค๋ช ํด์ฃผ์ธ์.
๋ธ๋ผ์ฐ์ ๋ ๋๋ง ํ์ดํ๋ผ์ธ์ ๋ธ๋ผ์ฐ์ ๊ฐ ์นํ์ด์ง๋ฅผ ํ๋ฉด์ ํ์ํ๊ธฐ ์ํด ๊ฑฐ์น๋ ๊ณผ์ ์ ์๋ฏธํฉ๋๋ค. ์ ๋ ์ด ๊ณผ์ ์ 5๋จ๊ณ๋ก ๋๋ ์ค๋ช
ํด๋ณด๊ฒ ์ต๋๋ค. ์ฒซ ๋ฒ์งธ๋ก DOMํธ๋ฆฌ ์์ฑ ๋จ๊ณ์
๋๋ค. ๋ธ๋ผ์ฐ์ ๋ HTMLํ์ผ์์ ๋ฐ์ผ๋ฉด ์ด ํ์ผ์ ๋ฐ์ดํธ ๋จ์๋ก ์ฝ๊ณ ๋ฌธ์๋ก ๋ณํ ํ ๋ค HTMLํ ํฐ์ผ๋ก ๋ณํํฉ๋๋ค. ์ดํ ํ ํฐ์ ์ด์ฉํ์ฌ DOMํธ๋ฆฌ๋ฅผ ์์ฑํฉ๋๋ค. ๋ ๋ฒ์งธ๋ก DOM์์ฑ CSS ํ์ผ์ ํ์ฑํ์ฌ CSSOM ํธ๋ฆฌ๋ฅผ ์์ฑํฉ๋๋ค. ์ธ ๋ฒ์งธ๋ก DOM๊ณผ CSSOMํธ๋ฆฌ๊ฐ ๋ค ์์ฑ๋๋ฉด ์ด๋ฅผ ๊ฒฐํฉํด ๋ ํฐ ํธ๋ฆฌ๋ฅผ ์์ฑํฉ๋๋ค. ๋ ๋ ํธ๋ฆฌ์๋ ์ค์ ๋ก ํ๋ฉด์ ํ์๋ ์์๋ก๋ง ๊ตฌ์ฑ๋ฉ๋๋ค. ๋ค ๋ฒ์งธ๋ก ๋ ์ด์์ ๋จ๊ณ์
๋๋ค. ๋ธ๋ผ์ฐ์ ๋ ๋ ๋ ํธ๋ฆฌ๋ฅผ ์ด์ฉํด ๊ฐ ์์์ ์ ํํ ์์น์ ํฌ๊ธฐ๋ฅผ ๊ฒฐ์ ํ๋ ๋ ์ด์์ ๋จ๊ณ๋ฅผ ์งํํฉ๋๋ค. ๋ง์ง๋ง์ผ๋ก ํ์ธํ
๋จ๊ณ์
๋๋ค. ๋ ์ด์์์ด ์๋ฃ๋๋ฉด ๋ธ๋ผ์ฐ์ ๋ ๊ฐ ์์๋ฅผ ์ค์ ๋ก ํ๋ฉด์ ๊ทธ๋ฆฌ๋ ์์
์ ํฉ๋๋ค.
๋ธ๋ผ์ฐ์ ๋ ๋๋ง์ ์ด๋ ๊ฒ 5๋จ๊ณ๋ก ๋๋ ์ค๋ช
ํ ์ ์์ต๋๋ค.
17. ์๋ฐ์คํฌ๋ฆฝํธ ES6์์ ํด๋์ค๋ ๋ฌด์์ธ๊ฐ์?
ํด๋์ค๋ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์์ ํน์ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ธฐ ์ํด ๋ณ์์ ๋ฉ์๋๋ฅผ ์ ์ํ๋ ์ผ์ข ์ ํ๋ก, ๊ฐ์ฒด๋ฅผ ์ ์ํ๊ธฐ ์ํ ์ํ(๋ฉค๋ฒ ๋ณ์)์ ๋ฉ์๋(ํจ์)๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ๊ทธ๋ฐ๋ฐ ES6์์ ํด๋์ค๋ ํจ์์ ํ ์ข ๋ฅ์ ๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์, ํจ์์ ๋์ผํ๊ฒ ํด๋์ค ์ ์ธ(Class declarations)๊ณผ ํด๋์ค ํํ(Class expressions)์ผ๋ก ํด๋์ค๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
18. hydrate๋ ๋ฌด์์ธ์ง์ render์์ ์ฐจ์ด์ ์ ์ค๋ช ํด์ฃผ์ธ์.
hydrateํจ์๋ ์์ฑ๋ HTML ์ฝํ
์ธ ์ ์๋ฐ์คํฌ๋ฆฝํธ ํธ๋ค๋ฌ๋ ์ด๋ฒคํธ๋ฅผ ๋ถ์ด๋ ์ญํ ์ ํฉ๋๋ค.
render์์ ์ฐจ์ด์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. hydrate๋ ์ด๋ฏธ ๋ ๋๋ง๋ HTML์ด ์๋ค๋ ๊ฐ์ ํ์ ์ด ๋ ๋๋ง๋ HTML์ ๊ธฐ์ค์ผ๋ก ์ด๋ฒคํธ๋ฅผ ๋ถ์ด๋ ์์
๋ง ์ํํฉ๋๋ค. ํ์ง๋ง render๋ ๋น HTML์ ์ ๋ณด๋ฅผ ์์๋ค์ ๋ ๋๋งํ๋ฉฐ ์ฌ๊ธฐ์ ์ด๋ฒคํธ๋ฅผ ๋ถ์ด๋ ์์
๊น์ง ๋ชจ๋ ํ ๋ฒ์ ์ํํฉ๋๋ค.
19. ๋ฆฌ์กํธ์ render phase์ commit phase์ ๋ํด์ ์ค๋ช ํด์ฃผ์ธ์.
๋ฆฌ์กํธ์ ๋๋๋ง ๊ณผ์ ์ render phase๊ณผ commit phase๋ก ๋๋ฉ๋๋ค.
render phase์์๋ DOM์ ๊ทธ๋ ค์ง ์์๋ค์ ํ์
ํ๋ ๋จ๊ณ์
๋๋ค. ์ด๋ ์ฌ์กฐ์ ๊ณผ์ ์ ๊ฑฐ์น๊ฒ ๋ฉ๋๋ค. ์ฌ์กฐ์ ๊ณผ์ ์์ ์ด์ ์ ์์ฑํ ๊ฐ์ DOM ํธ๋ฆฌ์ ์๋ก ๋ง๋ ๊ฐ์ DOM ํธ๋ฆฌ๋ฅผ ๋น๊ตํด์ ์ค์ DOM ํธ๋ฆฌ์ ๋ฐ์ํ ๋ณ๊ฒฝ ์ฌํญ์ ํ์
ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ํ ์
๋ฐ์ดํธ๊ฐ ๋ฐ์ํ ์ปดํฌ๋ํธ๋ฅผ ํธ์ถํด ์๋ก์ด ๊ฐ์ DOMํธ๋ฆฌ๋ฅผ ๋ง๋ญ๋๋ค.
๋ค์์ผ๋ก commit phase์์๋ render phase์์ ์งํํ ๋ ๊ฐ์ DOMํธ๋ฆฌ์ ๋ณํ๋ฅผ ์ค์ DOM์ ์ ์ฉํ๋ ๋จ๊ณ์
๋๋ค.
์์ฝํด์ render phase๋ ๋ณ๊ฒฝ๋ ์ฌํญ์ ํ์
ํ๋ ๋จ๊ณ์ด๊ณ , commit phase๋ ๋ณ๊ฒ
๋ ์ฌํญ์ ์ค์ DOM์ ์ ์ฉํ๋ ๋จ๊ณ์
๋๋ค.
20. <script scr=“”></script>์ฝ๋๋ <head>ํ๊ทธ์ <body>ํ๊ทธ ์ค์ ์ด๋์ ๋ค์ด๊ฐ๋ ๊ฒ์ด ์ข์ ๊ฒ ๊ฐ์์ง ๋ณธ์ธ์ ์๊ฐ์ ๋งํด์ฃผ์ธ์.
์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ์ ํฌ๊ธฐ์ ์ฌ์ฉ์ฑ์ ๋ฐ๋ผ ๋ค๋ฅผ ์ ์์ง๋ง ํ์ผ์ ํฌ๊ธฐ์ ์ฌ์ฉ์ฑ์ด ๋น์ทํ๋ค๋ฉด <body>ํ๊ทธ ์ ์ผ ํ๋จ์ ๋ค์ด๊ฐ๋ ๊ฒ์ด ์ข์ต๋๋ค. ๋ ๋๋ง ์์ง์ HTML์ ์ฝ์ด DOM์ ์์ฑํฉ๋๋ค. ์์ฑ์ค script ํ๊ทธ๋ฅผ ๋ง๋๊ฒ ๋๋ฉด ์ฝ๋ ํ์ฑ ์ ์ด๊ถ์ด ๋ ๋๋ง ์์ง์์ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ผ๋ก ๋์ด๊ฐ๊ฒ ๋ฉ๋๋ค. (์ด๋ฅผ blocking์ด ์ผ์ด๋ฌ๋ค๊ณ ๋ ํฉ๋๋ค) ์ดํ์ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ฑ๊ณผ ์คํ์ด ์ข
๋ฃ๋๋ฉด ๋ค์ ๋ ๋๋ง ์์ง์ผ๋ก ์ ์ด๊ถ์ด ๋์ด๊ฐ HTML ํ์ฑ์ด ์ค๋จ๋ ์์ ๋ถํฐ ๋ค์ DOM ์์ฑ์ ์์ํฉ๋๋ค.
๊ฒฐ๊ตญ <script scr=“”></script>์ฝ๋๋ฅผ ๋ง๋๊ฒ ๋๋ฉด ์์์ ์๋๋ก ๋๊ธฐ์ ์ผ๋ก ์ด๋ฃจ์ด์ง๋ ํ์ฑ์ด ์ค๋จ๋๋ค๋ ์๋ฏธ์ด๊ณ ๋ธ๋กํน๋๋ ๊ฒ์ DOM ์์ฑ์ ์ง์ฐ์ํฌ ์ ์์ต๋๋ค. ๋ํ script ๋ด๋ถ์์ ํน์ ์์๋ฅผ ๋ถ๋ฌ์ค๋ ์ฝ๋๊ฐ ์กด์ฌํ๋ค๋ฉด ์์ง HTML ์์๊ฐ ๋ง๋ค์ด์ง์ง ์์๊ธฐ ๋๋ฌธ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
21. ํ์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
ํ์ ๋์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ ์ฌ์ฉ๋๋ฉฐ, ํ๋ก๊ทธ๋จ ์คํ ์ค์ ๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ๊ฐ ๊ฒฐ์ ๋ฉ๋๋ค. ํ์ ํ ๋น๋ ๋ฉ๋ชจ๋ฆฌ๋ ๊ฐ๋ฐ์๊ฐ ์ง์ ๊ด๋ฆฌํด์ผ ํ๋ฉฐ, ์ฌ์ฉ์ด ๋๋ ๋ฉ๋ชจ๋ฆฌ๋ ๋ช ์์ ์ผ๋ก ํด์ ํด์ผ ํฉ๋๋ค.
22. CI/CD์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
"์ง์์ ์ธ ํตํฉ/์ง์์ ์ธ ์๋น์ค ์ ๊ณต ๋๋ ๋ฐฐํฌ CI(Continuous Integration)/CD(Continuous Delivery, Continuous Deployment)"์ ์ฝ์์ ๋๋ค. `์ง์์ ์ธ ํตํฉ(CI)`์ ์ฝ๋ ๋ณ๊ฒฝ์ฌํญ์ ์ ๊ธฐ์ ์ผ๋ก ๋น๋ ๋ฐ ํ ์คํธ๋ฅผ ๊ฑฐ์ณ ๊ณต์ ๋ ํฌ์งํ ๋ฆฌ์ ํตํฉํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ํ์ ์์ ๋ฐ์ํ ์ ์๋ conflict๋ฅผ ์์๋ก ํ์ธํ๊ณ ํด๊ฒฐ์ด ๊ฐ๋ฅํ๋ฉฐ, ์๋ก์ด ์ ๋ฐ์ดํธ์ ํ ์คํธ์ ์ถ์ ์๊ฐ์ ๋จ์ถ์ํฌ ์ ์์ต๋๋ค. `์ง์์ ์ธ ์๋น์ค ์ ๊ณต ๋๋ ๋ฐฐํฌ(CD)`๋ ์ฝ๋ ๋ณ๊ฒฝ์ฌํญ์ด ๋ ํฌ์งํ ๋ฆฌ๋ฟ๋ง ์๋๋ผ ์ฌ์ฉ์ production ํ๊ฒฝ๊น์ง release ๋๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
23. useEffect ์ฌ์ฉ ์ ์์กด์ฑ ๋ฐฐ์ด์ ๋น ๋ฐฐ์ด์ ๋ฃ๋ ๊ฒ์ ์ง์ํด์ผ ํ๋ ์ด์ ๋ ๋ฌด์์ผ๊น์?
useEffect๋ ์์กด์ฑ ๋ฐฐ์ด๋ก ์ ๋ฌํ ๊ฐ์ ๋ณ๊ฒฝ์ ์ํด ์คํ๋์ผ ํ๋ ํ ์ ๋๋ค. ๊ทธ๋ฌ๋ ์์กด์ฑ ๋ฐฐ์ด์ ๊ฐ์ ์ ๋ฌํ์ง ์๊ณ ๋จ์ํ ์ต์ด ๋ ๋๋ง ๋ ํ ๋ฒ ์คํํ๋๋ก ํ๋ค๋ฉด ์ด ์ฝ๋ฐฑ ํจ์๋ก ์ธํด ๋ฐ์ํ๋ ๋ถ์ ํจ๊ณผ๊ฐ ์ค์ ๋ก ๊ด์ฐฐํด์ ์คํ๋ผ์ผ ํ๋ ๊ฐ๊ณผ๋ ๋ณ๊ฐ๋ก ์๋ํ๋ค๋ ๊ฒ์ ์๋ฏธํ๊ธฐ ๋๋ฌธ์ ๋น ๋ฐฐ์ด์ ๋ฃ๋ ๊ฒ์ useEffect ํ ์ ์ทจ์ง์ ๋ง์ง ์์ต๋๋ค.
24. ์๋ฐ์คํฌ๋ฆฝํธ ๋ฐฐ์ด์ ๋ํด์ ์ค๋ช ํด์ฃผ์ธ์.
์๋ฐ์คํฌ๋ฆฝํธ์ ๋ฐฐ์ด์ ์์๊ฐ ์๋ ๋ฆฌ์คํธ ํํ์ ๋ฐฐ์ด์
๋๋ค. ๋ฐ๋ผ์ ์ฌ๋ฌ ๊ฐ์ ํ๋์ ์๋ฃ๊ตฌ์กฐ์ ์ ์ฅํ ์ ์์ต๋๋ค. ์๋ฐ์คํฌ๋ฆฝํธ ๋ฐฐ์ด์ ๋์ ๋ฐฐ์ด์ด๊ธฐ ๋๋ฌธ์ ํฌ๊ธฐ๋ฅผ ๋ฏธ๋ฆฌ ์ง์ ํด ๋์ง ์์๋ ๋๋ฉฐ, ์์๋ฅผ ์์ ๋กญ๊ฒ ์ถ๊ฐํ๊ฑฐ๋ ์ ๊ฑฐํ ์ ์์ต๋๋ค. ์์๋ฅผ ์ถ๊ฐํ ๋๋ง๋ค ๋ฐฐ์ด์ ํฌ๊ธฐ๊ฐ ์๋์ผ๋ก ์กฐ์ ๋๋ ๋ฐฉ์์ผ๋ก ๋์ํฉ๋๋ค.
๋ํ ๋ฐฐ์ด์ ์๋ฐ์คํฌ๋ฆฝํธ์ ๊ฐ์ฒด์ ์ ์ฌํ ๋ฐฉ์์ผ๋ก ๊ด๋ฆฌ๋ฉ๋๋ค. ํด์ ํ
์ด๋ธ๊ณผ ๊ฐ์ ํํ๋ก ๊ตฌํ๋์ด ์์ด, ๋ฐฐ์ด ์์๋ค์ ๋ฉ๋ชจ๋ฆฌ ์์์ ์ฐ์์ ์ด์ง ์์๋ ๋๊ณ , ๋ฐฐ์ด ํฌ๊ธฐ๋ฅผ ๋ฏธ๋ฆฌ ์ง์ ํ์ง ์์๋ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ง์ง๋ง์ผ๋ก ๋ด์ฅ๋ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐฐ์ด์ ์ฝ๊ฒ ์กฐ์ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด reduce, map ๋ฑ์ ๋ฉ์๋๊ฐ ์กด์ฌํฉ๋๋ค.
์ ๋ฆฌํ๋ฉด, ์๋ฐ์คํฌ๋ฆฝํธ ๋ฐฐ์ด์ ๋์ ๋ฐฐ์ด๋ก ์์๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ์ ๊ฑฐํ ๋ ๋ฐฐ์ด ํฌ๊ธฐ๊ฐ ์๋์ ์ผ๋ก ์กฐ์ ๋๋ฉฐ, ์ฌ๋ฌ ๋ด์ฅ ๋ฉ์๋๋ฅผ ํตํด ๋ฐฐ์ด์ ์ฝ๊ฒ ์กฐ์ํ ์ ์์ต๋๋ค.
'Private > ๋ฉด์ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก ํธ์๋ ๋ฉด์ (๋ฐฐ์ด) (0) | 2024.11.26 |
---|---|
ํ๋ก ํธ์๋ ๋ฉด์ (์์กด์ฑ๋ฐฐ์ด) (0) | 2024.11.25 |
ํ๋ก ํธ์๋ ๊ธฐ์ ๋ฉด์ (heap, CI/CD) (0) | 2024.11.24 |
ํ๋ก ํธ์๋ ๋ฉด์ (script ์ฝ๋์ ์์น) (0) | 2024.11.23 |
ํ๋ก ํธ์๋ ๋ฉด์ (render, commit๋จ๊ณ) (0) | 2024.11.22 |