Jieunny์˜ ๋ธ”๋กœ๊ทธ

S4) Unit 2. [HTML/CSS] ๋ธŒ๋ผ์šฐ์ € &๋ Œ๋”๋ง ๋ณธ๋ฌธ

CodeStates/learning contents

S4) Unit 2. [HTML/CSS] ๋ธŒ๋ผ์šฐ์ € &๋ Œ๋”๋ง

Jieunny 2023. 3. 16. 12:00

๐Ÿ“ฃ  ๋ธŒ๋ผ์šฐ์ €๋ž€?

๐Ÿญ. ๋ธŒ๋ผ์šฐ์ €์˜ ์ •์˜

โœ”๏ธ ์›น ์„œ๋ฒ„์—์„œ ์–‘๋ฐฉํ–ฅ์œผ๋กœ ํ†ต์‹ ํ•˜๋ฉฐ HTML ๋ฌธ์„œ ๋ฐ ๊ทธ๋ฆผ, ๋ฉ€ํ‹ฐ๋ฏธ๋””์–ด ๋“ฑ์˜ ์ปจํ…์ธ ๋ฅผ ์—ด๋žŒํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” GUI ๊ธฐ๋ฐ˜์˜ ์†Œํ”„ํŠธ์›จ์–ด ํ”„๋กœ๊ทธ๋žจ

โžฐ ํŽ˜์ด์ง€๋ฅผ ๋‹ค์šด๋กœ๋“œ ํ•˜๊ธฐ ์œ„ํ•ด ์‘์šฉ ๊ณ„์ธต์˜ ๋Œ€ํ‘œ์ ์ธ ํ”„๋กœํ† ์ฝœ์ธ HTTP๋ฅผ ํ†ตํ•ด ์†ก์ˆ˜์‹ ํ•œ๋‹ค.

โžฐ ์›น ๋ธŒ๋ผ์šฐ์ € ๋˜๋Š” ์›น ํƒ์ƒ‰๊ธฐ๋ผ๊ณ ๋„ ํ•œ๋‹ค.

 

๐Ÿฎ. ์›น(Web)

โœ”๏ธ ์›”๋“œ ์™€์ด๋“œ ์›น : ์ธํ„ฐ๋„ท ์ƒ์—์„œ ํ…์ŠคํŠธ๋‚˜ ๊ทธ๋ฆผ, ์†Œ๋ฆฌ, ์˜์ƒ ๋“ฑ๊ณผ ๊ฐ™์€ ๋ฉ€ํ‹ฐ๋ฏธ๋””์–ด ์ •๋ณด๋ฅผ ํ•˜์ดํผํ…์ŠคํŠธ ๋ฐฉ์‹์œผ๋กœ ์—ฐ๊ฒฐํ•ด ์ œ๊ณตํ•œ๋‹ค.

โžฐ ์›น ํŽ˜์ด์ง€ : HTML ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘์„ฑ๋œ ๋ฌธ์„œ ํ˜•ํƒœ

โžฐ ์›น ์‚ฌ์ดํŠธ : ์›น ํŽ˜์ด์ง€ ์ค‘ ์„œ๋กœ ๊ด€๋ จ๋œ ๋‚ด์šฉ์œผ๋กœ ์ž‘์„ฑ๋œ ์›น ํŽ˜์ด์ง€๋“ค์˜ ์ง‘ํ•ฉ

 

๐Ÿฏ. ๋ธŒ๋ผ์šฐ์ €์˜ ํŠน์ง•

โœ”๏ธ ํ˜„์กดํ•˜๋Š” ๋ธŒ๋ผ์šฐ์ €๋ผ๋ฆฌ๋Š” ๋™์ž‘ ๋ฐฉ์‹์ด ๊ฐ™๋‹ค.

โžฐ ์‚ฌ์šฉ์ž๊ฐ€ ์„ ํƒํ•œ ์ž์›์„ ์„œ๋ฒ„์— ์š”์ฒญํ•˜๊ณ , ์„œ๋ฒ„์˜ ์‘๋‹ต์„ ๋ธŒ๋ผ์šฐ์ €์— ๋„์šฐ๋Š” ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค.

โžฐ ์—ฌ๊ธฐ์„œ ์ž์›์€ ๋Œ€๊ฐœ HTML ๋ฌธ์„œ์ด์ง€๋งŒ PDF, ๋ฉ€ํ‹ฐ๋ฏธ๋””์–ด ๋“ฑ์˜ ํ˜•ํƒœ์ผ ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ž์›์˜ ์ฃผ์†Œ๋Š” URI๋กœ ๋˜์–ด ์žˆ๋‹ค.

 

๐Ÿฐ. ์›น์˜ ๋™์ž‘ ์›๋ฆฌ

1. ์‚ฌ์šฉ์ž๊ฐ€ ์›น ๋ธŒ๋ผ์šฐ์ €๋ฅผ ํ†ตํ•ด ์ฐพ๊ณ  ์‹ถ์€ ์›น ํŽ˜์ด์ง€์˜ URL ์ฃผ์†Œ๋ฅผ ์ž…๋ ฅํ•œ๋‹ค.

2. DNS ์„œ๋ฒ„์—์„œ ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ URL ์ฃผ์†Œ ์ค‘ ๋„๋ฉ”์ธ ๋„ค์ž„์„ ๊ฒ€์ƒ‰ํ•œ๋‹ค.

