html, sss, js
html : ์น ํ์ด์ง์ ๊ตฌ์กฐ๋ฅผ ๋ช ์ํ ๋ฌธ์
css : ์น ํ์ด์ง๋ฅผ ๊พธ๋ฏธ๋ ์คํ์ผ ๋ฌธ์
js : ์นํ์ด์ง์ html ์์(div, button, li...)๋ฅผ ์กฐ์ํ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด
DOM(Document Object Model)
HTML ์์๋ฅผ ์กฐ์ํ๊ธฐ ์ํ API.
document = html document.
๋ธ๋ผ์ฐ์ ๋ html ๋ฌธ์์ ๋ช ์ํ html ์์๋ค์ ์ค์ ๋ก ์กฐ์ํ ์ ์๋ ๊ฐ์ฒด๋ก ์ค์ฒดํํ๋ค.
์ด ์ค์ฒดํํ ๊ฐ์ฒด๋ค์ ์กฐ์ํ ์ ์๋๋ก ์ ๊ณต๋ API ๋ฅผ DOM ์ด๋ผ๊ณ ํ๋ ๊ฒ.
๋ฐ๋ผ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ง ๊ฐ์ถ๋ฉด ์ด๋ค ์ธ์ด๋ DOM์ ์กฐ์ํ ์ ์์. ๋ณดํต์ js ๋ก DOM ์ ์กฐ์ํจ.
html ๋ฌธ์๋ฅผ ๋ณด๋ฉด, html ์์์์ ํ์ ์์, ๊ทธ ์์ ํ์ ์์... ๋ก ๋ช ์๋์ด ์์.
์ด ํํ๊ฐ ํธ๋ฆฌ ๊ฐ์์ DOM ํธ๋ฆฌ๋ผ๊ณ ํจ.
DOM์ ๊ฐ์ฒด(์ค์ฒดํ๋ html ์์)๋ฅผ Node ๋ผ๊ณ ํ๋ค.
Node ๋ ํด๋ฆญ, ๋ฒํผ ๋ฑ ์กฐ์ํ ์ ์๋ ์ด๋ฒคํธ ๋ฉ์๋๋ค์ด ์ ์๋์ด ์๋ ์ถ์ ํด๋์ค ๋น์ค๋ฌด๋ฆฌํ ๊ฒ...
html ์์๋ค์ด ์ค์ฒดํ๋ ๋, ์ด Node ๋ฅผ ์์๋ฐ์.
CSS๋ CSSOM(CSS Object Model) ์ด๋ ๊ฑธ๋ก ๋ฐ๋ก ๋ง๋ค์ด์ง.
๋ธ๋ผ์ฐ์ ๋ฅผ ์กฐ์ํ๋ API์ธ BOM(Browser Object Dom)๋ ์์. (locaiton, navigation, alter, window...)
์น ๋ธ๋ผ์ฐ์ ๋?
์น์๋ฒ์ ํต์ ํ์ฌ html, css, js, ํ ์คํธ, ์ด๋ฏธ์ง ๋ฑ ์น ๋ฆฌ์์ค๋ฅผ ๋ฐ์ ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ฃผ๋ ๊ทธ๋ํฝ ์ฌ์ฉ์ ์ธํฐํ์ด์ค(GUI) ๊ธฐ๋ฐ์ ์ํํธ์จ์ด.
์ฆ, ์น์ ๋ณด์ฌ์ฃผ๋ ํ๋ก๊ทธ๋จ.
๋ํ์ ์ธ ์น ๋ธ๋ผ์ฐ์ ๋ก๋ ํฌ๋กฌ, IE, ํ์ด์ดํญ์ค, ์ฌํ๋ฆฌ, ์คํ๋ผ๊ฐ ์๋ค.
๋ธ๋ผ์ฐ์ ๊ตฌ์กฐ
- User Interface : ์ฃผ์ ํ์์ค, ๋ถ๋งํฌ ๋ฉ๋ด ๋ฑ.
- Browser engine : ์ฌ์ฉ์ ์ธํฐํ์ด์ค์ ๋ ๋๋ง ์์ง ์ฌ์ด ๋์ ์ ์ด
- Rendering engine : ๋ฐ์์จ ๋ฐ์ดํฐ๋ฅผ UI ์์ ํ์. (HTML ํ์ผ์ ๋ฐ์์๋ค๋ฉด, html ๋ฐ css ๊ตฌ๋ฌธ์ ๋ถ์ํ๊ณ ๋ถ์๋ ์ฝํ ์ธ ๋ฅผ ํ๋ฉด์ ํ์)
- Networking layer : ์น์๋ฒ์ ๋คํธ์ํฌ ํต์ . ํ๋ซํผ ๋ ๋ฆฝ์ ์ผ๋ก ๋์.
- UI Backend layer : ์ฝค๋ณด๋ฐ์ค, ์ฐฝ ๊ฐ์ ๊ธฐ๋ณธ์ ์ธ ์์ ฏ์ ๊ทธ๋ฆผ. OS ์ฌ์ฉ์ ์ธํฐํ์ด์ค ์ฒด๊ณ๋ฅผ ์ฌ์ฉ.
- JavaScript Interpreter : js ์ฝ๋๋ฅผ ํ์ฑํ๊ณ ์คํํจ
- Data Storage : ์ฟ ํค ๊ฐ์ ๋ก์ปฌ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๊ณณ. ๋ธ๋ผ์ฐ์ ๋ localStorage, IndexedDB, WebSQL, FileSystem ๊ณผ ๊ฐ์ ์ ์ฅ์ ์ง์.
๋ธ๋ผ์ฐ์ ๊ฐ html ํ์ผ์ ๋์ฐ๋ ๊ณผ์
url์ ์ ๋ ฅํ์ฌ ํด๋น ์น์๋ฒ์๊ฒ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํจ.
๋ณดํต, ๋จผ์ ์์์ ์ด ๋๋ index.html ๋ฅผ ๋ค์ด๋ฐ๊ณ head ๋ถ๋ถ์ ์ถ๊ฐ๋ก ์์ฒญํ๋ js, css, ์ด๋ฏธ์ง, ์ธ๋ถ์์ค ๋ฑ์ ๋ค์ด๋ฐ์.
๋ธ๋ผ์ฐ์ ์ ๋ ๋๋ง ์์ง์ ์ ๋ฌ๋ฐ์ html ๋ฌธ์๋ฅผ ๋ฐ์ ์๋์ ๊ฐ์ด ์คํ์ํด.
- html ํ์ฑํ์ฌ DOM ํธ๋ฆฌ๋ก ๋ง๋ฆ : ๊ฐ ์์๋ฅผ DOM node ๋ก ๋ณํ
- Render ํธ๋ฆฌ ๋ง๋ฆ : css/style data ๋ฅผ ํ์ฑ(CSSOM)ํ๊ณ DOM ๊ณผ CSSOM ์ ํฉ์ณ render tree ๋ก ๋ณํ.
- Render ํธ๋ฆฌ ๋ฐฐ์น(layout) : ๊ฐ node ๋ฅผ ํ๋ฉด์ ์ ํํ ์ด๋ ์์น์ ๋ฐฐ์น(layout) ์ํฌ์ง ํ์. (๊ฒ์ฝ ์์ง์์๋ ๋ฆฌํ๋ก์ฐ๋ผ๊ณ ํจ)
- Render ํธ๋ฆฌ painting : node ๋ค์ด ๋ ์ด์์์ ๋ฐ๋ผ UI ๋ฐฑ์๋์ ์ํด ๊ทธ๋ ค์ง.
๋ ๋๋ง ์์ง์ ์นํ์ด์ง๋ฅผ ์ฌ์ฉ์์๊ฒ ๋นจ๋ฆฌ ๋ณด์ฌ์ฃผ๊ธฐ ์ํด ๋ชจ๋ html ์์๋ฅผ ํ์ฑํ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ๋ฐฐ์น์ painting ๊ณผ์ ์ ์์ํจ.
๋๋จธ์ง ๋ด์ฉ์ด ์ ์ก๋๋๊ฑธ ๊ธฐ๋ค๋ฆฌ๋ฉด์ ๋์์ ์ผ๋ถ๋ฅผ ํ๋ฉด์ ์ถ๋ ฅํ๋ ๊ฒ.
*dom ํธ๋ฆฌ์ render ํธ๋ฆฌ ์ฐธ๊ณ
๋ ๋๋ง ์์ง์ ๋ธ๋ผ์ฐ์ ๋ค๋ง๋ค ๋์ ๋ฐฉ์์ด ๋ค๋ฅด์ง๋ง, ๊ธฐ๋ณธ ํ๋ฆ์ ๋น์ทํจ.
์ฐธ๊ณ )
๋คํธ์ํฌ ํญ์ ์ด์ด๋ณด๋ฉด ๋ฐ์ดํฐ๋ฅผ ์ด๋ป๊ฒ ๋ฐ์์ค๋์ง ๋ณผ ์ ์๋ค.
191 ๊ฐ์ ํ์ผ์ ๋ฐ์๊ณ , ์ด 2.3mb ๋ฅผ ์ ์ก๋ฐ์๋๋ฐ ์ค์ ์นํ์ด์ง์ ๋ฆฌ์์ค๋ 6.0mb ์ฌ์ด์ฆ์ด๋ค.
์ด๋ ์ ์ก๋ฐ์ ๋ ์์ถ๋์ด ์ค๋ ํ์ผ์ด ์๊ธฐ ๋๋ฌธ์ด๋ค.
finish ๋ ๋ค์ด๋ก๋ ์๋ฃ ์๊ฐ. html ๋ก๋ ์๊ฐ์ 735ms, ์นํ์ด์ง ๋ ๋๋ง ์๋ฃ ์๊ฐ์ 859ms ์ด๋ค.