[JavaScript] 38. ๋ธ๋ผ์ฐ์ ์ ๋ ๋๋ง ๊ณผ์
๐น ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ ๋ถ์ผ๋ ์น ๋ธ๋ผ์ฐ์ ํ๊ฒฝ์์ ๋์ํ๋ ์นํ์ด์ง/์ ํ๋ฆฌ์ผ์ด์ ์ ํด๋ผ์ด์ธํธ ์ฌ์ด๋๋ค.
๐น ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ํด๋ผ์ด์ธํธ ์ฌ์ด๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ ๋ธ๋ผ์ฐ์ ์์ HTML, CSS์ ํจ๊ป ์คํ๋๋ค.
๐ก ์ด ๋, ๋ธ๋ผ์ฐ์ ๊ฐ HTML, CSS, ์๋ฐ์คํฌ๋ฆฝํธ๋ก ์์ฑ๋ ํ ์คํธ ๋ฌธ์๋ฅผ ํ์ฑ(ํด์)ํ๊ณ , ๋ธ๋ผ์ฐ์ ์ ๋ ๋๋งํ๋ ๊ณผ์ ์ ๊ฑฐ์น๊ฒ ๋๋ค.
1. ๋ธ๋ผ์ฐ์ ๋ HTML, CSS, ์๋ฐ์คํฌ๋ฆฝํธ, ์ด๋ฏธ์ง, ํฐํธ ํ์ผ ๋ฑ ๋ ๋๋ง์ ํ์ํ ๋ฆฌ์์ค๋ฅผ ์์ฒญํ๊ณ ์๋ฒ๋ก๋ถํฐ ์๋ต๋ฐ์
2. ๋ธ๋ผ์ฐ์ ์ ๋ ๋๋ง ์์ง์ ์๋ฒ๋ก๋ถํฐ ์๋ต๋ HTML๊ณผ CSS๋ฅผ ํ์ฑํ์ฌ DOM๊ณผ CSSOM์ ์์ฑํ๊ณ ์ด๋ค์ ๊ฒฐํฉํ์ฌ ๋ ๋ํธ๋ฆฌ๋ฅผ ์์ฑํจ
3. ๋ธ๋ผ์ฐ์ ์ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ์๋ฒ๋ก๋ถํฐ ์๋ต๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ํ์ฑํ์ฌ AT(Abstract Syntax Tree)๋ฅผ ์์ฑํ๊ณ , ๋ฐ์ดํธ์ฝ๋๋ก ๋ณํํ์ฌ ์คํํจ. ์ด ๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ DOM API๋ฅผ ํตํด DOM์ด๋ CSSOM์ ๋ณ๊ฒฝํ ์ ์์. ๋ณ๊ฒฝ๋ DOM๊ณผ CSSOM์ ๋ค์ ๋ ๋ ํธ๋ฆฌ๋ก ๊ฒฐํฉ๋จ.
4. ๋ ๋ ํธ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก HTML์์์ ๋ ์ด์์(์์น์ ํฌ๊ธฐ)์ ๊ณ์ฐํ๊ณ ๋ธ๋ผ์ฐ์ ํ๋ฉด์ HTML์์๋ฅผ ํ์ธํ ํจ
01. ์์ฒญ๊ณผ ์๋ต
๐น ๋ธ๋ผ์ฐ์ ์ ํต์ฌ ๊ธฐ๋ฅ : ํ์ํ ๋ฆฌ์์ค๋ฅผ ์๋ฒ์ ์์ฒญํ๊ณ , ์๋ฒ๋ก๋ถํฐ ๋ฐ์ ์๋ต์ผ๋ก ๋ธ๋ผ์ฐ์ ์ ๋ ๋๋งํ๋ ๊ฒ
๐น ์๋ฒ๋ ๋ฃจํธ ์์ฒญ์ ๋ํด ์๋ฌต์ ์ผ๋ก ์๋ฒ์ ๋ฃจํธ ํด๋์ ์กด์ฌํ๋ ์ ์ ํ์ผ index.html์ ๋ธ๋ผ์ฐ์ ๋ก ์๋ตํ๋ค.
โ ์์ฒญ๊ณผ ์๋ต์ ๊ฐ๋ฐ์ ๋๊ตฌ์ Network ํจ๋์์ ํ์ธ ๊ฐ๋ฅํ๋ค.
02. HTTP 1.1๊ณผ HTTP 2.0
๐น HTTP๋ ์น์์ ๋ธ๋ผ์ฐ์ ์ ์๋ฒ๊ฐ ํต์ ํ๊ธฐ ์ํ ํ๋กํ ์ฝ์ด๋ค.
๐น HTTP/1.1 ์ ์ปค๋ฅ์ ๋น ํ๋์ ์์ฒญ๊ณผ ์๋ต๋ง ์ฒ๋ฆฌํ๋ค.
๐น HTTP/2.0 ์ ์ปค๋ฅ์ ๋น ์ฌ๋ฌ ๊ฐ์ ์์ฒญ๊ณผ ์๋ต์ด ๊ฐ๋ฅํ๋ค.
03. HTML ํ์ฑ๊ณผ DOM ์์ฑ
๐ก DOM ์ HTML ๋ฌธ์๋ฅผ ํ์ฑํ ๊ฒฐ๊ณผ๋ฌผ์ธ ์๋ฃ๊ตฌ์กฐ์ด๋ค.
โ ๊ทธ๋ฆผ ์ค๋ช !!
04. CSS ํ์ฑ๊ณผ CSSOM ์์ฑ
๐น ๋ ๋๋ง ์์ง์ HTML์ ํ ์ค์ฉ ํ์ฑํ๋ฉฐ DOM์ ์์ฑํ๋ค๊ฐ, CSS๋ฅผ ๋ก๋ํ๋ ํ๊ทธ๋ฅผ ๋ง๋๋ฉด DOM ์์ฑ์ ์ผ์ ์ค๋จํ๋ค.
๐น CSS๋ฅผ HTML๊ณผ ๋์ผํ ํ์ฑ๊ณผ์ (๋ฐ์ดํธ -> ๋ฌธ์ -> ํ ํฐ -> ๋ ธ๋ -> CSSOM)์ ๊ฑฐ์น๋ฉฐ CSSOM(CSS Object Model)์ ์์ฑํ๋ค.
๐น CSS ํ์ฑ์ ์๋ฃํ๋ฉด ๋ค์ HTML์ ํ์ฑํ์ฌ DOM ์์ฑ์ ์ฌ๊ฐํ๋ค.
๐น CSSOM์ CSS์ ์์์ ๋ฐ์ํ์ฌ ์์ฑ๋๋ค.
05. ๋ ๋ ํธ๋ฆฌ ์์ฑ
๐น ๋ ๋๋ง ์์ง์ด ์์ฑํ DOM๊ณผ CSSOM์ ๋ ๋๋ง์ ์ํด ๋ ๋ ํธ๋ฆฌ(render tree)๋ก ๊ฒฐํฉ๋๋ค.
๐น ๋ ๋ํธ๋ฆฌ๋ ๋ ๋๋ง์ ์ํ ํธ๋ฆฌ๊ตฌ์กฐ์ ์๋ฃ๊ตฌ์กฐ์ด๊ณ , ํ๋ฉด์ ๋ ๋๋ง๋๋ ๋ ธ๋๋ง์ผ๋ก ๊ตฌ์ฑ๋๋ค.
(ex. HTML์ metaํ๊ทธ, script ํ๊ทธ, CSS์ display:none์ ๋ถํฌํจ)
๐น ์ดํ ์์ฑ๋ ๋ ๋ํธ๋ฆฌ๋ ๊ฐ HTML์์์ ๋ ์ด์์์ ๊ณ์ฐํ๋๋ฐ ์ฌ์ฉ๋๋ฉฐ, ๋ธ๋ผ์ฐ์ ํ๋ฉด์ ํฝ์ ์ ๋ ๋๋งํ๋ ํ์ธํ ์ฒ๋ฆฌ์ ์ ๋ ฅ๋๋ค.
โ ๋ธ๋ผ์ฐ์ ๋ ๋๋ง ๊ณผ์ ๋ฐ๋ณต์คํ ์์ธ (-> ์ฑ๋ฅ์ ์ ์ํฅ)
โก๏ธ ์๋ฐ์คํฌ๋ฆฝํธ์ ์ํ ๋ ธ๋ ์ถ๊ฐ ๋๋ ์ญ์
โก๏ธ ๋ธ๋ผ์ฐ์ ์ฐฝ์ ๋ฆฌ์ฌ์ด์ง์ ์ํ ๋ทฐํฌํธ ํฌ๊ธฐ ๋ณ๊ฒฝ
โก๏ธ HTML์์์ ๋ ์ด์์์ ๋ณ๊ฒฝ์ ๋ฐ์์ํค๋ width/height, margin, padding, border, display, position, top/right/bottom/left ๋ฑ์ ์คํ์ผ ๋ณ๊ฒฝ
06. ์๋ฐ์คํฌ๋ฆฝํธ ํ์ฑ๊ณผ ์คํ
๐น HTML์ DOM ํ์ผ์ ์์ฑํ๋ค๊ฐ script ํ๊ทธ๋ฅผ ๋ง๋๋ฉด DOM ์์ฑ์ ์ผ์ ์ค๋จํ๋ค.
๐น ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ์ ์ด๊ถ์ ๋๊ฒจ, ์๋ฐ์คํฌ๋ฆฝํธ ํ์ฑ์ ์คํํ๋ค.
๐น ์๋ฐ์คํฌ๋ฆฝํธ ํ์ฑ์ด ์ข ๋ฃ๋๋ฉด ๋ ๋๋ง ์์ง์ผ๋ก ์ ์ด๊ถ์ ๋๊ฒจ ๋ค์ HTML ํ์ฑ์ ์์ํ๋ค.
๐ก ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ด ํ๋ ์ผ
๐น ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ํด์ํ์ฌ AST(Abstract Syntax Tree, ์ถ์์ ๊ตฌ๋ฌธ ํธ๋ฆฌ)๋ฅผ ์์ฑํ๋ค.
๐น AST๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ฐ์ดํธ์ฝ๋๋ฅผ ์์ฑํ์ฌ ์คํํ๋ค.
1. ํ ํฌ๋์ด์ง (tokenizing)
๐น ์๋ฐ์คํฌ๋ฆฝํธ ์์ค์ฝ๋๋ฅผ ์ดํ๋ถ์ํ์ฌ ํ ํฐ๋ค๋ก ๋ถํดํ๋ค.
2. ํ์ฑ (parsing)
๐น ํ ํฐ๋ค์ ์งํฉ์ ๊ตฌ๋ฌธ๋ถ์ํ์ฌ AST๋ฅผ ์์ฑํ๋ค.
3. ๋ฐ์ดํธ์ฝ๋ ์์ฑ๊ณผ ์คํ
๐น AST๋ ๋ฐ์ดํธ์ฝ๋๋ก ๋ณํ๋๊ณ , ์ธํฐํ๋ฆฌํฐ์ ์ํด ์คํ๋๋ค.
07. ๋ฆฌํ๋ก์ฐ์ ๋ฆฌํ์ธํธ
๐น ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋์ DOM์ด๋ CSSOM์ ๋ณ๊ฒฝํ๋ DOM API๊ฐ ์ฌ์ฉ๋ ๊ฒฝ์ฐ -> ๋ฆฌํ๋ก์ฐ, ๋ฆฌํ์ธํธ๊ฐ ์ผ์ด๋๋ค.
๐น ๋ฆฌํ๋ก์ฐ : ๋ ์ด์์ ๋ณ๊ฒฝ์ด ์ผ์ด๋ ๋ ์ด์์ ๊ณ์ฐ์ ๋ค์ ํ๋ ๊ฒ
๐น ๋ฆฌํ์ธํธ : ๋ ์ด์์ ๋ณ๊ฒฝ์ด ์๋ ๊ฒฝ์ฐ, ์ฌ๊ฒฐํฉ๋ ๋ ๋ ํธ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ค์ ํ์ธํธ ํ๋ ๊ฒ
08. ์๋ฐ์คํฌ๋ฆฝํธ ํ์ฑ์ ์ํ HTML ํ์ฑ ์ค๋จ
๐น ์๋ฐ์คํฌ๋ฆฝํธ script ํ๊ทธ๊ฐ html ํ๊ทธ๊ฐ ๋ชจ๋ ํ์ฑ๋๊ธฐ ์ ์ ์คํ๋๋ค๋ฉด ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๊ธฐ ๋๋ฌธ์
(HTML ํ์ฑ์ด ๋ธ๋กํน๋์ด DOM ์์ฑ์ด ์ง์ฐ๋จ์ผ๋ก์จ ๋ฐ์ํ ์ ์๋ ๋ฌธ์ ์ ๋ค์ด ์กด์ฌํจ)
โก๏ธ body ์์ ๊ฐ์ฅ ์๋์ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์์น์ํค๋ ํธ์ด ์ข๋ค.
โก๏ธ ์ด๋ก์จ ํ์ด์ง ๋ก๋ฉ์๊ฐ์ ๋จ์ถ์ํฌ ์ ์๋ค.
09. script ํ๊ทธ์ async/defer ์ดํธ๋ฆฌ๋ทฐํธ
๐ก ์๋ฐ์คํฌ๋ฆฝํธ ํ์ฑ์ ์ํ DOM ์์ฑ์ด ์ค๋จ๋๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ๋์ฑ ์ผ๋ก HTML5๋ถํฐ ์ถ๊ฐ๋์๋ค.
<script async src='extern.js'></script>
<script defer src='extern.js'></script>
1. asynce ์ดํธ๋ฆฌ๋ทฐํธ
๐น HTML ํ์ฑ๊ณผ ์ธ๋ถ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ์ ๋ก๋๊ฐ ๋น๋๊ธฐ์ ์ผ๋ก ๋์์ ์งํ๋๋ค.
๐น ๋จ, ์๋ฐ์คํฌ๋ฆฝํธ์ ํ์ฑ๊ณผ ์คํ์ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ์ ๋ก๋๊ฐ ์๋ฃ๋ ์งํ ์งํ๋๋ค.
2. defer ์ดํธ๋ฆฌ๋ทฐํธ
๐น HTML ํ์ฑ๊ณผ ์ธ๋ถ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ์ ๋ก๋๊ฐ ๋น๋๊ธฐ์ ์ผ๋ก ๋์์ ์งํ๋๋ค.
๐น ๋จ, HTML ํ์ฑ์ด ๋๋ ํ์ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ฑ์ด ์คํ๋๋ค.
๐ ์ฐธ๊ณ ์๋ฃ