3. ํ•ด๋‹น ๋„๋ฉ”์ธ ๋„ค์ž„์— ํ•ด๋‹นํ•˜๋Š” IP ์ฃผ์†Œ๋ฅผ ์ฐพ์•„ ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ URL ์ •๋ณด์™€ ํ•จ๊ป˜ ์ „๋‹ฌํ•œ๋‹ค.

4. ์ „๋‹ฌ๋œ ์ •๋ณด๋Š” HTTP ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•ด์„œ HTTP ์š”์ฒญ ๋ฉ”์‹œ์ง€๋ฅผ ์ƒ์„ฑํ•˜๊ณ , TCP ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•ด ์ธํ„ฐ๋„ท์„ ๊ฑฐ์ณ ํ•ด๋‹น IP ์ปดํ“จํ„ฐ๋กœ ์ „์†ก๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด ์š”์ฒญ ๋ฉ”์„ธ์ง€๋Š” ๋‹ค์‹œ HTTP ํ”„๋กœํ† ์ฝœ์„ ํ†ตํ•ด ์›นํŽ˜์ด์ง€ URL ์ •๋ณด๋กœ ๋ณ€ํ™˜ ๋œ๋‹ค.

5. ์›น ์„œ๋ฒ„๋Š” ์ด ๋ณ€ํ™˜๋œ ์ •๋ณด์— ํ•ด๋‹นํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰์„ ํ†ตํ•ด ์ฐพ์•„๋‚ธ ๋’ค HTTP ํ”„๋กœํ† ์ฝœ์„ ํ†ตํ•ด HTTP ์‘๋‹ต ๋ฉ”์‹œ์ง€๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ์ด ๋ฉ”์‹œ์ง€๋Š” ๋‹ค์‹œ TCP ํ”„๋กœํ† ์ฝœ์„ ์ด์šฉํ•ด ์ธํ„ฐ๋„ท์„ ๊ฑฐ์ณ ์‚ฌ์šฉ์ž์˜ ์ปดํ“จํ„ฐ๋กœ ์ „์†ก๋œ๋‹ค.

6. ์‚ฌ์šฉ์ž์˜ ์ปดํ“จํ„ฐ์— ๋„์ฐฉํ•œ HTTP ์‘๋‹ต ๋ฉ”์‹œ์ง€๋Š” HTTP ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•ด ์›น ํŽ˜์ด์ง€ ๋ฐ์ดํ„ฐ๋กœ ๋ณ€ํ™˜๋˜๊ณ , ๋ณ€ํ™˜๋œ ๋ฐ์ดํ„ฐ๋Š” ์›น ๋ธŒ๋ผ์šฐ์ € ์ƒ์— ์ถœ๋ ฅ๋˜์–ด ์‚ฌ์šฉ์ž๊ฐ€ ๋ณผ ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

 

๐Ÿฐ. ๋ธŒ๋ผ์šฐ์ €์˜ ๊ตฌ์กฐ

1๏ธโƒฃ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค(User Interface)

โœ”๏ธ UI : ์œ ์ €์™€ ๊ฐ€์žฅ ๋ฐ€์ ‘ํ•˜๊ฒŒ ๋งž๋‹ฟ์•„์žˆ๋Š” ๋ถ€๋ถ„

โžฐ ์ฃผ์†Œ ํ‘œ์‹œ์ค„, ์ด์ „/๋‹ค์Œ ๋ฒ„ํŠผ, ๋ถ๋งˆํฌ ๋ฉ”๋‰ด ๋“ฑ์— ๊ด€๋ จ๋œ GUI ๋ถ€๋ถ„์„ ํ†ต์นญํ•œ๋‹ค.

 

2๏ธโƒฃ ๋ธŒ๋ผ์šฐ์ € ์—”์ง„(Browser Engine)

โœ”๏ธ UI์™€ ๋ Œ๋”๋ง ์—”์ง„ ์‚ฌ์ด์˜ ๋™์ž‘์„ ์ œ์–ดํ•œ๋‹ค.

โžฐ ๋ฌธ์„œ ๊ฐ์ฒด ๋ชจ๋ธ(DOM) ์ž๋ฃŒ ๊ตฌ์กฐ๋ฅผ ๊ตฌํ˜„ํ•œ๋‹ค.

โžฐ ๋ ˆ์ด์•„์›ƒ ์—”์ง„์ด๋ผ๊ณ ๋„ ๋ถ€๋ฅด๋ฉฐ, ๋ Œ๋”๋ง ์—”์ง„๊ณผ ๋ฌถ์–ด ๋ณดํ†ต ๋ธŒ๋ผ์šฐ์ € ์—”์ง„์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

โžฐ ๋ธŒ๋ผ์šฐ์ € ์—”์ง„์€ ์›น ๋ธŒ๋ผ์šฐ์ €๋งˆ๋‹ค ์ „์šฉ ์—”์ง„์„ ์‚ฌ์šฉํ•œ๋‹ค.

    ใ„ด ํฌ๋กฌ์€ ๋ธ”๋งํฌ(Blink)

 

3๏ธโƒฃ ๋ Œ๋”๋ง ์—”์ง„(Rendering Engine)

โœ”๏ธ ์š”์ฒญํ•œ ์ฝ˜ํ…์ธ ๋ฅผ ํ™”๋ฉด์— ์ถœ๋ ฅํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

โžฐ HTML, CSS๋ฅผ ์ตœ์ข…์ ์œผ๋กœ ํŒŒ์‹ฑํ•ด์„œ ํ™”๋ฉด์— ๊ทธ๋ ค์ค€๋‹ค.

