๐Ÿ”ฅ๋ธŒ๋ผ์šฐ์ € ๋ Œ๋”์— ๋Œ€ํ•˜์—ฌ!

๊ถŒ๊ทœ๋ฆฌยท2024๋…„ 1์›” 20์ผ
0

๐Ÿ‘ฉ๐Ÿปโ€๐Ÿ’ปFrontEnd

๋ชฉ๋ก ๋ณด๊ธฐ
5/29

๐Ÿ’ญ ๋ธŒ๋ผ์šฐ์ € ๋ Œ๋”๋ง

๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์›น ํŽ˜์ด์ง€๋ฅผ ๋ถˆ๋Ÿฌ์˜ฌ ๋•Œ๋Š” ๋ Œ๋”๋ง ์—”์ง„์ด๋ผ๋Š” ์†Œํ”„ํŠธ์›จ์–ด ๋ชจ๋“ˆ์ด ์‚ฌ์šฉ๋œ๋‹ค. ๋ Œ๋”๋ง ์—”์ง„์€ HTML, CSS, JavaScript์™€ ๊ฐ™์€ ์›น ํŽ˜์ด์ง€์˜ ์š”์†Œ๋“ค์„ ํŒŒ์‹ฑํ•˜๊ณ , ์ด๋ฅผ ๋ธŒ๋ผ์šฐ์ € ํ™”๋ฉด์— ์‹œ๊ฐ์ ์œผ๋กœ ํ‘œ์‹œํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.


๐Ÿ’ญ ๋ธŒ๋ผ์šฐ์ € ์ปดํฌ๋„ŒํŠธ

์‚ฌ์ง„๊ณผ ๊ฐ™์ด ๋ธŒ๋ผ์šฐ์ €๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์š”์†Œ๋Š” ๋‹ค์–‘ํ•˜๋‹ค.

  • User Interface(UI)๋Š” ์š”์ฒญํ•œ ํŽ˜์ด์ง€๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ํ™”๋ฉด ์™ธ์˜ ๋ชจ๋“  ๊ฒƒ์ด๋‹ค. ์ด์ „/๋‹ค์Œ ๋ฒ„ํŠผ, ์ƒˆ๋กœ๊ณ ์นจ, ์ฃผ์†Œ์ฐฝ, ๋ถ๋งˆํฌ, ํ™˜๊ฒฝ์„ค์ •๊ณผ ๊ฐ™์€ UI๊ฐ€ ์žˆ๋‹ค.

  • Browser engine์€ User Interface์™€ Rendering engine ์‚ฌ์ด์—์„œ ํ™œ๋™ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ๋“ค์–ด, User Interface์— ์žˆ๋Š” ์ƒˆ๋กœ๊ณ ์นจ์„ ๋ˆŒ๋ €๋‹ค๋ฉด, Browser engine์€ ์ด๋ฅผ ์ดํ•ดํ•˜๊ณ  ์ƒˆ๋กœ๊ณ ์นจ ๋ช…๋ น์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

  • โœจ Rendering engine์€ HTML, CSS, JavaScript์™€ ๊ฐ™์€ ์›น ํŽ˜์ด์ง€์˜ ์š”์†Œ๋“ค์„ ํŒŒ์‹ฑํ•˜๊ณ , ์ด๋ฅผ ๋ธŒ๋ผ์šฐ์ € ํ™”๋ฉด์— ์‹œ๊ฐ์ ์œผ๋กœ ํ‘œ์‹œํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

  • Networking์€ HTTP/HTTPS ํ”„๋กœํ† ์ฝœ์„ ์ด์šฉํ•˜์—ฌ ์„œ๋ฒ„์— ์š”์ฒญ์„ ๋ณด๋‚ผ ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ ˆ์ด์–ด๋‹ค.

  • JavaScript Interpreter์€ JS๋ฅผ ํ•ด์„ํ•˜๊ณ  ์ฝ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. ๊ฐ€์žฅ ์œ ๋ช…ํ•œ JS ํ•ด์„ ์—”์ง„์œผ๋กœ๋Š” V8์ด ์žˆ๋‹ค.

  • UI Backend๋Š” ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋™์ž‘ํ•˜๊ณ  ์žˆ๋Š” ์šด์˜์ฒด์ œ์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋”ฐ๋ฅด๋Š” UI๋“ค์„ ์ฒ˜๋ฆฌํ•œ๋‹ค. alert๊ฐ€ ์šด์˜์ฒด์ œ ๋ณ„๋กœ ๋‹ค๋ฅด๊ฒŒ ๋™์ž‘ํ•˜๋Š” ๊ฒƒ์ด ๊ทธ ์˜ˆ๋‹ค.

  • Data Persistence๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋กœ์ปฌ์— ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ๋ ˆ์ด์–ด๋กœ, ์ฟ ํ‚ค, ๋กœ์ปฌ ์Šคํ† ๋ฆฌ์ง€, SQL ๋“ฑ์— ์ ‘๊ทผํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋œ๋‹ค.


