๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“‹Technical interview(Front)

HTML์ด ๋ Œ๋”๋ง ์ค‘์— JavaScript๊ฐ€ ์‹คํ–‰๋˜๋ฉด ๋ Œ๋”๋ง์ด ๋ฉˆ์ถ”๋Š” ์ด์œ 

by ๋…น์ฐจ๋ง›๊ฐœ๊ตฌ๋ฆฌ 2023. 1. 9.

๋จผ์ €!!

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

  1. ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ HTML๊ณผ CSS ์ž์›์„ ๋ฐ›์•„์™€์„œ DOM Tree์™€ SSOM Tree๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
  2. DOM Tree์™€ SSOM Tree๋กœ ๋ธŒ๋ผ์šฐ์ €์— ๋ ˆ์ด์•„์›ƒ์„ ์žก์•„์ค„ ๋ Œ๋”ํŠธ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
  3. ๋ Œ๋”ํŠธ๋ฆฌ ๋…ธ๋“œ ์žˆ๋Š” ์†์„ฑ์ด๋‚˜ ์Šคํƒ€์ผ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ธŒ๋ผ์šฐ์ €์— ํฌ๊ธฐ, ์œ„์น˜, ํฌ๊ธฐ์— ๋งž๊ฒŒ ๋ ˆ์ด์•„์›ƒ์„ ์žก๋Š”๋‹ค.
  4. ๋ธŒ๋ผ์šฐ์ €์— ํŽ˜์ธํŠธ ํ•œ๋‹ค.

 

์ด์œ  #1

๋ธŒ๋ผ์šฐ์ € ๋ Œ๋”๋ง ๊ณผ์ • ์ค‘์— <script> ํƒœ๊ทธ๋ฅผ ๋งŒ๋‚˜๊ฒŒ ๋˜๋ฉด ์ง„ํ–‰์ค‘์ธ HTMLํŒŒ์‹ฑ์„ ์ค‘์ง€ํ•˜๊ณ 

js์—”์ง„์œผ๋กœ ์ œ์–ด ๊ถŒํ•œ์„ ๋„˜๊ธด๋‹ค.  JSํŒŒ์‹ฑ๊ณผ ์‹คํ–‰์ด ์ข…๋ฃŒ๋˜๋ฉด ๋ Œ๋”๋ง ์—”์ง„์œผ๋กœ ๋‹ค์‹œ ๋Œ์•„๊ฐ€ ํŒŒ์‹ฑ์ด ์ค‘๋‹จ๋œ ์‹œ์ ๋ถ€ํ„ฐ ๋‹ค์‹œ ํŒŒ์‹ฑ์„ ์‹œ์ž‘ํ•œ๋‹ค.

 

๊ทธ๋ ‡๊ธฐ์— ์‚ฌ์šฉ์ž๋Š” ์†๋„๊ฐ€ ๋Š๋ ค์ง„ ๊ฒƒ ์ฒ˜๋Ÿผ ๋Š๊ปด์ง€๊ณ  ํšจ์œจ์„ฑ์ด ๋–จ์–ด์ง„๋‹ค.

 

์ด๋Ÿฌํ•œ ์›๋ฆฌ ๋•Œ๋ฌธ์— ์Šคํฌ๋ฆฝํŠธ ์†Œ์Šค๋Š” body ํƒœ๊ทธ ๋์— ๋‘๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•œ๋‹ค.

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์‹ฑ๊ณผ ์‹คํ–‰์€ ๋ธŒ๋ผ์šฐ์ € ์—”์ง„์ด ์•„๋‹Œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์—์„œ ์ฒ˜๋ฆฌํ•œ๋‹ค.

 

๐Ÿ’จ ๋งŒ์•ฝ ์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์„ ๋จผ์ € ๋กœ๋“œํ•˜๊ฒŒ ๋˜๋Š” ๊ฒฝ์šฐ
- ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๋ฌธ์„œ๋ฅผ ํŒŒ์‹ฑํ•˜๋Š” ๋™์•ˆ ๋ธŒ๋ผ์šฐ์ €๋Š” ๋‹ค๋ฅธ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์Šคํƒ€์ผ์ด ํŒŒ์‹ฑ๋˜์ง€ ์•Š์€ ์ƒํƒœ๊ฐ€๋จ
- ํ™”๋ฉด ๋ ˆ์ด์•„์›ƒ์ด ์ œ๋Œ€๋กœ ๊ตฌ์„ฑ๋˜์ง€ ์•Š์€ ์ƒํƒœ๋กœ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ทฐ๋ฅผ ์ œ๊ณตํ•˜๊ฒŒ ๋  ํ™•๋ฅ ์ด ๋†’๋‹ค.
- ์Šคํฌ๋ฆฝํŠธ ์†Œ์Šค๋ฅผ ํ•˜๋‹จ์— ๋‘๊ฒŒ ๋˜๋ฉด HTML๋ฌธ์„œ๋ฅผ ํ™”๋ฉด์— ํ‘œ์‹œํ•˜๋Š” ์†๋„๊ฐ€ ๋นจ๋ผ์ง€๊ฒŒ ๋˜๊ณ  ์‚ฌ์šฉ์ž๊ฐ€ ๋ทฐ๋ฅผ ๋ณด๋Š”๋ฐ ํ•„์š”ํ•œ ์›ฌ๋งŒํ•œ ๋ฌธ์„œ๋ฅผ ํ•ด์„ํ•œ ์ƒํƒœ๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์ž์˜ ๋ถˆํŽธ์„ ์ดˆ๋ž˜ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค.

 


