[λ°±μλ λ‘λ맡] π λΈλΌμ°μ μ λμ μ리
λΈλΌμ°μ λμ μ리
μ°λ¦¬κ° νμμ μ νλ μ΄ νλ©΄μ λλ체 μ΄λ»κ² λνλκ² λλ κ²μΌκΉ?
β
μ°λ¦¬λ νμμ²λΌ λΉμ°νκ² μΈν°λ· μ£Όμμ°½μ μ£Όμλ₯Ό μ λ ₯νκ³ κ±°κΈ°μ ν΄λΉλλ ννμ΄μ§ νλ©΄μ μ νλ©° μ¬μ΄νΈλ₯Ό λμλ€λκΈ°λ§ νμ§, μ΄λ κ² νλ©΄μ΄ λ³΄μ¬μ§λ κ³Όμ μ΄ μ΄λ»κ² λμνλμ§λ μκ°ν΄λ³΄μ§ λͺ»νμ κ²μ λλ€.
β
νλ‘ νΈμλ κ°λ°μ μμ, HTMLκ³Ό CSS λ¬Έμλ₯Ό μμ±νκ³ Javascript μ½λλ₯Ό μ§λ©΄μ κΈ°λνλ λμμ νμΈνλ©° μΉ κ°λ°μ νμ κ²μ΄κ³ , μ€μ λ‘ μ΄ HTMLλ¬Έμκ° μ΄λ»κ² μ리λ₯Ό μ‘μμ μΉ νμ΄μ§μ κ°μ μ리μ DOM μμλ€μ΄ μΈν μ΄ λκ³ CSS μ€νμΌμ΄ μ μ©λΌμ κ·Έλ €μ§λμ§ μκ°ν΄λ³Ό κΈ°νκ° μμμ κ²μ λλ€.
β
μ΄ κΈ°νμ νλ² μμΈν μμλ³΄μ£ .
βλΈλΌμ°μ μ μ£Όμ κΈ°λ₯
λΈλΌμ°μ μ μ£Όμ κΈ°λ₯μ, 'μ νν μμμ μλ²μκ² μμ²νκ³ , μ μ‘λ°μ μμμ λΈλΌμ°μ νλ©΄μ νμ' νλ κ²μ λλ€.
β
μμμ μ’ λ₯λ μλμ κ°μ μμλ€μ΄ λ μ μμ΅λλ€.
- HTML
- CSS
- JavaScript
- Image
- κΈ°ν λ±λ±
β
κ·Έλ¬λ©΄ μ΄λ¬ν μμμ λΈλΌμ°μ κ° μ΄λ»κ² μλ²μκ² μμ²μ ν μ μλ κ²μΌκΉμ?
μ¬κΈ°μ μ°λ¦¬λ URI(Uniform Resource Identifier) λΌλ κ°λ μ μμμΌ ν©λλ€.
β
URIλ κ° μμμ μλ² μ£Όμλ₯Ό λ§ν©λλ€. μ΄ μ£Όμλ μλ² μ΄λκ°μ λͺ μλμ΄ μκ³ , λͺ μλ μ£Όμλ₯Ό ν΅ν΄ μλ²μκ² ν΄λΉ μ£Όμμ μμμ μμ²νμ¬ λ°μμ€κ² λ©λλ€.
β
URIλ₯Ό ν΅ν μμ μμ² λ°©λ²μ λΈλΌμ°μ μ μλ μ£Όμμ λ ₯ μ°½μ΄ λ μλ μκ³ , λ°μ΄ν° μμ²μ μν API μ£Όμκ° λ μλ μμ΅λλ€.
π‘ν κ°μ§ μλ₯Ό λ€μ΄λ³΄μλ©΄
μ°λ¦¬κ° λΈλΌμ°μ μ£Όμμ λ ₯ μ°½μ www.naver.comμ μ λ ₯νμ΅λλ€.
κ·Έλ¬λ©΄ ν΄λΉ μ£Όμμ λ§λ νμ΄μ§λ₯Ό λΈλΌμ°μ νλ©΄μ 보μ¬μ£ΌκΈ° μν΄ HTML, CSS, Javascript νμΌμ ν¬ν¨νμ¬ ν΄λΉ νμ΄μ§μ κ΄λ ¨λ λͺ¨λ 리μμ€ νμΌ(μ΄λ―Έμ§, λμμ νμΌ λ±)λ€μ λ€μ΄λ² μλ²μκ² μμ²μ νκ³ λ°μμ¬ κ²μ΄μ£ .
β
κ·Έλ¬λ©΄ μ¬κΈ°μ 'www.naver.com'μ URIκ° λκ³ ,
νμ΄μ§λ₯Ό 보μ¬μ£ΌκΈ° μν΄ μμ²ν΄μ λ°μμ¨ λͺ¨λ νμΌλ€μ΄ μμμ΄ λλ κ²μ λλ€.
λΈλΌμ°μ μ κΈ°λ³Έ ꡬ쑰
β μ¬μ©μ μΈν°νμ΄μ€ - μ£Όμ νμμ€, μ΄μ /λ€μ λ²νΌ, λΆλ§ν¬ λ©λ΄ λ±. μμ²ν νμ΄μ§λ₯Ό 보μ¬μ£Όλ μ°½μ μ μΈν λλ¨Έμ§ λͺ¨λ λΆλΆ
β λΈλΌμ°μ μμ§ - μ¬μ©μ μΈν°νμ΄μ€μ λ λλ§ μμ§ μ¬μ΄μ λμμ μ μ΄.
β λ λλ§ μμ§ - μμ²ν μ½ν μΈ λ₯Ό νμ. μλ₯Ό λ€μ΄ HTMLμ μμ²νλ©΄ HTMLκ³Ό CSSλ₯Ό νμ±νμ¬ νλ©΄μ νμν¨.
β λ€νΈμνΉ - HTTP μμ²κ³Ό κ°μ λ€νΈμν¬ νΈμΆμ μ¬μ©λ¨. μ΄κ²μ νλ«νΌ λ 립μ μΈ μΈν°νμ΄μ€μ΄κ³ κ° νλ«νΌ νλΆμμ μ€νλ¨.
β UI λ°±μλ - select / input λ± κΈ°λ³Έμ μΈ μμ ―μ κ·Έλ¦Ό. νλ«νΌμμ λͺ μνμ§ μμ μΌλ°μ μΈ μΈν°νμ΄μ€λ‘μ, OS μ¬μ©μ μΈν°νμ΄μ€ 체κ³λ₯Ό μ¬μ©.
β μλ°μ€ν¬λ¦½νΈ νμ - μλ°μ€ν¬λ¦½νΈ μ½λλ₯Ό ν΄μνκ³ μ€ν.
β μλ£ μ μ₯μ - Cookie, Local storageλ± localμ dataλ₯Ό μ μ₯νλ μμ.
λ λλ§ μμ§
λ λλ§ μμ§μ μμ²λ°μ μμμ λΈλΌμ°μ νλ©΄μ νμνλ μμ μ ν©λλ€.
μμμ μ€λͺ ν κ²μ²λΌ μμμ μ’ λ₯λ νμ΄μ§ λ λμ νμν HTML, CSS, JavaScript λΏ μλλΌ PDF, JPG λ± μλ²μ μμ²νμ¬ κ°μ Έμ¬ μ μλ λͺ¨λ κ²μ΄ λ μ μμ΅λλ€.
λ λλ§ μμ§μ μ’ λ₯λ μ¬λ¬ κ°μ§κ° μμ§λ§, κ·Έμ€ λνμ μΈ μμ§ λ κ°μ§λ₯Ό μκ°νλ€λ©΄ μΉν·(Webkit)κ³Ό κ²μ½(Gecko)κ° μλλ°,
μΉν·μ ν¬λ‘¬κ³Ό μ¬ν리, κ²μ½λ νμ΄μ΄νμ€μμ μ¬μ©λλ μμ§ μ λλ€.
β
λ λλ§ μμ§ λμ κ³Όμ
λ λλ§ μμ§μ μΉμλ²λ‘λΆν° μ λ¬λ°μ HTML λ¬Έμλ₯Ό 맨 μ²μ λ€νΈμν¬ λ μ΄μ΄μμ λΆλ¬μ΅λλ€.
κ·Έλ¦¬κ³ μλμ κ°μ κΈ°λ³Έμ μΈ Flow λ₯Ό κ±°μΉ©λλ€.
(μΈλΆμ μΈ νλ‘μ° λ° κ° κ°λ μ μ΄λ€ μ΄λ¦μ λΆμ΄λμ§λ λΈλΌμ°μ λ³λ‘ λ€λ₯Ό μ μμ§λ§ μ°μ κΈ°λ³Έμ μΈ λ¨κ³λ μλμ κ°μ΅λλ€.)
1) HTML νμ± ν DOM νΈλ¦¬ λ§λ€κΈ°
2) λ λ νΈλ¦¬(Render Tree) λ§λ€κΈ°
3) λ λ νΈλ¦¬(Render Tree) λ μ΄μμ λ§λ€κΈ°
4) λ λ νΈλ¦¬ νμΈν (Renter Tree Painting)
HTML νμ±ν DOM νΈλ¦¬ λ§λ€κΈ°
HTML νμ± κ³Όμ μ λν΄ μ€λͺ νκΈ° μ μ, κΈ°λ³Έμ μΈ μ»΄νμΌ λμ κ³Όμ μ 보면,
βλ λλ§ μμ§μ μ°μ λ€νΈμν¬ λ μ΄μ΄λ₯Ό ν΅ν΄ μ λ¬λ°μ HTML λ¬Έμ(Source code)λ₯Ό νμ±(Parsing) νμ¬ κ° μμλ€μ DOM Tree(Contents Tree)μ κ° DOM λ Έλ λ€λ‘ μ νν©λλ€.
DOMμ΄λ Document object model μ μ€λ§λ‘ λ§ν¬μ ννμ HTML λ¬Έμλ₯Ό μ€λΈμ νΈ λͺ¨λΈμ ννλ‘ λ°κΏλμ κ²μ λλ€.
λΉμ°ν HTML λ¬Έμμ κ° λ§ν¬μ κ³Ό DOMμ κ° μμλ 1:1 맀μΉλ©λλ€.
<html>
<body>
<p>
Hello World
</p>
<div> <img src="example.png"/></div>
</body>
</html>
μ΄ μ½λλ₯Ό DOM Treeλ‘ μ νν λ μλμ κ°μ΄ ꡬμ±λ¨.
β
βλ λ νΈλ¦¬(Render Tree) λ§λ€κΈ°
HTML λ¬Έμλ€μ νμ±νμ¬ DOM Treeλ₯Ό ꡬμ±ν ν, λ λλ§ μμ§μ CSS/Style λ°μ΄ν°λ₯Ό νμ±νκ³ κ·Έ μ€νμΌ λ°μ΄ν°λ€λ‘ λ λ νΈλ¦¬(Render Tree)λ₯Ό λ§λλλ€.
β
DOM νΈλ¦¬κ° μΉ μμ λνλ λ΄μ©(Contents)λ₯Ό ꡬμ±νλ€λ©΄
λ λ νΈλ¦¬λ μκ°μ μμ, μ΄λ»κ² λνλ μ§ κ·Έ μ€νμΌμ μ§μ ν©λλ€.
β
λ λ νΈλ¦¬λ μμ, μ°¨μ λ± μκ°μ μ§μΉ¨λ€μ λ΄μ μ μ¬κ°νλ€λ‘ ꡬμ±λ©λλ€.
κ·Έ μ μ¬κ°νλ€μ μ€ν¬λ¦°μ λ§λ μμλλ‘ μ λ ¬λμ΄μΌ νμ£ .
λ λ νΈλ¦¬ κ°κ°μ μ μ¬κ°νμ ν΄λΉνλ Renderer λ λλ¬ λ€μ DOM νΈλ¦¬ μμ(element)λ€μ μ μ©λμ§λ§ 1:1 κ΄κ³κ° μ±λ¦½λλ κ²μ μλλλ€.
μκ°μ μ΄μ§ μμ DOM μμλ€μ λ λ νΈλ¦¬μ μ½μ λ μ μμ΅λλ€.
β
<head> νκ·Έ μμ μμλ€μ νλ©΄μ λνλλ κ°λ€μ ν¬ν¨νμ§ μμ΅λλ€.
λ°λΌμ κ·Έ μ΄λ€ Rendererλ μ μ©λ μ μμ£ .
μ΄λ€ λ λλ¬λ€μ DOM λ Έλμ μ μ©λ μ μμΌλ κΌ νΈλ¦¬μ κ°μ μκ³μ μν νμλ μμ΅λλ€.
λ λ νΈλ¦¬(Render Tree) λ μ΄μμ λ§λ€κΈ°
λ μ΄μμμ λ§λ λ€λ κ²μ κ° λ Έλλ€μκ² μ€ν¬λ¦°μ μ΄λ 곡κ°μ μμΉν΄μΌ ν μ§ κ°κ°μ κ°(Positionm, Size)μ λΆμ¬νλ κ²μ μλ―Έν©λλ€.
λ λ νΈλ¦¬ νμΈν (Renter Tree Painting)
λ λ νΈλ¦¬κ° λ§λ€μ΄μ Έ λ μ΄μμμ΄ κ΅¬μ±λμλ€λ©΄, UI 벑μλκ° λμνμ¬ κ° λ Έλλ€μ μ ν΄μ§ μ€νμΌ λ° μμΉκ°λλ‘ νλ©΄μ λ°°μΉν©λλ€.
β
λ λμ UX(User experience)λ₯Ό μν΄, λ λλ§ μμ§μ κ° μ½ν μΈ λ₯Ό κ°λ₯νν 빨리 μ€ν¬λ¦°μ λμμΌ ν©λλ€.
λ°λΌμ λͺ¨λ HTML μμλ€μ λ λλ§ μμ§μΌλ‘ λ£μ΄μ νλ²μ μΆλ ₯νλ κ²μ΄ μλλΌ, μΌλΆ μ½ν μΈ λ λ¨Όμ νΈλ¦¬ κ³Όμ μ κ±°μ³ μ€ν¬λ¦°μ λνλκ³ , κ·Έ μμ€μ μΉμ λ€λ₯Έ μμλ€μ λ€νΈμν¬λ₯Ό ν΅ν΄ λ λλ§ μμ§μΌλ‘ μ½μ΄λ€μ΄ μ€λ μμ°¨μ μΈ λ°©μμΌλ‘ μ μΆλ ₯μ΄ μ§νλ©λλ€.
β