๐Ÿ’ญ Rendering engine ๋™์ž‘ ๊ณผ์ •


์„œ๋ฒ„๋กœ HTTP ์š”์ฒญ ํ›„, ์‘๋‹ต์„ ๋ฐ›์œผ๋ฉด ์šฐ๋ฆฌ๋Š” ๋น„๋กœ์†Œ ์›นํŽ˜์ด์ง€์— ์ ‘์†ํ•˜์—ฌ HTML ๋ฌธ์„œ๋ฅผ ์–ป์–ด์˜ฌ ์ˆ˜ ์žˆ๋‹ค. ์ด๋•Œ Rendering engine์€ ์œ„์™€ ๊ฐ™์€ ๊ณผ์ •์„ ๊ฑฐ์ณ HTML ๋ฌธ์„œ๋ฅผ ํ•ด์„ํ•œ๋‹ค. (+ JS๋Š” JavaScript Interpreter์—์„œ ํ•ด์„!)

1. HTML/CSS ํŒŒ์‹ฑ

๐Ÿค” ํŒŒ์‹ฑ์ด ๋ญ”๋ฐ์š”?

ํŒŒ์‹ฑ์€ ํ† ํฐํ™”๋œ ๊ตฌ์กฐ๋ฅผ ๋ถ„์„ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ํ† ํฐํ™”๋Š” ์˜๋ฏธ๊ฐ€ ์žˆ๋Š” ์ตœ์†Œ ๋‹จ์œ„๋กœ ์ฝ”๋“œ๋ฅผ ์ชผ๊ฐœ๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. ์˜ˆ๋ฅผ๋“ค์–ด <p></p> ํƒœ๊ทธ๋ฅผ ํ† ํฐํ™” ํ•˜๋ฉด, '<', 'p', '>','<', '/', 'p', '>',๊ฐ€ ๋œ๋‹ค. ์ด๋ ‡๊ฒŒ ์ชผ๊ฐœ์–ด ๋ฌธ๋ฒ•์„ ๋”ฐ๋ฅด๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด ํŒŒ์‹ฑ์ด๋‹ค.

HTML ํŒŒ์‹ฑ

๋ธŒ๋ผ์šฐ์ €๋Š” HTML ๋ฌธ์„œ๋ฅผ ํŒŒ์‹ฑํ•˜์—ฌ DOM ํŠธ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. ์ด ๊ณผ์ •์—์„œ HTML ํƒœ๊ทธ์˜ ์ข…๋ฅ˜์™€ ์†์„ฑ์„ ๋ถ„์„ํ•œ๋‹ค.

CSS ํŒŒ์‹ฑ

๋ธŒ๋ผ์šฐ์ €๋Š” CSS ๋ฌธ์„œ๋ฅผ ํŒŒ์‹ฑํ•˜๊ณ  CSSOM ํŠธ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ CSS ์ฝ”๋“œ๊ฐ€ HTML ์ฝ”๋“œ ๋‚ด์— ์‚ฝ์ž…๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, HTML์„ ํŒŒ์‹ฑํ•˜๋Š” ๋„์ค‘์— CSS ํŒŒ์‹ฑ์ด ์‹œ์ž‘๋œ๋‹ค. ์ด ๊ณผ์ •์—์„œ CSS ์Šคํƒ€์ผ, ์„ ํƒ์ž, ๊ทœ์น™์„ ๋ถ„์„ํ•˜๊ณ  ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ณ„์‚ฐํ•œ๋‹ค.

2. ๋ Œ๋”ํŠธ๋ฆฌ ์ƒ์„ฑ

๋ Œ๋”ํŠธ๋ฆฌ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ํ™”๋ฉด์— ๋‚˜ํƒ€๋‚˜๋Š” ์š”์†Œ๋“ค์„ ๊ฒฐ์ •ํ•˜๋Š” ํŠธ๋ฆฌ์ด๋‹ค. ์–ด๋– ํ•œ ์š”์†Œ๋“ค์ด ๋ณด์—ฌ์•ผ ํ•˜๋Š”์ง€, ์–ด๋– ํ•œ ์Šคํƒ€์ผ์ด ์ ์šฉ์ด ๋˜์–ด์•ผ ํ•˜๋Š”์ง€, ์–ด๋–ค ์ˆœ์„œ๋กœ ๋‚˜ํƒ€๋‚ด์•ผ ํ•˜๋Š”์ง€๋ฅผ ๋ช…์„ธํ•œ๋‹ค.

๋ Œ๋”ํŠธ๋ฆฌ๋Š” DOM ํŠธ๋ฆฌ์™€ CSSOM ํŠธ๋ฆฌ๋ฅผ ์กฐํ•ฉํ•˜์—ฌ ๋งŒ๋“ค์–ด์ง€๊ณ , ์ด๋•Œ ํ™”๋ฉด์— ๊ทธ๋ ค์ง€์ง€ ์•Š๋Š” ์š”์†Œ๋“ค์€ ํŠธ๋ฆฌ์— ๋‚˜ํƒ€๋‚˜์ง€ ์•Š๋Š”๋‹ค. <script> ๋˜๋Š” display: none๊ฐ™์€ ์š”์†Œ๋“ค์„ ๋งํ•œ๋‹ค.