โžฐ ๋ณดํ†ต ๋ธŒ๋ผ์šฐ์ € ์—”์ง„๊ณผ ๋ฌถ์–ด ํ•˜๋‚˜๋กœ ๋ณด๋Š” ์‹œ๊ฐ์ด ๋งŽ๋‹ค.

โžฐ ์›น ๋ธŒ๋ผ์šฐ์ €๋งˆ๋‹ค ์ „์šฉ ์—”์ง„์„ ์‚ฌ์šฉํ•œ๋‹ค.

 

4๏ธโƒฃ ํ†ต์‹ (Networking)

โœ”๏ธ HTTP ์š”์ฒญ๊ณผ ๊ฐ™์€ ๋„คํŠธ์›Œํฌ ํ˜ธ์ถœ์— ์‚ฌ์šฉ๋œ๋‹ค.

โžฐ ํ”Œ๋žซํผ์˜ ๋…๋ฆฝ์ ์ธ ์ธํ„ฐํŽ˜์ด์Šค์ด๊ณ , ํ”Œ๋žซํผ์˜ ํ•˜๋ถ€์—์„œ ์‹คํ–‰๋œ๋‹ค.

 

5๏ธโƒฃ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ•ด์„๊ธฐ(JavaScript Interpreter)

โœ”๏ธ JS์ฝ”๋“œ๋ฅผ ์œ„์—์„œ ์•„๋ž˜๋กœ ํ•œ ์ค„์”ฉ ์ฝ์–ด ๋‚ด๋ ค๊ฐ€๋Š” ๋ฐฉ์‹์œผ๋กœ ํŒŒ์‹ฑํ•˜๋Š” ์–ธ์–ด

โžฐ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์ด๋ผ๊ณ ๋„ ๋ถ€๋ฅด๋ฉฐ, ๋ธŒ๋ผ์šฐ์ €๋งˆ๋‹ค ์ „์šฉ ์—”์ง„์ด ํƒ‘์žฌ๋˜์–ด ์žˆ๋‹ค.

    ใ„ด V8(๊ตฌ๊ธ€์ด ๊ฐœ๋ฐœํ•œ ํฌ๋กฌ์˜ ์˜คํ”ˆ์†Œ์Šค JS ์—”์ง„)

    ใ„ด V8 ์—”์ง„์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ๋Š” ํฌ๊ฒŒ Heap Memory์™€ Call Stack์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค.

 

โœ”๏ธ ํž™ ๋ฉ”๋ชจ๋ฆฌ(Heap Memory)

โžฐ ๋™์  ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์— ์‚ฌ์šฉ๋˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ

โžฐ ๊ฐ์ฒด ๋˜๋Š” ๋™์  ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋ฉฐ, ์ด๊ณณ์— ์ €์žฅ๋˜๋Š” ๋ฉ”๋ชจ๋ฆฌ๋Š” V8 ์—”์ง„ ๋‚ด๋ถ€์—์„œ ๊ฐ€์žฅ ํฐ ๊ณต๊ฐ„์„ ์ฐจ์ง€ํ•˜๊ณ  ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜๋„ ๋ฐœ์ƒํ•œ๋‹ค.

 

โœ”๏ธ ์ฝœ ์Šคํƒ(Call Stack)

โžฐ ํ”„๋กœ๊ทธ๋žจ์ƒ์—์„œ ์šฐ๋ฆฌ๊ฐ€ ์–ด๋””์— ์žˆ๋Š”์ง€ ๊ธฐ๋กํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ

โžฐ ํ•˜๋‚˜๋งŒ ์กด์žฌํ•˜๋ฉฐ, ํ•œ ๋ฒˆ์— ํ•œ ์ž‘์—…๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

โžฐ ํฌ๊ธฐ์— ์ œํ•œ์ด ์žˆ๋‹ค.

function multiplyz(a, b) {                |  |
    return a * b;                         |  |
                                          | multiply(n,n) |
}                                         | square(n) |
                                          | printSquare(4) |
function square(n) {
    return multiply(n, n);
}

function printSquare(n) {
    let squared = square(n);
    console.log(squared);
}

printSquare(4);

โžฐ return ๋˜๋Š” ์ˆœ์„œ๋Œ€๋กœ stack์—์„œ ์ œ๊ฑฐํ•œ๋‹ค.

โžฐ square(n) ํ•จ์ˆ˜๊นŒ์ง€ ๋ฆฌํ„ด๋˜๋ฉด, console.log ๊ฐ€ ์‹คํ–‰๋˜์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— console.log(sqaured)๊ฐ€ ์ฝœ ์Šคํƒ์œผ๋กœ push๋˜๊ณ , ์‹คํ–‰๋˜๊ณ  ๋‚˜๋ฉด printSquare ํ•จ์ˆ˜ ๋˜ํ•œ ์‹คํ–‰๋˜์—ˆ์œผ๋ฏ€๋กœ, ์Šคํƒ์—์„œ ์ œ๊ฑฐ๋œ๋‹ค.

โžฐ ์Šคํƒ ํ”„๋ ˆ์ž„ : ์ฝœ ์Šคํƒ์— ์Œ“์ด๋Š” ๋ฐ์ดํ„ฐ ํ•˜๋‚˜ํ•˜๋‚˜

