๐Ÿ” [์ง๋ฌด ๊ด€๋ จ ์งˆ๋ฌธ] - 06. ํ”„๋ŸฐํŠธ์—”๋“œ ์„ฑ๋Šฅ ์ตœ์ ํ™”๋ž€?

์กฐ์ค€ํ˜•ยท2021๋…„ 6์›” 21์ผ
1

interview

๋ชฉ๋ก ๋ณด๊ธฐ
11/20
post-thumbnail
  • ํ”„๋ŸฐํŠธ์—”๋“œ ์„ฑ๋Šฅ ์ตœ์ ํ™” ๊ฒฝํ—˜์ด ์žˆ๋‹ค๋ฉด ์ž์„ธํ•˜๊ฒŒ ์„ค๋ช…ํ•ด๋‹ฌ๋ผ.

๐Ÿ’ฌ Answer

๐ŸŒ ๋ธŒ๋ผ์šฐ์ € ๋™์ž‘ ์›๋ฆฌ

1. HTML ๋งˆํฌ์—…์„ ์ฒ˜๋ฆฌํ•˜๊ณ  DOM ํŠธ๋ฆฌ๋ฅผ ๋นŒ๋“œํ•ฉ๋‹ˆ๋‹ค.
2. CSS ๋งˆํฌ์—…์„ ์ฒ˜๋ฆฌํ•˜๊ณ  CSSOM ํŠธ๋ฆฌ๋ฅผ ๋นŒ๋“œํ•ฉ๋‹ˆ๋‹ค.
3. DOM ๋ฐ CSSOM์„ ๊ฒฐํ•ฉํ•˜์—ฌ ๋ Œ๋”๋ง ํŠธ๋ฆฌ๋ฅผ ํ˜•์„ฑํ•ฉ๋‹ˆ๋‹ค.
4. ๋ Œ๋”๋ง ํŠธ๋ฆฌ์—์„œ ๋ ˆ์ด์•„์›ƒ์„ ์‹คํ–‰ํ•˜์—ฌ ๊ฐ ๋…ธ๋“œ์˜ ๊ธฐํ•˜ํ•™์  ํ˜•ํƒœ๋ฅผ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.
5. ๊ฐœ๋ณ„ ๋…ธ๋“œ๋ฅผ ํ™”๋ฉด์— ํŽ˜์ธํŠธํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ‘‰ 1. ์‚ฌ์šฉ์ž ๋ธŒ๋ผ์šฐ์ €์˜ ํ˜ธ์ŠคํŠธ ํŒŒ์ผ, ๋ธŒ๋ผ์šฐ์ € ์บ์‹œ์— ํ•ด๋‹น URL์˜ ํŒŒ์ผ ์ •๋ณด๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธ

๐Ÿ‘‰ 2. DNS์— ์‹ค IP์ฃผ์†Œ๋ฅผ ์š”์ฒญํ•˜๊ณ , ๋ฆฌ์†Œ์Šค ๋ฐ›์„ ์ค€๋น„.

ํ˜ธ์ŠคํŠธ์˜ ๋„๋ฉ”์ธ ์ด๋ฆ„์„ ์‹ค์ œ IP์ฃผ์†Œ๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ์œ„ํ•ด DNS์— ์š”์ฒญํ•œ๋‹ค.
์ด IP์ฃผ์†Œ์˜ ์„œ๋ฒ„์—๊ฒŒ ๋ฆฌ์†Œ์Šค๋ฅผ ์š”์ฒญํ•˜์—ฌ ๋ฐ›์•„์˜ฌ ์ค€๋น„๋ฅผ ๋งˆ์นจ.

๐Ÿ‘‰ 3. HTML,CSS ํŒŒ์‹ฑ

์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฐ›์€ ํŒŒ์ผ ์ค‘ HTML,CSS๋ฅผ ๊ฐ๊ฐ DOM Tree, Style Tree๋กœ ํŒŒ์‹ฑ.

๐Ÿ‘‰ 4. Attachment๋กœ ๋ Œ๋”๋ง ํŠธ๋ฆฌ ์ƒ์„ฑ

