๋ธ๋ผ์ฐ์ (Browser)
- ์ฐ๋ฆฌ๊ฐ ์ธํฐ๋ท์ ์ ์ํ ๋ ์ฌ์ฉํ๋ ํฌ๋กฌ, ์ฌํ๋ฆฌ, ํ์ด์ดํญ์ค, ์ธํฐ๋ท ์ต์คํ๋ก์ด ๋ฑ์ ๋งํ๋ค.
- MDN ์ ์ : ์น์์ ํ์ด์ง๋ฅผ ์ฐพ์ ๋ณด์ฌ์ฃผ๊ณ , ์ฌ์ฉ์๊ฐ ํ์ดํผ๋งํฌ๋ฅผ ํตํด ๋ค๋ฅธ ํ์ด์ง๋ก ์ด๋ํ ์ ์๋๋ก ํ๋ ํ๋ก๊ทธ๋จ
- ๋ธ๋ผ์ฐ์ ๋ ์ฌ์ฉ์๊ฐ ์์ฒญํ ์์์ ์๋ฒ๋ก๋ถํฐ ๋ฐ์์์ ๋ณด์ฌ์ค๋ค. ํ์ด์ง, ์ด๋ฏธ์ง, ๋น๋์ค ๋ฑ ์ปจํ
์ธ ๋ ํฌํจํ์ฌ ๋ฐ์์จ ์์์ ๋ ๋๋ง ๊ณผ์ ์ ํตํด ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ค๋ค.
๋ธ๋ผ์ฐ์ ์ฃผ์์ฐฝ์ www.google.com
์ ์
๋ ฅํ๋ฉด?
ํ์(Navigation)
- ์ฌ์ฉ์๊ฐ ์ฃผ์์ฐฝ์ URL์ ์
๋ ฅํ๊ฑฐ๋, ๋งํฌ๋ฅผ ํด๋ฆญํ๊ณ , ํผ(form)์ ์ ์ถํ๋ ๋ฑ์ ๋์์ ํตํด ์์ฒญ์ ๋ณด๋ผ ๋๋ง๋ค ๋ฐ์
- ํ์์ ์น ํ์ด์ง๋ฅผ ๋ก๋ฉํ๋ ์ฒซ ๋จ๊ณ์ด๋ค.
DNS(Domain Name System) ์กฐํ
- ํ์์ ์ฒซ ๋จ๊ณ๋ ํด๋น ํ์ด์ง์ ์์์ด ์ด๋์ ์์นํ๋์ง ์ฐพ๋ ๊ฒ์ด๋ค.
- DNS ์๋ฒ์ ๊ฒ์ํ๊ธฐ ์ ์ ์บ์ฑ๋ DNS ๊ธฐ๋ก์ ๋จผ์ ํ์ธ
- ๋ง์ฝ ํด๋น ๋๋ฉ์ธ ์ด๋ฆ์ ๋ง๋ IP ์ฃผ์๊ฐ ์กด์ฌํ๋ค๋ฉด, DNS ์๋ฒ์ IP ์ฃผ์๋ฅผ ์์ฒญํ์ง ์๊ณ ์บ์ฑ๋ IP ์ฃผ์๋ฅผ ๋ฐํ
- ๋ง์ฝ
www.google.com
์ ํ ๋ฒ๋ ๋ฐฉ๋ฌธํ ์ ์ด ์๋ค๋ฉด, DNS ๋ธ๋ผ์ฐ์ ๋ DNS ์๋ฒ์ ํด๋น ์ฌ์ดํธ์ IP ์ฃผ์๋ฅผ ์์ฒญํ์ฌ ์๋ต๋ฐ๋๋ค.
- IP ์ฃผ์๋ ์ผ์ ๊ธฐ๊ฐ ๋์ ์บ์๋์ด ํ์ ์์ฒญ ์๋๋ฅผ ๋์ธ๋ค.
TCP Handshake
- IP๋ฅผ ์๋ต๋ฐ์ ํ, ๋ธ๋ผ์ฐ์ ๋ ์๋ฒ์ TCP 3 Way Handshake๋ฅผ ํตํด ์ฐ๊ฒฐ์ ์ค์
TCP(Transmittion Control Protocol)
- ์ธํฐ๋ท์ ์ฐ๊ฒฐ๋ ์ปดํจํฐ์์ ์คํ๋๋ ํ๋ก๊ทธ๋จ ๊ฐ์ ํต์ ์ ์์ ์ ์ผ๋ก, ์์๋๋ก, ์๋ฌ์์ด ๊ตํํ ์ ์๊ฒ ํ๋ค.
- TCP๋ UDP๋ณด๋ค ์์ ํ์ง๋ง ๋๋ฆฌ๋ค.
3 Way Handshake
TCP๋ฅผ ์ด์ฉํ ๋ฐ์ดํฐ ํต์ ์ ํ ๋ ํ๋ก์ธ์ค์ ํ๋ก์ธ์ค๋ฅผ ์ฐ๊ฒฐํ๊ธฐ ์ํด ๊ฐ์ฅ ๋จผ์ ์ํ๋๋ ๊ณผ์ ์ผ๋ก ์ฐ๊ฒฐํ๊ณ ์ ํ๋ ๋ ์ฅ์น ๊ฐ์ ๋
ผ๋ฆฌ์ ์ ์์ ์ฑ๋ฆฝํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ์ฐ๊ฒฐ ํ์ธ ๋ฐฉ์
- ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์๊ฒ ์์ฒญ ํจํท์ ๋ณด๋
- ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋ฐ์๋ค์ด๋ ํจํท์ ๋ณด๋
- ํด๋ผ์ด์ธํธ๋ ์ด๋ฅผ ์ต์ข
์ ์ผ๋ก ์๋ฝํ๋ ํจํท์ ๋ณด๋
์๋ต(Response)
- ์น ์๋ฒ์ ์ฐ๊ฒฐ์ด ์ฑ๋ฆฝ๋๋ฉด ๋ธ๋ผ์ฐ์ ๋ HTTP Request๋ฅผ ๋ณด๋ธ๋ค.
- ์น ์ฌ์ดํธ๋ ๋๊ฒ HTML ํ์ผ์ ์์ฒญ
- ์๋ฒ๊ฐ ์์ฒญ์ ๋ฐ์ผ๋ฉด, ๊ด๋ จ ์๋ต ํค๋์ ํจ๊ป HTML์ ๋ด์ฉ์ ์๋ต(HTTP Response)
๊ตฌ๋ฌธ ๋ถ์(Parsing)
- ๋ธ๋ผ์ฐ์ ๋ ์์ ๋ ์ ๋ณด๋ฅผ ๊ตฌ๋ฌธ ๋ถ์์ ํ๊ธฐ ์์
- ๊ตฌ๋ฌธ ๋ถ์์ ๋ธ๋ผ์ฐ์ ๊ฐ ๋คํธ์ํฌ๋ฅผ ํตํด ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ DOM์ด๋ CSSOM์ผ๋ก ๋ฐ๊พธ๋ ๋จ๊ณ๋ก, ๋ธ๋ผ์ฐ์ ๊ฐ ์ฝ๋๋ฅผ ์ดํดํ๊ณ ์ฌ์ฉํ ์ ์๋ ๊ตฌ์กฐ๋ก ๋ณํํ๋ ๊ฒ์ ์๋ฏธ
- ํ์ฑ ๊ฒฐ๊ณผ๋ ๋ณดํต ๋ฌธ์ ๊ตฌ์กฐ๋ฅผ ๋ํ๋ด๋ ๋
ธ๋ ํธ๋ฆฌ์ธ๋ฐ ํ์ฑ ํธ๋ฆฌ(parse tree) ๋๋ ๋ฌธ๋ฒ ํธ๋ฆฌ(syntax tree)๋ผ๊ณ ๋ถ๋ฅธ๋ค.
- ์ด๋ ๋ ๋๋ฌ๊ฐ ํ๋ฉด์ ํ์ด์ง๋ฅผ ๊ทธ๋ฆฌ๋ ๋ฐ ์ฌ์ฉ๋๋ค.
- ๋ ๋๋ง(rendering) : HTML, CSS, JavaScript๋ก ์์ฑ๋ ๋ฌธ์๋ฅผ ํ์ฑํ์ฌ ๋ธ๋ผ์ฐ์ ์ ์๊ฐ์ ์ผ๋ก ์ถ๋ ฅํ๋ ๊ฒ์ ์๋ฏธ
HTML ํ์ฑ๊ณผ DOM ์์ฑ
- ๋ธ๋ผ์ฐ์ ์ ์์ฒญ์ ์ํด ์๋ฒ๊ฐ ์๋ตํ HTML ๋ฌธ์๋ ๋ฌธ์์ด๋ก ์ด๋ฃจ์ด์ง ์์ํ ํ
์คํธ
- ๋ธ๋ผ์ฐ์ ์ ๋ ๋๋ง ํ๊ธฐ ์ํด HTML ๋ฌธ์๋ฅผ ๋ธ๋ผ์ฐ์ ๊ฐ ์ดํดํ ์ ์๋ ์๋ฃ๊ตฌ์กฐ(๊ฐ์ฒด)๋ก ๋ณํํ์ฌ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ
- ๋ธ๋ผ์ฐ์ ์ ๋ ๋๋ง ์์ง์ ์๋ต๋ฐ์ HTML ๋ฌธ์๋ฅผ ํ์ฑํ์ฌ ๋ธ๋ผ์ฐ์ ๊ฐ ์ดํดํ ์ ์๋ ์๋ฃ๊ตฌ์กฐ์ธ DOM(Document Object Model)์ ์์ฑ
DOM ํธ๋ฆฌ ์์ฑ ๊ณผ์
- ๋ธ๋ผ์ฐ์ ๋ ๋ฐ์ดํธ ํํ์ HTML ๋ฌธ์๋ฅผ ์๋ต๋ฐ๋๋ค.
- ์๋ต๋ ๋ฐ์ดํธ ํํ์ HTML ๋ฌธ์๋
meta
ํ๊ทธ์ charset
์ดํธ๋ฆฌ๋ทฐํธ์ ์ํด ์ง์ ๋ ์ธ์ฝ๋ฉ ๋ฐฉ์(์: UTF-8)์ ๊ธฐ์ค์ผ๋ก ๋ฌธ์์ด๋ก ๋ณํ
- ๋ฌธ์์ด๋ก ๋ณํ๋ HTML ๋ฌธ์๋ฅผ ๋ฌธ๋ฒ์ ์๋ฏธ๋ฅผ ๊ฐ๋ ์ฝ๋์ ์ต์ ๋จ์์ธ ํ ํฐ(token)๋ค๋ก ๋ถํด
- ๊ฐ ํ ํฐ๋ค์ ๊ฐ์ฒด๋ก ๋ณํํ์ฌ ๋
ธ๋๋ค์ ์์ฑํ๊ณ ์ด ๋
ธ๋๋ DOM์ ๊ตฌ์ฑํ๋ ๊ธฐ๋ณธ ์์๊ฐ ๋๋ค.
- HTML ์์ ๊ฐ์ ๋ถ์ ๊ด๊ณ(์ค์ฒฉ ๊ด๊ณ)๋ฅผ ๋ฐ์ํ์ฌ ๋ชจ๋ ๋
ธ๋๋ค์ ํธ๋ฆฌ ์๋ฃ๊ตฌ์กฐ๋ก ๊ตฌ์ฑํ์ฌ DOM ํธ๋ฆฌ๋ฅผ ์์ฑํ๋ค.
CSS ํ์ฑ๊ณผ CSSOM ์์ฑ
- ๋ ๋๋ง ์์ง์ HTML์ ์ฒ์๋ถํฐ ํ ์ค์ฉ ์์ฐจ์ ์ผ๋ก ํ์ฑํ์ฌ DOM์ ์์ฑํ๋ค๊ฐ CSS๋ฅผ ๋ก๋ํ๋
link
ํ๊ทธ๋ style
ํ๊ทธ๋ฅผ ๋ง๋๋ฉด DOM ์์ฑ์ ์ผ์ ์ค๋จ
link
ํ๊ทธ์ href
์ดํธ๋ฆฌ๋ทฐํธ์ ์ง์ ๋ CSS ํ์ผ์ด๋ style
ํ๊ทธ ๋ด์ CSS๋ฅผ HTML๊ณผ ๋์ผํ ํ์ฑ ๊ณผ์ ์ ๊ฑฐ์ณ CSSOM(CSS Object Model)์ ์์ฑ
- ๋ฐ์ดํธ โ ๋ฌธ์ โ ํ ํฐ โ ๋
ธ๋ โ CSSOM
- CSS ํ์ฑ์ด ์๋ฃ๋๋ฉด HTML ํ์ฑ์ด ์ค๋จ๋ ์ง์ ๋ถํฐ ๋ค์ HTML ํ์ฑ ์์ํ์ฌ DOM ์์ฑ ์ฌ๊ฐ
JavaScript ํ์ฑ๊ณผ ์คํ
- DOM์ HTML ์์์ ์คํ์ผ์ ๋ณ๊ฒฝํ ์ ์๋ ํ๋ก๊ทธ๋๋ฐ ์ธํฐํ์ด์ค๋ก DOM API๋ฅผ ์ ๊ณตํ๊ณ , ์ด๋ฅผ ํตํด ์ด๋ฏธ ์์ฑ๋ DOM์ ๋์ ์ผ๋ก ์กฐ์ํ ์ ์๋ค.
- ๋ ๋๋ง ์์ง์ HTML์ ์ฒ์๋ถํฐ ํ ์ค์ฉ ์์ฐจ์ ์ผ๋ก ํ์ฑํ์ฌ DOM์ ์์ฑํ๋ค๊ฐ
script
ํ๊ทธ๋ฅผ ๋ง๋๋ฉด DOM ์์ฑ์ ์ผ์ ์ค๋จ
script
ํ๊ทธ์ src ์ดํธ๋ฆฌ๋ทฐํธ์ ์ง์ ๋ JavaScript ํ์ผ์ด๋ script
ํ๊ทธ ๋ด์ JavaScript ์ฝ๋๋ฅผ ํ์ฑํ๊ธฐ ์ํด JavaScript ์์ง์๊ฒ ์ ์ด๊ถ์ ๋๊ธด๋ค.
- ๋ ๋๋ง ์์ง์ผ๋ก๋ถํฐ ์ ์ด๊ถ์ ๋๊ฒจ๋ฐ์ JavaScript ์์ง์ JavaScript ์ฝ๋๋ฅผ ํ์ฑํ์ฌ ์ถ์์ ๊ตฌ๋ฌธ ํธ๋ฆฌ(AST, Abstract Syntax Tree)๋ฅผ ์์ฑํ๊ณ ์ด๋ฅผ ๋ฐ์ดํธ์ฝ๋๋ก ๋ณํํ์ฌ ์คํ
- JavaScript ํ์ฑ๊ณผ ์คํ์ด ์ข
๋ฃ๋๋ฉด ๋ ๋๋ง ์์ง์ผ๋ก ๋ค์ ์ ์ด๊ถ์ ๋๊ฒจ HTML ํ์ฑ์ด ์ค๋จ๋ ์ง์ ๋ถํฐ ๋ค์ HTML ํ์ฑ ์์ํ์ฌ DOM ์์ฑ ์ฌ๊ฐ
๋ ๋(Render)
- ๋ ๋๋ง ์์ง์ ์๋ฒ๋ก๋ถํฐ ์๋ต๋ HTML๊ณผ CSS๋ฅผ ํ์ฑํ์ฌ ๊ฐ๊ฐ DOM๊ณผ CSSOM๋ฅผ ์์ฑํ๊ณ , DOM๊ณผ CSSOM์ ๋ ๋๋ง์ ์ํด ๋ ๋ ํธ๋ฆฌ(render tree)๋ฅผ ์์ฑ
์คํ์ผ(Style)
- ๊ณ์ฐ๋ ์คํ์ผ ํธ๋ฆฌ(=๋ ๋ ํธ๋ฆฌ)๋ DOM ํธ๋ฆฌ์ ๋ฃจํธ๋ถํฐ ์์ํ์ฌ ๋์ ๋ณด์ด๋ ๋
ธ๋๋ฅผ ์ํํ๋ฉฐ ์์ฑ
๋ ๋ ํธ๋ฆฌ
- ๋ ๋๋ง์ ์ํ ํธ๋ฆฌ ๊ตฌ์กฐ์ ์๋ฃ๊ตฌ์กฐ
- ๋ ๋ ํธ๋ฆฌ๋ ์ค์ ๋ธ๋ผ์ฐ์ ํ๋ฉด์ ๊ณต๊ฐ์ ์ฐจ์งํ์ฌ ํํ๋๋ ๋
ธ๋๋ง์ผ๋ก ๊ตฌ์ฑ๋๋ค.
- ๋ธ๋ผ์ฐ์ ํ๋ฉด์ ๋ ๋๋ง๋์ง ์๋ ๋
ธ๋ ์ ์ธ(์:
meta
ํ๊ทธ, script
ํ๊ทธ)
- CSS์ ์ํด ๋นํ์ ๋๋ ๋
ธ๋ ์ ์ธ (์:
display: none;
)
visibility : hidden;
์์ฑ์ ํ๋ฉด์ ๊ณต๊ฐ์ ์ฐจ์งํ๋ฏ๋ก ๋ ๋ ํธ๋ฆฌ์ ๋ฐ์
- ๋ ๋ ํธ๋ฆฌ์ ๋ชจ๋ ๋
ธ๋๋ ๊ณ์ฐ๋ ์คํ์ผ์ ๊ฐ์ง๊ณ ์๋ค.
- DOM ํธ๋ฆฌ์์ ๋ณด์ด๋ ๋ชจ๋ ๋
ธ๋์ ๊ด๋ จ๋ ์คํ์ผ์ ๋ง์ถฐ๋ณด๊ณ , CSS ์บ์ค์ผ์ด๋ ๋ฐฉ์์ ๋ฐ๋ผ ๊ฐ ๋
ธ๋์ ๊ณ์ฐ๋ ์คํ์ผ์ ๊ฒฐ์
๋ ์ด์์(Layout)
- ๋ ๋ ํธ๋ฆฌ์ ์๋ ๋ชจ๋ ๋
ธ๋์ ๋๋น, ๋์ด, ์์น๋ฅผ ๊ฒฐ์ ํ๋ ํ๋ก์ธ์ค
- ๋ ๋ ํธ๋ฆฌ๊ฐ ํ ๋ฒ ๋ง๋ค์ด์ง๊ณ ๋๋ฉด, ๋ ์ด์์์ด ์์๋๋ค.
- ๋ ๋ํธ๋ฆฌ๋ ๊ณ์ฐ๋ ์คํ์ผ๊ณผ ํจ๊ป ์ด๋ค ๋
ธ๋๊ฐ ํ๋ฉด์ ํ์๋ ์ง ์๋ณํ๊ณ , ๋ธ๋ผ์ฐ์ ๋ ๋ ๋ ํธ๋ฆฌ์ ๋ฃจํธ๋ถํฐ ์ํํ๋ฉด์ ๊ฐ ๊ฐ์ฒด์ ์ ํํ ํฌ๊ธฐ์ ์์น๋ฅผ ๊ฒฐ์ ํ๋ค.
- ์ฒ์ ๋
ธ๋์ ํฌ๊ธฐ์ ์์น๊ฐ ๊ฒฐ์ ๋๋ ๊ฒ์ ๋ ์ด์์์ด๋ผ๊ณ ๋ถ๋ฅด๊ณ , ์ดํ ๋
ธ๋์ ํฌ๊ธฐ์ ์์น๋ฅผ ๋ค์ ๊ณ์ฐํ๋ ๊ฒ์ ๋ฆฌํ๋ก์ฐ๋ผ๊ณ ๋ถ๋ฅธ๋ค.
ํ์ธํธ(Paint)
- ํ์ธํธํ
์ ๋ธ๋ผ์ฐ์ ๊ฐ ๋ ์ด์์ ๋จ๊ณ์์ ๊ณ์ฐ๋ ๋ ๋ ํธ๋ฆฌ์ ๊ฐ ๋
ธ๋๋ฅผ ์ค์ ํ๋ฉด์ ํฝ์
๋ก ๋ณํํ๋ ๋จ๊ณ
- ํ
์คํธ, ์๊น, ๊ฒฝ๊ณ, ๊ทธ๋ฆผ์ ๋ฐ ๋ฒํผ์ด๋ ์ด๋ฏธ์ง ๊ฐ์ ๋์ฒด ์์๋ฅผ ํฌํจํ์ฌ ๋ชจ๋ ์์์ ์๊ฐ์ ์ธ ๋ถ๋ถ์ ํ๋ฉด์ ๊ทธ๋ฆฌ๋ ์์
- ํ์ธํ
์ ๋ ์ด์์ ํธ๋ฆฌ์ ์์๋ฅผ ๋ ์ด์ด๋ก ๋ถ๋ฆฌํ ์ ์๋ค.
Layer model
- ์น ํ์ด์ง๋ฅผ ๋ ๋๋งํ๊ธฐ ์ํด ํ์ํ ์ด๋ฏธ์ง ๋จ์ ์์
- ๋ ์ด์ด๋ค์ ๋ฐฐ์น,ํฉ์ฑํ์ฌ ์ต์ข
์ ์ธ ์น ํ์ด์ง๋ฅผ ํํ
- ํ์ธํธ ๋จ๊ณ์์ ๋ฉ์ธ ์ค๋ ๋๋ ํ๋์ ํ์ด์ง๋ฅผ ์ฌ๋ฌ ์ธต์ ๋ ์ด์ด๋ก ๋ถ๋ฆฌํ๊ณ ๊ทธ ๋ ์ด์ด๋ค์ ์ด๋ค ์์๋ก ๊ทธ๋ฆด์ง ๊ฒฐ์
- ์ด ๊ณผ์ ์์ ๋ ์ด์์ ํธ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ ์ด์ด ํธ๋ฆฌ๊ฐ ์์ฑ๋์ด ์๊ฐ์ ์ธ ๋ถ๋ถ์ ๊ทธ๋ฆฌ๊ธฐ ์ํด ๊ฐ ๋ ์ด์ด์ ํฝ์
์ ์ฑ์ด๋ค.
- Layer ๋ถ๋ฅ
- Paint Layer(Render Layer) : ๋ธ๋ผ์ฐ์ ๋ ๋๋ง ๊ณผ์ ์์ ์์ฑ๋๋ ๋ ๋ ํธ๋ฆฌ๋ฅผ ์ด์ฉํ์ฌ ๋ ์ด์์ ๊ฐ์ฒด๋ค์ ํ๋ฉด์ ๋ณด๋ค ํจ์จ์ ์ผ๋ก ์์๋ค์ ๋ฟ๋ ค์ฃผ๊ธฐ ์ํด ๋ ์ด์ด ํํ๋ก ๊ตฌ์ฑ๋ ๊ฒ
- Graphics Layer : Paint Layer์์ ์ค์ ํ๋ฉด์ ๋์์ง๋ ์์๋ค์ ์ถ๋ ฅ์ GPU์๊ฒ ์์ํ๊ธฐ ์ํด ์์ฑ๋ ๋ ์ด์ด๋ก GPU๊ฐ Graphics Layer๋ฅผ ๋ฌถ์ด ํ๋์ ์ด๋ฏธ์ง๋ก ๋ง๋ค์ด ๋ด๋ ๊ฒ์ ํ๋์จ์ด ๊ฐ์/GPU ๊ฐ์์ด๋ผ๊ณ ํํํ๋ค.
- Graphics Layer์ ์์นํ ์์๋ค์ CPU๊ฐ ์๋ GPU๊ฐ ์ฒ๋ฆฌ
- GPU๋ CPU์ ๋นํด์ ๊ทธ๋ํฝ ์ฒ๋ฆฌ ์๋๊ฐ ๋น ๋ฅด๊ณ ์ ๋๋ฉ์ด์
์ ๋ํ ๋น์ฉ์ด ์ ์ด ์ฑ๋ฅ์ ์ ๋ฆฌํ๋ค.
- ๋ ์ด์ด๋ ์ฑ๋ฅ์ ํฅ์์ํค์ง๋ง ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ์ธก๋ฉด์์๋ ๋น์ฉ์ด ๋น์ผ ์์
์ด๋ค.
ํฉ์ฑ(Compositiong)
- ํ์ธํธ ๋จ๊ณ์์ ์์ฑ๋ ๋ ์ด์ด๋ฅผ ํฉ์ฑํ์ฌ ์ค์ ํ๋ฉด์ ๋ํ๋ธ๋ค.
- ์ด ๊ณผ์ ์ด ๋๋๋ฉด ๋ธ๋ผ์ฐ์ ํ๋ฉด์์ ์น ํ์ด์ง๋ฅผ ๋ณผ ์ ์๋ค.
Reflow / Repaint
- ๋ธ๋ผ์ฐ์ ๋์ ๊ณผ์ ์ค ์คํ์ผ ์ดํ์ ๊ณผ์ (์คํ์ผ โ ๋ ์ด์์ โ ํ์ธํธ โ ํฉ์ฑ)์ ๋ ๋๋ง์ด๋ผ๊ณ ํ๋๋ฐ, ์ด ๋ ๋๋ง ๊ณผ์ ์ ์ํฉ์ ๋ฐ๋ผ ๋ฐ๋ณตํ์ฌ ๋ฐ์ํ ์ ์๋ค.
- ์คํ์ผ ๋จ๊ณ์์ ๊ตฌ์ฑ๋๋ ๋ ๋ ํธ๋ฆฌ๋ JavaScript์ ์ํด DOM ํธ๋ฆฌ, CSSOM ํธ๋ฆฌ๊ฐ ๋ณ๊ฒฝ๋ ๋ ๋ค์ ์ฌ๊ตฌ์ฑ๋๋ค.
- DOM ๋
ธ๋์ ์ถ๊ฐ/์ญ์ ํ ๊ฒฝ์ฐ
- ์์์ ๊ธฐํ์ ์ธ ์ํฅ(๋์ด, ๋์ด, ์์น)์ ์ฃผ๋ CSS ์์ฑ๊ฐ์ ๋ณ๊ฒฝํ๋ ๊ฒฝ์ฐ
Reflow
- ์ฒ์ ๋
ธ๋์ ํฌ๊ธฐ์ ์์น๊ฐ ๊ฒฐ์ ๋๋ ๊ฒ์ ๋ ์ด์์ ์ดํ ๋
ธ๋์ ํฌ๊ธฐ์ ์์น๋ฅผ ๋ค์ ๊ณ์ฐํ๋ ๊ฒ
- ๋ ์ด์์๋ถํฐ ์ดํ ๊ณผ์ ์ ๋ค์ ์ํํ๋ ๊ฒ
- ์์์ ๊ธฐํ์ ์ธ ์ํฅ์ ์ฃผ๋ CSS ์์ฑ๊ฐ :
height
, width
, left
, top
, font-size
, line-height
๋ฑ
Repaint
- ์์์ ๊ธฐํ์ ์ธ ์ํฅ์ ์ฃผ์ง ์๋ CSS ์์ฑ๊ฐ์ ๋ณ๊ฒฝํ๋ฉด ๋ฆฌํ๋ก์ฐ๊ฐ ๋ฐ์ํ์ง ์๋๋ค.
- ํ์ธํธ๋ถํฐ ์ดํ ๊ณผ์ ์ ์ํํ๋ ๊ฒ
- ์์์ ๊ธฐํ์ ์ธ ์ํฅ์ ์ฃผ์ง ์๋ CSS ์์ฑ๊ฐ :
background-color
, color
, visibility
, text-decoration
๋ฑ
- ๋ฆฌํ๋ก์ฐ๋ ์ ์ฒด ํฝ์
์ ๋ค์ ๊ณ์ฐํด์ผ ํ๋ฏ๋ก ๋ถํ๊ฐ ํฌ์ง๋ง, ๋ฆฌํ์ธํธ๋ ์ด๋ฏธ ๊ณ์ฐ๋ ํฝ์
๊ฐ์ ์ด์ฉํด ํ๋ฉด์ ๊ทธ๋ฆฌ๊ธฐ ๋๋ฌธ์ ๋ฆฌํ๋ก์ฐ์ ๋นํด ๋ถํ๊ฐ ์ ๋ค.
- ๋ฆฌํ๋ก์ฐ๊ฐ ๋ฐ์ํ๋ฉด ๋ฆฌํ์ธํธ๋ ํจ๊ป ๋ฐ์
Reflow์ Repaint์ ์ฐจ์ด
- Reflow๋ ์์์ ํฌ๊ธฐ๋ ์์น์ ํฝ์
์ด ๋ณ๊ฒฝ๋๋ ๊ฒฝ์ฐ ๊ฐ์ ๋ค์ ๊ณ์ฐํด์ผํ ๋ ๋ฐ์
- Repaint๋ ํฝ์
๊ฐ์ ๊ณ์ฐํ์ง ์๋ CSS ์์ฑ๊ฐ์ด ๋ณ๊ฒฝ๋๋ ๊ฒฝ์ฐ
์ฐธ๊ณ