โžฐ ์Šคํƒ ์˜ค๋ฒ„ํ”Œ๋กœ : ์Šคํƒ์˜ ํ•œ์ •๋œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๋„˜์–ด๋ฒ„๋ฆฌ๊ฒŒ ๋˜๋ฉด ๋ฐœ์ƒ์‹œํ‚ค๋Š” ์—๋Ÿฌ

-> ์›น ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋ฉˆ์ถ”๊ณ , UX์—๋„ ์ข‹์ง€ ๋ชปํ•˜๋‹ค!

โžฐ ์Šคํƒ ์ถ”์  : ๋ธŒ๋ผ์šฐ์ €์˜ ์ฝ˜์†” ๋กœ๊ทธ๋ฅผ ์‚ดํŽด๋ณด๋ฉด ์—๋Ÿฌ ๋ฐœ์ƒ ์›์ธ์„ ์•Œ์•„๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

 

6๏ธโƒฃ UI ๋ฐฑ์—”๋“œ

โœ”๏ธ ๋ Œ๋”๋ง ์—”์ง„์ด ๋ถ„์„ํ•œ Render Tree๋ฅผ ๋ธŒ๋ผ์šฐ์ €์— ๊ทธ๋ฆฌ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

โžฐ  OS ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ, ์ด ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์—ฌ๋Ÿฌ ํ˜•ํƒœ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

โžฐ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ช…๋ น์–ด ๋ผ์ธ ์ธํ„ฐํŽ˜์ด์Šค(Command Line Interface - ํ„ฐ๋ฏธ๋„ or ๋ช…๋ น ํ”„๋กฌํ”„ํŠธ),  ์ผ๊ด„ ์ฒ˜๋ฆฌ ์ธํ„ฐํŽ˜์ด์Šค(Batch interface), ๊ทธ๋ž˜ํ”ฝ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค(GUI) ์ค‘ ํ•˜๋‚˜๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

โžฐ ๋ณดํ†ต์€ ๊ทธ๋ž˜ํ”ฝ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค(GUI)๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

 

7๏ธโƒฃ ์ž๋ฃŒ ์ €์žฅ์†Œ(Web Storage)

โœ”๏ธ ์ž๋ฃŒ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ณ„์ธต - ์›น ์ €์žฅ์†Œ(Web Storage)

โžฐ ์˜๊ตฌ์ ์ธ ์ €์žฅ์†Œ์ธ Local Storage, ์ž„์‹œ์ ์ด ์ €์žฅ์†Œ์ธ Session Storage ๊ฐ€ ์žˆ๋‹ค.

 

โœ”๏ธ ์›น ์Šคํ† ๋ฆฌ์ง€ ํŠน์ง•

โžฐ ์ฟ ํ‚ค ์ž์ฒด์˜ ๋ณด์•ˆ ์ทจ์•ฝ์„ฑ๊ณผ ์šฉ๋Ÿ‰ ์ œํ•œ์„ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด ๋“ฑ์žฅํ–ˆ๋‹ค.

โžฐ ์›น ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ง์ ‘ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋ฉฐ, ์„œ๋ฒ„์—๋Š” ์ €์žฅํ•œ ์ •๋ณด๊ฐ€ ์ „์†ก๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋„คํŠธ์›Œํฌ ํŠธ๋ž˜ํ”ฝ ๋น„์šฉ์„ ์ค„์—ฌ์ค€๋‹ค.

โžฐ ์˜ค๋ฆฌ์ง„(๋„๋ฉ”์ธ + ํ”„๋กœํ† ์ฝœ)๋งˆ๋‹ค ๋‹จ ํ•˜๋‚˜์”ฉ ์กด์žฌํ•œ๋‹ค.

 

โœ”๏ธ ์›น ์Šคํ† ๋ฆฌ์ง€ ์ข…๋ฅ˜

โžฐ ๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€

    ใ„ด ๋ณด๊ด€ ๊ธฐํ•œ์ด ์—†๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•œ๋‹ค.

    ใ„ด ๋ธŒ๋ผ์šฐ์ €๋ฅผ ๋‹ซ๊ฑฐ๋‚˜, ์ปดํ“จํ„ฐ๋ฅผ ์žฌ๋ถ€ํŒ…ํ•ด๋„ ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ฌ๋ผ์ง€์ง€ ์•Š๋Š”๋‹ค.

    ใ„ด ๋„๋ฉ”์ธ๋งˆ๋‹ค ๋ณ„๋„์˜ ๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€๊ฐ€ ์ƒ์„ฑ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋„๋ฉ”์ธ๋งŒ ๊ฐ™์œผ๋ฉด ์ „์—ญ์œผ๋กœ ๋ฐ์ดํ„ฐ ๊ณต์œ ๊ฐ€ ๊ฐ€๋Šฅํ•ด์ง„๋‹ค.