DOM Tree์™€ Style Tree์˜ ์‹œ๊ฐ ์ •๋ณด๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” Attachment ์ž‘์—…์„ ํ†ตํ•ด ๋ Œ๋”๋ง ํŠธ๋ฆฌ๋ฅผ ์ƒ์„ฑ.
๋ Œ๋”๋ง ํŠธ๋ฆฌ๋Š” ์‹ค์ œ ํŽ˜์ด์ง€์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋…ธ๋“œ๋“ค๋งŒ ํฌํ•จํ•˜์—ฌ, ๋ฃจํŠธ๋ถ€ํ„ฐ ๋Œ๋ฉด์„œ ํ•ด๋‹น ๋…ธ๋“œ์— ์ผ์น˜ํ•˜๋Š” ์Šคํƒ€์ผ์„ ์—ฐ๊ฒฐํ•จ.

๐Ÿ‘‰ 5. ๋ ˆ์ด์•„์›ƒ์œผ๋กœ ์‹ค์ œ์œ„์น˜ ๊ณ„์‚ฐ

๋ Œ๋”๋ง ํŠธ๋ฆฌ๋Š” ๊ณ„์‚ฐ๋œ ์Šคํƒ€์ผ๋งŒ ์—ฐ๊ฒฐํ•œ ๊ฑฐ์ง€ ํ™”๋ฉด์ƒ ์–ด๋””์— ์œ„์น˜ํ•  ๊ฑด์ง€ ๊ณ„์‚ฐํ•œ๊ฒŒ ์•„๋‹ˆ๋‹ค.
๋ฃจํŠธ๋ถ€ํ„ฐ ํƒ์‚ฌํ•˜๋ฉด์„œ ์‹ค์ œ ์œ„์น˜๋ฅผ ๊ณ„์‚ฐํ•œ๋‹ค.
๋งŒ์•ฝ px์ด ์•„๋‹ˆ๊ณ , ์ƒ๋Œ€๊ฐ’(%)๋กœ ์ฃผ์–ด์กŒ์œผ๋ฉด, ๋ ˆ์ด์•„์›ƒ ๋‹จ๊ณ„์—์„œ๋Š” ์ ˆ๋Œ€๊ฐ’์œผ๋กœ ๋ณ€ํ™˜๋œ๋‹ค.

๐Ÿ‘‰ 6. ํŽ˜์ธํŠธ ๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ (๋ ˆ์Šคํ„ฐํ™”)

๋ ˆ์ด์•„์›ƒ ์ž‘์—…์„ ์™„๋ฃŒ ํ›„ ํ˜ธ์ถœ๋œ๋‹ค.
๋ Œ๋”๋ง ํŠธ๋ฆฌ์˜ ๊ฐ ๋…ธ๋“œ๋ฅผ ํ™”๋ฉด์— ์‹ค์ œ ๊ทธ๋ฆด ์ˆ˜ ์žˆ๋Š” ๋ ˆ์ด์–ด๋ฅผ ์ƒ์„ฑ

๐Ÿ‘‰ 7. ๋ ˆ์ด์–ด ํ•ฉ์„ฑ

๊ฐœ๋ณ„ ๋ ˆ์ด์–ด๋“ค์„ ํ•ฉ์„ฑํ•˜์—ฌ ๋ Œ๋”๋งํ•˜๋ฉด ๋ณด์—ฌ์ค„ ํ™”๋ฉด์ด ์™„์„ฑ๋œ๋‹ค.

๐ŸŒ ํŽ˜์ด์ง€ ๋กœ๋“œ ์ตœ์ ํ™”

ํŽ˜์ด์ง€๋ฅผ ๋กœ๋“œํ• ๋•Œ์™€ ๋ Œ๋”๋ง ํ• ๋•Œ๋กœ ๋ถ„๋ฅ˜ ๊ฐ€๋Šฅ.

๐Ÿ‘‰ ๋ธ”๋ก ์ฐจ๋‹จ ๋ฆฌ์†Œ์Šค ์ตœ์ ํ™”