3. ๋ ˆ์ด์•„์›ƒ(reflow)

๋ Œ๋”ํŠธ๋ฆฌ ๊ตฌ์„ฑ์ด ๋๋‚˜๋ฉด ๋ ˆ์ด์•„์›ƒ ๋‹จ๊ณ„๋กœ ์ด์–ด์ง„๋‹ค.

๋ ˆ์ด์•„์›ƒ ๋‹จ๊ณ„์—์„œ๋Š” ๋ Œ๋”ํŠธ๋ฆฌ์— ๊ณ„์‚ฐ๋˜์ง€ ์•Š์•˜๋˜ ๋…ธ๋“œ๋“ค์˜ ํฌ๊ธฐ์™€ ์œ„์น˜ ๊ฐ™์€ ์ •๋ณด๋ฅผ ๊ณ„์‚ฐํ•˜์—ฌ ์ขŒํ‘œ์— ๋‚˜ํƒ€๋‚ธ๋‹ค. ์ด ๊ณผ์ •์—์„œ ๋ธŒ๋ผ์šฐ์ €๋Š” ํ™”๋ฉด ์ „์ฒด์˜ ํฌ๊ธฐ๋‚˜ ์Šคํฌ๋กค ์œ„์น˜ ๋“ฑ์˜ ์š”์†Œ๋„ ๊ณ ๋ คํ•œ๋‹ค.

4. ํŽ˜์ธํŠธ

๋งˆ์ง€๋ง‰ ๋‹จ๊ณ„๋Š” ํŽ˜์ธํŠธ์ด๋‹ค. ๋ ˆ์ด์•„์›ƒ ๋‹จ๊ณ„๋ฅผ ํ†ตํ•ด ํ™”๋ฉด์— ๋ฐฐ์น˜๋œ ์š”์†Œ๋“ค์—๊ฒŒ ์ƒ‰์„ ์ž…ํžˆ๊ณ  ๋ ˆ์ด์–ด์˜ ์œ„์น˜๋ฅผ ๊ฒฐ์ •ํ•œ๋‹ค.


(+)๐Ÿค” Reflow, Repaint๋Š” ์™œ ๋ฐœ์ƒํ•˜๋Š”๊ฐ€?

๋ธŒ๋ผ์šฐ์ €์— ์Šคํƒ€์ผ์„ ํ•ด๋„ ์ถ”ํ›„์— ์–ด๋–ค ์š”์†Œ์— ์Šคํƒ€์ผ์„ ์ˆ˜์ •ํ•˜๋Š” ๋“ฑ ๋‹ฌ๋ผ์ง€๋Š” ์ผ์ด ์ƒ๊ธธ ๊ฒƒ์ด๋‹ค. ์Šคํƒ€์ผ์ด๋‚˜ DOM ๋‚ด๋ถ€๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” DOM API๊ฐ€ ์‚ฌ์šฉ๋๋‹ค๋ฉด, DOM์€ ์ด๋ ‡๊ฒŒ ํ™œ๋™ํ•œ๋‹ค.

  1. ๋ฌด์–ธ๊ฐ€ ๋ณ€๊ฒฝ๋˜์—ˆ์Œ์„ ๊ฐ์ง€
  2. Rendering engine ๋™์ž‘ ๊ณผ์ • ๋‹ค์‹œ ์ˆ˜ํ–‰
  3. ๋ฆฌ๋ Œ๋”๋ง ์ง„ํ–‰

์ด๋Ÿฌํ•œ ๊ณผ์ •์—์„œ Reflow, Repaint ๋ฐœ์ƒ !!
=> Reflow์™€ Repaint๋Š” ์•„์˜ˆ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ์ˆ˜๋Š” ์—†์œผ๋ฏ€๋กœ ์ตœ์†Œํ™” ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.


๋Š๋‚€์  .. ๐Ÿ’ก

๋ธŒ๋ผ์šฐ์ € ๋ Œ๋”๋ง์˜ ๊ณผ์ •์€ ํ™˜๊ฒฝ์— ๋”ฐ๋ผ ์†๋„๊ฐ€ ๋‹ค๋ฅด๊ฒŒ ๋‚˜ํƒ€๋‚  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์›น ๊ฐœ๋ฐœ์ž๋Š” ๋ Œ๋”๋ง ๊ณผ์ •์„ ์ตœ์ ํ™” ํ•˜์—ฌ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ๊ฐœ์„ ํ•ด์•ผ๊ฒ ๋‹ค.

profile
๊ธฐ๋ก์žฅ ๐Ÿ“

0๊ฐœ์˜ ๋Œ“๊ธ€