โžฐ ์„ธ์…˜ ์Šคํ† ๋ฆฌ์ง€

    ใ„ด ํ•˜๋‚˜์˜ ์„ธ์…˜๋งŒ์„ ์œ„ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•œ๋‹ค.

    ใ„ด ๋ธŒ๋ผ์šฐ์ €๋ฅผ ๋‹ซ์œผ๋ฉด ์ด ๊ฐ์ฒด์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋Š” ์‚ฌ๋ผ์ง„๋‹ค.

    ใ„ด ๋„๋ฉ”์ธ๋ณ„๋กœ ์ƒ์„ฑ๋˜๋ฉฐ, ๋ธŒ๋ผ์šฐ์ € ์ปจํ…์ŠคํŠธ๊ฐ€ ๋‹ค๋ฅด๋ฉด ์„œ๋กœ ๋‹ค๋ฅธ ์˜์—ญ์ด ๋œ๋‹ค(๋ธŒ๋ผ์šฐ์ € ๋‘ ๊ฐœ๋ฅผ ์‹คํ–‰ํ•ด ๊ฐ™์€ ํŽ˜์ด์ง€๋ฅผ ์—ด์—ˆ์„ ๋•Œ, ๋ธŒ๋ผ์šฐ์ €์˜ ์ปจํ…์ŠคํŠธ๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅด๋ฉด ์„œ๋กœ ๋ฐ์ดํ„ฐ ๊ณต์œ ๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค)

        ใ„ด ๋ธŒ๋ผ์šฐ์ € ์ปจํ…์ŠคํŠธ : ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋ฌธ์„œ๋ฅผ ํ‘œ์‹œํ•˜๋Š” ํ™˜๊ฒฝ

 

โœ”๏ธ ์›น ์Šคํ† ๋ฆฌ์ง€ ๋ฌธ๋ฒ•

โžฐ window.localStroage : ๋งŒ๋ฃŒ ๋‚ ์งœ๊ฐ€ ์—†๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ๋•Œ ์‚ฌ์šฉ

โžฐ window.sessionStorage : ์„ธ์…˜์ด ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ๋•Œ ์‚ฌ์šฉ

//window ๊ฐ์ฒด์— ์žˆ๋Š” Storage ๊ฐ์ฒด๋ฅผ ํ†ตํ•ด ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
//ํ•ด๋‹น ๊ฐ์ฒด๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๋ธŒ๋ผ์šฐ์ €๋ผ๋ฉด `undefined`๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ , ์กด์žฌํ•œ๋‹ค๋ฉด ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
if (typeof(Storage) !== "undefined") {

    // web storage๋ฅผ ์œ„ํ•œ ์ฝ”๋“œ ๋ถ€๋ถ„

} else {

    // web storage๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์œ„ํ•œ ์•ˆ๋‚ด ๋ถ€๋ถ„

}

 

โœ”๏ธ ์›น ์Šคํ† ๋ฆฌ์ง€๋ฅผ ํ™œ์šฉํ•œ ๊ธฐ๋Šฅ

โžฐ ๋ณต๊ตฌ ๋ฐ ๋ฐฑ์—… ๊ด€๋ จ ๊ธฐ๋Šฅ

    ใ„ด ๋ธ”๋กœ๊ทธ ๊ธ€ ๋ณต๊ตฌ ๋ฐ ๋ฐฑ์—…

    ใ„ด form ์ž…๋ ฅ ์ค‘ ๋ฒ—์–ด๋‚ฌ์„ ๋•Œ ๋ณต๊ตฌ ๋ฐ ๋ฐฑ์—…


๐Ÿ“ฃ  ๋ธŒ๋ผ์šฐ์ € ๋ Œ๋”๋ง

๐Ÿญ. ๋ธŒ๋ผ์šฐ์ € ๋ Œ๋”๋ง์ด๋ž€?

โœ”๏ธ HTML, CSS, JavaScript ๋“ฑ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ž‘์„ฑํ•œ ๋ฌธ์„œ๊ฐ€ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ถœ๋ ฅ๋˜๋Š” ๊ณผ์ •

โžฐ ๋ธŒ๋ผ์šฐ์ €๋Š” ๋ Œ๋”๋ง์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ Œ๋”๋ง ์—”์ง„์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

 

๐Ÿฎ. ๋ธŒ๋ผ์šฐ์ € ๋ Œ๋”๋ง ๊ณผ์ •

1. ์‚ฌ์šฉ์ž๊ฐ€ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ํ†ตํ•ด ์›น ์‚ฌ์ดํŠธ์— ์ ‘์†ํ•œ๋‹ค.

2. ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ HTML, CSS ๋“ฑ ํ•„์š”ํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ๋‹ค์šด๋ฐ›๋Š”๋‹ค.

3. ๋ Œ๋”๋ง ์—”์ง„์€ ์ „๋‹ฌ๋งŒ์€ HTML ๋ฌธ์„œ๋ฅผ ํŒŒ์‹ฑํ•ด์„œ DOM Tree๋ฅผ ๋งŒ๋“ ๋‹ค.

4. ๋‹ค์šด๋ฐ›์€ ์™ธ๋ถ€ CSS ํŒŒ์ผ๊ณผ ํ•จ๊ป˜ ํฌํ•จ๋œ ์Šคํƒ€์ผ ์š”์†Œ๋ฅผ ํŒŒ์‹ฑํ•ด CSSOM Tree๋ฅผ ๋งŒ๋“ ๋‹ค.

5. ๋งŒ๋“  DOM ํŠธ๋ฆฌ์™€ CSSOM ํŠธ๋ฆฌ๋ฅผ ๊ฒฐํ•ฉํ•ด Render ํŠธ๋ฆฌ๋ฅผ ๊ตฌ์ถ•ํ•œ๋‹ค.

6. ๋ ˆ์ด์•„์›ƒ ๊ณผ์ •์„ ํ†ตํ•ด ์š”์†Œ์˜ ๋ฐฐ์น˜ ์œ„์น˜๋ฅผ ์ •ํ•œ๋‹ค.