HTMl์„ ํŒŒ์‹ฑ ํ•  ๋•Œ css,js๋ฅผ ๋งŒ๋‚˜๋ฉด HTMLํŒŒ์‹ฑ์„ ๋ฉˆ์ถ”๊ณ  ํ•ด๋‹น ํŒŒ์ผ์„ ํŒŒ์‹ฑํ•˜๊ฑฐ๋‚˜ ๋‹ค์šด๋กœ๋“œ ํ›„ ์‹คํ–‰์ด ๋˜๋Š”๋ฐ, ์ด์ฒ˜๋Ÿผ HTMLํŒŒ์‹ฑ์„ ์ฐจ๋‹จํ•˜๋Š” ์š”์†Œ๋ฅผ ๋ธ”๋ก ์ฐจ๋‹จ ๋ฆฌ์†Œ์Šค๋ผ๊ณ  ํ•œ๋‹ค.

๋ธ”๋ก์ฐจ๋‹จ๋ฆฌ์†Œ์Šค๋Š” ๊ณง ๋ Œ๋”๋ง ์ฐจ๋‹จ ์š”์†Œ์— ์†ํ•˜๋ฏ€๋กœ, ์˜ฌ๋ฐ”๋ฅธ ์‹คํ–‰ ์œ„์น˜์—์„œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด์•ผํ•œ๋‹ค.
CSS : <head>ํƒœ๊ทธ์•ˆ์— import
JS : <body>๋งจ ํ•˜๋‹จ์— ์œ„์น˜

๐Ÿ‘‰ ๋ฆฌ์†Œ์Šค ์šฉ๋Ÿ‰ ์ค„์ด๊ธฐ

JS, CSS, Img, Media, Font๋“ฑ๋“ฑ์ด ๋ฆฌ์†Œ์Šค์— ํ•ด๋‹นํ•œ๋‹ค.
๊ฐœ๋ฐœ์ž๋„๊ตฌ networkํƒญ์—์„œ ํ•„ํ„ฐ๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

JS

  • ํŠธ๋ฆฌ์‰์ดํ‚น
    ์™ธ๋ถ€ ๋ชจ๋“ˆ์—์„œ ํ•„์š”ํ•œ ๊ธฐ๋Šฅ๋งŒ์„ ์ž„ํฌํŠธ ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.
  • ๋ถˆํ•„์š”ํ•œ ์ฝ”๋“œ๋Š” ์ œ๊ฑฐ
  • tab size๋Š” 2spaces๋ฅผ ๊ถŒ์žฅ.
  • ์••์ถ• ๋ฐ ๋‚œ๋…ํ™”๋กœ ์šฉ๋Ÿ‰์„ ์ตœ์†Œํ™”

CSS

  • ๊ฐ„๊ฒฐํ•œ ์…€๋ ‰ํ„ฐ๋ฅผ ์‚ฌ์šฉ
  • ๊ณตํ†ต ์Šคํƒ€์ผ์€ class๋กœ ์ •์˜ํ•˜์—ฌ ์‚ฌ์šฉ.
  • ์ด๋ฏธ์ง€์˜ ๊ฒฝ์šฐ png๋ณด๋‹ค๋Š” ํฌ๊ธฐ๊ฐ€ ๋” ์ž‘์€ jpg,jpeg๋ฅผ ์‚ฌ์šฉ.