์ด์œ  #2

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ DOM API ํ†ตํ•ด์„œ DOM ํŠธ๋ฆฌ๋ฅผ ๋ณ€๊ฒฝ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.

 

์œ„์˜ ์ด์œ  #1์—์„œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ JS ์—”์ง„๊ณผ ๋ Œ๋”๋ง ์—”์ง„์€ ์ง๋ ฌ์ ์œผ๋กœ ์‹คํ–‰ํ•œ๋‹ค.

์ฆ‰, ์œ„์—์„œ ๋ถ€ํ„ฐ ํ•œ์ค„ํ•œ์ค„ ๋‚ด๋ ค๊ฐ€๋ฉฐ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰์‹œํ‚ค๊ณ , ํ•œ ์—”์ง„์ด ์‹คํ–‰๋˜๋ฉด ๋‹ค๋ฅธ ์—”์ง„์€ ์‹คํ–‰ ๊ถŒํ•œ์„ ์ƒ์‹คํ•œ๋‹ค.

 

๋งŒ์•ฝ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธํŒŒ์ผ์ด ์ฝ์–ด์ง€๋Š” ๋™์•ˆ์—๋„ HTML ,CSS ํŒŒ์‹ฑ์ด ์ค‘๋‹จ๋˜์ง€ ์•Š์œผ๋ฉด ๋ Œ๋”ํŠธ๋ฆฌ๊ฐ€ ๋‹ค ๊ตฌ์„ฑ๋˜์ง€ ์•Š์•˜์„ ๋•Œ JS ์—”์ง„์˜ js์ฝ”๋“œ ํ•ด์„์— ์˜ํ•ด์„œ DOM ํŠธ๋ฆฌ ๋ณ€๊ฒฝ์‹œํ‚ฌ ์ˆ˜๋„ ์žˆ๊ณ  ์•„์ง ๊ทธ๋ ค์ง€์ง€ ์•Š์€ DOM ํŠธ๋ฆฌ์˜ ๋…ธ๋“œ์— ์ ‘๊ทผํ•œ๋‹ค๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋‚  ์ˆ˜๋„ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ •์ง€ํ•œ๋‹ค.

๊ฐ™์€ ์ด์œ ๋กœ <script> ํƒœ๊ทธ ๋ฅผ <body> ํƒœ๊ทธ ๋์— ๋‘๋Š” ๊ฒƒ์„ ๊ถŒ์žฅ.

 

HTML ํŒŒ์‹ฑ ๋ธ”๋กœํ‚นํ˜„์ƒ์„ ๊ทผ๋ณธ์ ์œผ๋กœ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด HTML5๋ถ€ํ„ฐ async์™€ defer ์ถ”๊ฐ€๋จ.

async์™€ defer๋Š” HTMLํŒŒ์‹ฑ๊ณผ ์™ธ๋ถ€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์˜ ๋กœ๋“œ๊ฐ€ ๋น„๋™๊ธฐ์ ์œผ๋กœ ๋™์‹œ์— ์ง„ํ–‰๋˜๋„๋ก ๋งŒ๋“ค์–ด์คŒ.

 

๋Ÿฐ ์ด์œ ์—์„œ ๋ณดํ†ต async, defer ์†์„ฑ์„ ์ด์šฉํ•œ๋‹ค.

 

async์†์„ฑ์€ HTML๋ Œ๋”๋ง์„ ๋ฉˆ์ถ”์ง€ ์•Š๊ณ  ๋™์‹œ์— js ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œ ํ•˜๊ณ 

๋‹ค์šด๋กœ๋“œ๊ฐ€ ๋๋‚œ ํ›„์— ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

 

defer์†์„ฑ์€ HTML๋ Œ๋”๋ง์„ ๋ฉˆ์ถ”์ง€ ์•Š๊ณ  ๋™์‹œ์— js ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œ ํ•˜๊ณ 

HTML๋ Œ๋”๋ง์ด ๋๋‚œ ํ›„์— ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

CSS๋Š” ํŒŒ์‹ฑ ์ค‘๋‹จํ•˜์ง€ ์•Š์Œ
→ ์Šคํƒ€์ผ ์‹œํŠธ๋Š” ์ด๋ก ์ ์œผ๋กœ DOM ํŠธ๋ฆฌ๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์„œ ํŒŒ์‹ฑ์„ ๊ธฐ๋‹ค๋ฆฌ๊ฑฐ๋‚˜ ์ค‘๋‹จํ•˜์ง€ ์•Š๋Š”๋‹ค.

 

728x90