7. ๋ ˆ์ด์•„์›ƒ ๊ณผ์ •์ด ๋๋‚˜๋ฉด UI ๋ฐฑ์—”๋“œ์—์„œ Render ํŠธ๋ฆฌ๋ฅผ ํ™”๋ฉด์— ๊ทธ๋ฆฌ๊ธฐ ์‹œ์ž‘ํ•œ๋‹ค -> Paint

 

1๏ธโƒฃ ํŒŒ์‹ฑ(Parsing)

โœ”๏ธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ ์ž‘์„ฑ๋œ ํŒŒ์ผ์„ ์‹คํ–‰์‹œํ‚ค๊ธฐ ์œ„ํ•ด ๊ตฌ๋ฌธ ๋ถ„์„์„ ํ•˜๋Š” ๋‹จ๊ณ„

โžฐ ํŒŒ์„œ๊ฐ€ ์ง„ํ–‰ํ•˜๋ฉฐ, ํŒŒ์„œ๋Š” HTML ํŒŒ์ผ์˜ ์ฝ”๋“œ๋ฅผ ๋ฌธ๋ฒ•์  ์˜๋ฏธ๋ฅผ ๊ฐ–๋Š” ์ตœ์†Œ ๋‹จ์œ„์ธ 'ํ† ํฐ'์œผ๋กœ ํ•œ ๋ฒˆ ๋ถ„ํ•ดํ•˜๊ณ , ์ด ํ† ํฐ๋“ค์„ '๋…ธ๋“œ'๋ผ๋Š” ์š”์†Œ๋กœ ๋ฐ”๊พผ๋‹ค.

โžฐ ๋…ธ๋“œ๋“ค์€ ์ƒํ•˜ ๊ด€๊ณ„์— ๋”ฐ๋ผ ํ•˜๋‚˜์˜ ํŠธ๋ฆฌ(ํŒŒ์Šค ํŠธ๋ฆฌ or ๋ฌธ๋ฒ•ํŠธ๋ฆฌ) ๋ฅผ ํ˜•์„ฑํ•œ๋‹ค.

 

โœ”๏ธ ๋ฌธ์„œ ํŒŒ์‹ฑ : ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ฝ”๋“œ๋ฅผ ์ดํ•ดํ•˜๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ

โžฐ DOM Tree, CCSSOM Trss๋ฅผ ๋งŒ๋“œ๋Š” ๊ณผ์ •

โžฐ DOM ํŠธ๋ฆฌ๋กœ ํŒŒ์‹ฑํ•˜๋Š” ๊ณผ์ •์—์„œ HTML ํ† ํฐ์ด ๋งŒ๋“ค์–ด์ง€๋Š”๋ฐ, ์ด ํ† ํฐ์—๋Š” ์‹œ์ž‘ ํƒœ๊ทธ์™€ ๋งˆ์นจ ํƒœ๊ทธ, ์†์„ฑ ์ด๋ฆ„๊ณผ ๊ฐ’๋„ ํฌํ•จ์ด ๋œ๋‹ค.

โžฐ ํ† ํฐ์œผ๋กœ ๋ณ€ํ•œ ์ž…๋ ฅ๊ฐ’์€ ํŒŒ์„œ์— ์˜ํ•ด ๋…ธ๋“œ๊ฐ€ ๋˜๊ณ , ์ตœ์ข…์ ์œผ๋กœ DOM์œผ๋กœ ๊ตฌ์„ฑ์ด ๋œ๋‹ค.

โžฐ ์ด ๊ณผ์ •์—์„œ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ CSS ์Šคํƒ€์ผ์„ ๋งŒ๋‚  ๊ฒฝ์šฐ CSSOM ํŠธ๋ฆฌ๋กœ ํŒŒ์‹ฑํ•˜๊ณ , <script> ํƒœ๊ทธ๋ฅผ ๋งŒ๋‚  ๊ฒฝ์šฐ ๋ Œ๋”๋ง์„ ์ฐจ๋‹จํ•˜๋ฉด์„œ HTML ํŒŒ์‹ฑ ๋˜ํ•œ ์ค‘๋‹จํ•œ๋‹ค.

โžฐ ์ค‘๋‹จ ํ›„, <script> ํƒœ๊ทธ ๋‚ด src ์†์„ฑ์œผ๋กœ ์—ฐ๊ฒฐ๋œ ํŒŒ์ผ์„ ๋‹ค์šด๋ฐ›์•„ ํŒŒ์‹ฑํ•˜๊ณ  ์‹คํ–‰์‹œํ‚จ ๋’ค ๋‹ค์‹œ HTML ํŒŒ์ผ์„ ํŒŒ์‹ฑํ•˜๊ธฐ ์‹œ์ž‘ํ•œ๋‹ค.

 

โœ”๏ธ DOM Tree : HTML ๋ฌธ์„œ์˜ ์š”์†Œ๋“ค์˜ ์ค‘์ฒฉ ๊ด€๊ณ„๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋…ธ๋“œ๋“ค์„ ํŠธ๋ฆฌ ๊ตฌ์กฐ๋กœ ๊ตฌ์„ฑํ•œ ๊ฒƒ

โžฐ Document Object Model

โžฐ HTML ํƒœ๊ทธ๋‚˜ ์†์„ฑ์„ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ํ˜•ํƒœ์ธ ๊ฐ์ฒด๋กœ ๋ฐ”๊ฟ”์ค€ ๊ฒƒ

 