๐Ÿ‘‰ ๋ฆฌ์†Œ์Šค ์š”์ฒญ ๊ฐœ์ˆ˜ ์ค„์ด๊ธฐ

  • ์ด๋ฏธ์ง€ ์Šคํ”„๋ผ์ดํŠธ
    ์ด๋ฏธ์ง€๊ฐ€ ๋‹ค์ˆ˜ ์‚ฌ์šฉ๋˜๋Š” ์›น ์„œ๋น„์Šค์—์„œ, ๊ฐ๊ฐ์˜ ์ด๋ฏธ์ง€ ํŒก๋ฆฌ์„ ์„œ๋ฒ„๋กœ ์š”์ฒญํ•˜๋Š”๊ฑฐ ๋ณด๋‹ค ์ด๋ฏธ์ง€๋ฅผ ํ•˜๋‚˜๋กœ ๋ฌถ์–ด ํ•œ๋ฒˆ์˜ ๋ฆฌ์†Œ์Šค ์š”์ฒญ์„ ํ†ตํ•ด ๊ฐ€์ ธ์™€ background-position์†์„ฑ์œผ๋กœ ์›ํ•˜๋Š” ๋ถ€๋ถ„๋งŒ ํ‘œ์‹œํ•˜๋Š” ๋ฐฉ๋ฒ•

  • ์ด๋ฏธ์ง€ ์ง€์—ฐ๋กœ๋”ฉ
    ์ด๋ฏธ์ง€๊ฐ€ ๋‹ค์ˆ˜ ํ•„์š”ํ•œ ์„œ๋น„์Šค์—์„œ, ์‚ฌ์šฉ์ž ํ™”๋ฉด์— ๋ณด์ด๋Š” ์ด๋ฏธ์ง€๋งŒ ์š”์ฒญํ•˜๊ณ , ์Šคํฌ๋กค์„ ๋‚ด๋ ค ๋‹ค๋ฅธ ์ด๋ฏธ์ง€๊ฐ€ ๋ณด์—ฌ์•ผ ํ•  ๋•Œ ์ด๋ฏธ์ง€๋ฅผ ์š”์ฒญํ•˜๋Š” ์ง€์—ฐ๋กœ๋”ฉ์„ ํ†ตํ•ด ๋ฆฌ์†Œ์Šค ์š”์ฒญ์„ ์ค„์ž„.

๐ŸŒ ํŽ˜์ด์ง€ ๋ Œ๋”๋ง ์ตœ์ ํ™”

๐Ÿ‘‰ ๊ฐ•์ œ ๋™๊ธฐ์‹ ๋ ˆ์ด์•„์›ƒ๊ณผ ๋ ˆ์ด์•„์›ƒ ์Šค๋ ˆ์‹ฑ ํ”ผํ•˜๊ธฐ.

๊ฐ•์ œ ๋™๊ธฐ์‹ ๋ ˆ์ด์•„์›ƒ
JSํŒŒ์ผ์—์„œ DOM์š”์†Œ์˜ ์œ„์น˜๋‚˜ ํฌ๊ธฐ๊ฐ’์„ ๋ณ€๊ฒฝ ํ›„ ๋ฐ”๋กœ ๊ฐ€์ ธ์˜ค๋ คํ•˜๋ฉด ๊ฐ•์ œ๋กœ ๋ ˆ์ด์•„์›ƒ์„ ๋ฐœ์ƒ์‹œํ‚ด.

๋ ˆ์ด์•„์›ƒ ์Šค๋ ˆ์‹ฑ
๊ฐ•์ œ ๋™๊ธฐ์‹ ๋ ˆ์ด์•„์›ƒ์„ ์—ฐ์†์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ.

๐Ÿ‘‰ ์ƒ์œ„DOM์š”์†Œ๋ณด๋‹ค ํ•˜์œ„ DOM์š”์†Œ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ.

์ƒ์œ„ ์š”์†Œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด, ํ•˜์œ„ ์š”์†Œ์—๋„ ์˜ํ–ฅ์„ ๋ฏธ์น˜๊ธฐ ์‰ฌ์šฐ๋ฏ€๋กœ, ๊ฐ€๊ธ‰์  ํ•˜์œ„ DOM์š”์†Œ๋ฅผ ๋ณ€๊ฒฝํ•œ๋‹ค.

๐Ÿ‘‰ display:none ์†์„ฑ์€ ๋ ˆ์ด์•„์›ƒ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค.