โœ”๏ธ CSSOM Tree : CSS ๊ด€๋ จ ํŒŒ์ผ์„ ํŒŒ์‹ฑํ•ด ๋งŒ๋“  ํŠธ๋ฆฌ

โžฐ CSS Object Model

โžฐ CSS๋Š” ๋ถ€๋ชจ์˜ ์†์„ฑ์„ ์ž์‹์ด ์ƒ์†๋ฐ›๊ธฐ ๋•Œ๋ฌธ์— p๋Š” ๋ถ€๋ชจ์˜ ์†์„ฑ์ธ font-size, ์ž์‹ ์˜ ์†์„ฑ์ธ font-weight ๋‘๊ฐœ์˜ ์†์„ฑ์„ ๊ฐ–๊ฒŒ ๋œ๋‹ค.

 

โœ”๏ธ ๋ Œ๋” ํŠธ๋ฆฌ(Render Tree) : DOM ํŠธ๋ฆฌ์™€ CSSOM ํŠธ๋ฆฌ๋ฅผ ํ•ฉ์นœ ํŠธ๋ฆฌ

โžฐ ๋ Œ๋”๋ง์„ ๋ชฉ์ ์œผ๋กœ ๋งŒ๋“ค์–ด์ง€๋Š” ํŠธ๋ฆฌ

โžฐ ๋ณด์ด์ง€ ์•Š์„ ์š”์†Œ๋“ค์€ ์ด ํŠธ๋ฆฌ์— ํฌํ•จ์‹œํ‚ค์ง€ ์•Š๋Š”๋‹ค(<meta>๋‚˜ display:none ์ด ์ ์šฉ๋œ ์š”์†Œ๋Š” ์ œ์™ธ๋œ๋‹ค)

 

โœ”๏ธ ๋ ˆ์ด์•„์›ƒ : ๋ Œ๋”ํŠธ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ HTML ์š”์†Œ์˜ ๋ ˆ์ด์•„์›ƒ(์œ„์น˜, ํฌ๊ธฐ ๋“ฑ)์„ ๊ณ„์‚ฐํ•˜์—ฌ ๋ธŒ๋ผ์šฐ์ € ํ™”๋ฉด ์–ด๋””์— ๋ฐฐ์น˜ํ•  ์ง€ ๊ฒฐ์ •ํ•˜๋Š” ๊ณผ์ •

โžฐ ๋ Œ๋” ํŠธ๋ฆฌ๋Š” ํŽ˜์ธํŒ… ๊ณผ์ •์„ ๊ฑฐ์ณ์•ผ ๋ธŒ๋ผ์šฐ์ € ์œ„์˜ ํ™”๋ฉด์œผ๋กœ ๊ทธ๋ ค์ง„๋‹ค.

โžฐ ๋ธŒ๋ผ์šฐ์ €๋Š” ๋ Œ๋”ํŠธ๋ฆฌ๋ฅผ ์œ„์—์„œ ์•„๋ž˜๋กœ ์ฝ์–ด ๋‚ด๋ ค๊ฐ€๋ฉฐ px ๋‹จ์œ„๋กœ ๊ฐ ์š”์†Œ๊ฐ€ ์ „์ฒด ํ™”๋ฉด์—์„œ ์–ด๋””์—, ์–ด๋–ค ํฌ๊ธฐ๋กœ, ์–ด๋–ป๊ฒŒ ๋ฐฐ์น˜๋˜์–ด์•ผ ํ•˜๋Š”์ง€ ํŒŒ์•…ํ•œ๋‹ค.

 

โœ”๏ธ ํŽ˜์ธํŒ… : ๋ ˆ์ด์•„์›ƒ์—์„œ ๊ฒฐ์ •๋œ ๋Œ€๋กœ ๊ทธ๋ฆผ์„ ๊ทธ๋ฆฌ๊ธฐ ์‹œ์ž‘

โžฐ ๊ฐ ์ •๋ณด๋ฅผ ๊ฐ€์ง„ ํ”ฝ์…€๋“ค์ด ๋ชจ์—ฌ ํ•˜๋‚˜์˜ ํ™”๋ฉด์„ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ


๐Ÿ“ฃ  ๋ฆฌํ”Œ๋กœ์šฐ์™€ ๋ฆฌํŽ˜์ธํŠธ

๐Ÿญ. ๋ฆฌํ”Œ๋กœ์šฐ(Reflow)์™€ ๋ฆฌํŽ˜์ธํŠธ(Repaint)

โœ”๏ธ ๋ฆฌํ”Œ๋กœ์šฐ : ์›น ์ธํ„ฐ๋ ‰์…˜์œผ๋กœ ์ธํ•ด ๋ Œ๋”๋ง ๊ณผ์ •์˜ ๋ ˆ์ด์•„์›ƒ์„ ๋ฐ˜๋ณตํ•ด ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ

โžฐ ์›น ์ธํ„ฐ๋ ‰์…˜ : ํฌ๊ธฐ ์กฐ์ ˆ, ์š”์†Œ ์‚ญ์ œ ๋˜๋Š” ์ถ”๊ฐ€ ๋“ฑ

โœ”๏ธ ๋ฆฌํŽ˜์ธํŠธ : ํŽ˜์ธํŠธ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•ด ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ

 

๐Ÿฎ. ๋ฆฌํ”Œ๋กœ์šฐ์™€ ๋ฆฌํŽ˜์ธํŠธ์˜ ์ตœ์ ํ™”

โœ”๏ธ ๋ฆฌํ”Œ๋กœ์šฐ๋Š” ๋ Œ๋”๋ง์„ ๋‹ค์‹œ ํ•˜๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฐฐ์น˜๋ฅผ ์œ„ํ•œ ์—ฐ์‚ฐ์„ ํ•ด์•ผ ํ•ด์„œ ์‹ค์ œ๋กœ CPU๋ฅผ ๋งŽ์ด ์ฐจ์ง€ํ•œ๋‹ค.

โœ”๏ธ ๋ฆฌํŽ˜์ธํŠธ๋Š” ํŽ˜์ธํŠธ๋ฅผ ๋‹ค์‹œ ํ•˜๋Š” ๊ฒƒ์ด๋ผ ํ”ฝ์…€์„ ๋‹ค์‹œ ํ™”๋ฉด์— ์ฐ์–ด ๊ทธ๋ ค์•ผ ํ•˜๋ฏ€๋กœ CPU๋ฅผ ๋งŽ์ด ์ฐจ์ง€ํ•œ๋‹ค.

โžฐ ํ”„๋ ˆ์ž„ ๋“œ๋ž ํ˜„์ƒ๊ณผ ์ง์ ‘์ ์ธ ์—ฐ๊ด€์ด ์žˆ๋‹ค. 

    ใ„ด ํ”„๋ ˆ์ž„ ๋“œ๋ž : ์ดˆ๋‹น 60ํ”„๋ ˆ์ž„์œผ๋กœ ์œ ์ง€์‹œํ‚ค๋˜ ํ”„๋ ˆ์ž„์˜ ์ˆ˜๊ฐ€ ๋ธŒ๋ผ์šฐ์ €์˜ ๊ณผ๋ถ€ํ•˜๋กœ ์ธํ•ด ์ค„์–ด๋“œ๋Š” ํ˜„์ƒ

    ใ„ด ๋ธŒ๋ผ์šฐ์ €๋Š” ๋“œ๋ž๋œ ํ”„๋ ˆ์ž„์„ ํ™”๋ฉด์— ๊ทธ๋ฆฌ์ง€ ๋ชปํ•˜๊ณ , ์œ ์ €๋Š” ํ™”๋ฉด์ด ๋ฉˆ์ถ”๊ฑฐ๋‚˜ ๋ฒ„๋ฒ…์ธ๋‹ค๊ณ  ๋Š๋ผ๊ฒŒ ๋œ๋‹ค.

    ใ„ด ์ด๋Š” UX์— ์ข‹์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— '์ตœ์ ํ™”'๋ฅผ ๊ณ ๋ คํ•ด์•ผ ํ•œ๋‹ค.

 

1๏ธโƒฃ ๋ถˆํ•„์š”ํ•œ ๋ ˆ์ด์•„์›ƒ์„ ์ค„์ธ๋‹ค.

โœ”๏ธ CSSOM ํŠธ๋ฆฌ์˜ CSS ์†์„ฑ ์ค‘์— ๋ ˆ์ด์•„์›ƒ์„ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ์†์„ฑ๋“ค์ด ์กด์žฌํ•œ๋‹ค.

โžฐ position, width, height, left, border, display ๋“ฑ..

โžฐ ๋Œ€๊ฒŒ ์œ„์น˜, ํ˜น์€ ๋„ˆ๋น„์™€ ๊ด€๋ จ๋œ ์†์„ฑ์ด ๋งŽ๋‹ค.

โžฐ ๋•Œ๋ฌธ์— ์ด๋Ÿฐ ์†์„ฑ์„ ์ด์šฉํ•œ ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋ณด๋‹ค๋Š” transform ์†์„ฑ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค -> ๋ ˆ์ด์•„์›ƒ์„ ๋ฐœ์ƒ์‹œํ‚ค์ง€ ์•Š๊ณ  ํŽ˜์ธํŠธ๋งŒ ๋‹ค์‹œ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ์ชฝ์œผ๋กœ ๋ Œ๋”๋ง ๊ณผ์ •์ด ์ผ์–ด๋‚˜๊ธฐ ๋•Œ๋ฌธ์— ์œ ์ง€ํ•˜๊ณ ์ž ํ•˜๋Š” ํ”„๋ ˆ์ž„ ์ˆ˜๋ฅผ ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

2๏ธโƒฃ ์˜ํ–ฅ์„ ์ฃผ๋Š” ๋…ธ๋“œ๋ฅผ ์ค„์ธ๋‹ค.

โœ”๏ธ position์— absolute ๋˜๋Š” fixed๋ฅผ ์‚ฌ์šฉํ•ด์ฃผ๋ฉด ์˜ํ–ฅ์„ ๋ฐ›๋Š” ๋…ธ๋“œ๋“ค์„ ์ค„์—ฌ์ค„ ์ˆ˜ ์žˆ๋‹ค.

โžฐ fixed์™€ ๊ฐ™์ด ์˜ํ–ฅ์„ ๋ฐ›๋Š” ๋…ธ๋“œ๊ฐ€ ์ „ํ˜€ ์—†๋Š” ๊ฒฝ์šฐ ๋ฆฌํ”Œ๋กœ์šฐ ๊ณผ์ •์ด ํ•„์š”์—†๊ธฐ ๋•Œ๋ฌธ์— ๋ฆฌํŽ˜์ธํŠธ ์—ฐ์‚ฐ ๋น„์šฉ๋งŒ ๋“ค์ผ ์ˆ˜ ์žˆ๋‹ค.