๋ Œ๋”๋ง ํŠธ๋ฆฌ๋Š” ์‹ค์ œ ํŽ˜์ด์ง€์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋…ธ๋“œ๋งŒ์„ ํฌํ•จํ•˜๊ณ  ์žˆ๋‹ค.
display:none์ธ ๊ฒฝ์šฐ์—๋Š” ๋ Œ๋”๋ง ํŠธ๋ฆฌ์— ํฌํ•จ๋˜์ง€์•Š๋Š”๋‹ค.
โ— visibility:hidden์€ ๋ณด์ด์ง€์•Š์ง€๋งŒ, ์˜์—ญ์€ ์กด์žฌํ•˜๋ฏ€๋กœ ๋ Œ๋”๋งํŠธ๋ฆฌ์— ํฌํ•จ๋จ.
โ— ํ•˜์ง€๋งŒ display:none์„ ์‚ฌ์šฉํ•˜๊ฒŒ๋˜๋ฉด ์Šคํฌ๋ฆฐ๋ฆฌ๋” ์‚ฌ์šฉ์ž๋Š” ํ•ด๋‹น ์š”์†Œ๋ฅผ ๋“ค์„ ์ˆ˜ ์—†์–ด
clip-path๋ฅผ ์ด์šฉํ•˜๋Š”๊ฒŒ ์ข‹์„ ๊ฑฐ ๊ฐ™๋‹ค.

์ด์™ธ์— ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์ด ์žˆ์œผ๋‹ˆ ์ฐธ๊ณ  ๋งํฌ๋ฅผ ๋‚˜์ค‘์— ๋‹ค์‹œ ์ฝ์–ด๋ณด์ž.

๐ŸŒ ์ตœ์ ํ™” ๊ฒฝํ—˜

๐Ÿ‘‰ ์šฐ๋ƒ‰๋ถ€

SSAFY์—์„œ 3๋ฒˆ์งธ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•  ๋‹น์‹œ ์ธํ”„๋Ÿฐ์—์„œ 'Vue.js ์™„๋ฒฝ ๊ฐ€์ด๋“œ - ์‹ค์Šต๊ณผ ๋ฆฌํŒฉํ† ๋ง์œผ๋กœ ๋ฐฐ์šฐ๋Š” ์‹ค์ „ ๊ฐœ๋…'ํŽธ์„ ์ˆ˜๊ฐ•ํ•œ ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
๊ทธ ๋•Œ๋Š” ๋ฆฌํŒฉํ† ๋ง์ด ๋‹จ์ˆœํžˆ ์ข€ ๋” ์ข‹์€ ์ฝ”๋“œ๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๊ณ  ๋”ฐ๋ผํ–ˆ๋Š”๋ฐ, ์ง€๊ธˆ ์ด ๊ธ€์„ ์ •๋ฆฌ ํ•˜๋‹ค๋ณด๋‹ˆ ์ด๋Ÿฐ ์„ฑ๋Šฅ ์ตœ์ ํ™”์™€๋„ ์—ฐ๊ด€์ด ์žˆ๋Š” ๊ฑฐ ๊ฐ™์Šต๋‹ˆ๋‹ค.
์œ„์—์„œ ์„ค๋ช…ํ•œ ํŠธ๋ฆฌ์‰์ดํ‚น์„ ์ด์šฉํ•˜์—ฌ router์˜ ์ด๋™์„ move.js๋กœ ๋นผ์„œ ์‚ฌ์šฉํ•˜์˜€๊ณ , axiosํ†ต์‹ ์„ ์ด์šฉํ•˜๋Š” ๋ฉ”์†Œ๋“œ๋„ ๊ฐ๊ฐ์˜ js๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ, ํ•„์š”ํ•œ ๋ฉ”์†Œ๋“œ๋งŒ ๊บผ๋‚ด๋Š” ํ˜•์‹์œผ๋กœ ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ–ˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ“˜ ์ฐธ๊ณ 

https://coffeeandcakeandnewjeong.tistory.com/34
https://developers.google.com/web/fundamentals/performance/critical-rendering-path/render-tree-construction?hl=ko
https://velog.io/@ursr0706/์›น-์ ‘๊ทผ์„ฑ์„-๊ณ ๋ คํ•˜์—ฌ-ํ…์ŠคํŠธ-์ˆจ๊ธฐ๊ธฐ

profile
๊นƒํ—ˆ๋ธŒ : github.com/JuneHyung

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