2๊ฐœ์›” ์ฐจ   ๋ฉ˜ํ† ๋ง ์ค‘  ๊ฐ€์žฅ ๊ธฐ์–ต์— ๋‚จ๋Š” ๊ต์žฌ์ž…๋‹ˆ๋‹ค. ์ฒ˜์Œ์—” ์–ด๋ ค์› ์ง€๋งŒ ์ •๋ง๋กœ ์žฌ๋ฐŒ์—ˆ์–ด์š”!!

ํ˜„์žฌ๊นŒ์ง€ ๋ฌด์—‡์„ ๋ฐฐ์› ๊ณ  ๋ฌด์—‡๋“ค์„ ํ–ˆ๋Š”๊ฐ€

์›น ์ ‘๊ทผ์„ฑ, aria ์†์„ฑ (์ด๋Ÿฐ ์†์„ฑ์„ ๋„ฃ์œผ๋ฉด ๋ณด์ด์Šค์˜ค๋ฒ„๊ฐ€ ์–ด๋–ป๊ฒŒ ์ฝ๊ฒŒ ๋˜๋Š”๊ตฌ๋‚˜~ ๋А๋‚Œ์œผ๋กœ ํ•™์Šต ํ–ˆ์Šต๋‹ˆ๋‹ค!), 

๋ฐ•์Šค ๋ชจ๋ธ, Git์˜ ์ปค๋ฐ‹ ์ปจ๋ฒค์…˜, HTTPS์˜ secure ๊ณผ์ •, iterable๊ณผ iterator์˜ ์ฐจ์ด, setTimeout, setInterval, this, prototype, ํด๋กœ์ €, ํ”„๋กœ๋ฏธ์Šค ๋“ฑ์„ ํ•™์Šตํ–ˆ๊ณ  ๊ฐ€์žฅ ๊ธฐ์–ต์— ๋‚จ๋Š” ๊ฑด ์ด๋ ‡๊ฒŒ ๋ฐฐ์šด ์ง€์‹๋“ค์„ ํ™œ์šฉํ•ด ์ƒ๋‹จ์— ์ด๋ฏธ์ง€๊นŒ์ง€ ์˜ฌ๋ ค๋‘” “ํ”„๋ ˆ์ž„์›Œํฌ ์—†๋Š” ํ”„๋ก ํŠธ์—”๊ทธ ๊ฐœ๋ฐœ - ํ”„๋ž€์„ธ์Šค์ฝ” ์ŠคํŠธ๋ผ์ธจ๋กœ” ๊ต์žฌ๋ฅผ ํ†ตํ•œ SPA ๊ตฌํ˜„ ์ด์—ˆ์Šต๋‹ˆ๋‹ค!

์ด์ „์—๋Š” ์ž˜ ๋ชป ์•Œ๊ณ  ์žˆ์—ˆ๋˜ ๊ฒƒ์— ๋Œ€ํ•ด ๊นจ๋‹ฌ์€๊ฒŒ ์žˆ๋Š”๊ฐ€

๋ฐ”๋‹๋ผ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ SPA๋ฅผ ๊ตฌํ˜„ํ•˜๋ฉฐ react-router ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ฐ™์€ ํด๋ผ์ด์–ธํŠธ ๋ผ์šฐํ„ฐ๋ฅผ ์ง์ ‘ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.
์ด ๊ณผ์ •์—์„œ router ๋™์ž‘ ๋ฐฉ์‹์— ๋Œ€ํ•ด ์™„์ „ํžˆ ์ž˜๋ชป ์•Œ๊ณ  ์žˆ์—ˆ๋‹ค๋Š” ๊ฑธ ๊นจ๋‹ซ๊ฒŒ ๋๋„ค์š”..


"์ƒˆ๋กœ๊ณ ์นจํ•ด๋„ ํ•ด๋‹น ํŽ˜์ด์ง€๊ฐ€ ์œ ์ง€๋ผ์•ผ ํ•œ๋‹ค"๋ผ๋Š” ์š”๊ตฌ์‚ฌํ•ญ์„ ์ •ํ•ด๋‘๊ณ  ๊ตฌํ˜„์„ ์‹œ์ž‘ํ–ˆ๊ณ  ์ฒ˜์Œ์—” Hash ๋ผ์šฐํ„ฐ๋กœ ๊ตฌํ˜„ํ•œ ํ›„ Brower ๋ผ์šฐํ„ฐ๋กœ ๋ณ€๊ฒฝํ–ˆ์Šต๋‹ˆ๋‹ค.

 

์ด ๊ณผ์ •์—์„œ ํ•ด์‹œ ๋ผ์šฐํ„ฐ๋Š” SEO์— ์ข‹์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ, ๋ชจ๋“  ์›นํŽ˜์ด์ง€๋Š” ์ƒˆ๋กœ๊ณ ์นจ ์‹œ ์„œ๋ฒ„ ์ชฝ์œผ๋กœ ์š”์ฒญ์ด ๊ฐ„๋‹ค๋Š” ๊ฒƒ(CSR, SPA ๋“ฑ์„ ์ž˜๋ชป ์ดํ•ดํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.), ์ด๋•Œ ํ•ด์‹œ ๋ผ์šฐํ„ฐ๋Š” #(ํ•ด์‹œ) ์ดํ›„๋Š” ์š”์ฒญ์ด ๊ฐ€์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ ๋“ฑ.. ๋ฐ”๋กœ์žก๊ธฐ ์œ„ํ•ด ๋…ธ์…˜์— ๊ธฐ๋ก ํ›„ ํ•™์Šตํ•˜์—ฌ ๋ธ”๋กœ๊ทธ์— ์˜ฎ๊ธธ ๋‚ด์šฉ๋“ค์ด ์ •๋ง ๋งŽ์•˜๊ณ  ์žฌ๋ฏธ์žˆ์—ˆ๋„ค์š”!

๋ฉ˜ํ† ๋‹˜์˜ ์‹ค๋ ฅ์— ๋Œ€ํ•œ ๋งŒ์กฑ๋„๋Š” ์–ด๋– ํ•œ๊ฐ€

์ œ ๊ธฐ์ค€์—์„  ์ •๋ง ๋งŒ์กฑ์Šค๋Ÿฌ์› ์–ด์š”! ์ฝ”๋“œ ๋ฆฌ๋ทฐ ๋˜ํ•œ ๊ทธ์ € ๋‹ต์„ ์•Œ๋ ค์ฃผ์‹œ๋Š” ๊ฒŒ ์•„๋‹Œ ์ œ๊ฐ€ ์Šค์Šค๋กœ ์ฐพ์•„๊ฐˆ ์ˆ˜ ์žˆ๋„๋ก ์ด๋Œ์–ด ์ฃผ์…จ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฐ ๊ณผ์ •์—์„œ ์‹ค๋ ฅ์ด ๋งŽ์ด ๋Š˜์—ˆ์–ด์š”ใ… ใ… 

์ตœ๊ทผ 1๊ฐœ์›” ๋™์•ˆ ๋ฉ˜ํ† ๋ง์—์„œ ์–ด๋–ค ๊ฒƒ๋“ค์ด ์ข‹์•˜๋Š”๊ฐ€

๋ฉ˜ํ† ๋ง ์ฒ˜์Œ์œผ๋กœ ์ฝ”๋“œ ๋ฆฌ๋ทฐ๋ฅผ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค! ๊ธด์žฅ๋์ง€๋งŒ ์ •๋ง ์ฆ๊ฑฐ์› ์–ด์š”!

์ตœ๊ทผ 1๊ฐœ์›” ๋ฉ˜ํ† ๋ง์— ๋Œ€ํ•œ ์ž์œ ๋กœ์šด ๊ฐ์ƒ ๋ฐ ํ›„๊ธฐ

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

'Education > F-Lab' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

F-Lab Frontend ์ˆ˜๋ฃŒ ํ›„๊ธฐ  (0) 2024.04.18
F-Lab Frontend 3๊ฐœ์›” ํ›„๊ธฐ  (0) 2024.03.29
F-Lab Frontend 1๊ฐœ์›” ํ›„๊ธฐ  (0) 2024.03.29

๋ฉ˜ํ† ๋ง์„ ์‹œ์ž‘ํ•˜๊ณ  ๊ฐ€์žฅ ์ฒ˜์Œ ํ•™์Šตํ–ˆ๊ณ ..  ์ด๋Ÿฐ ๊ฒŒ  ์žˆ์—ˆ๊ตฌ๋‚˜.. ํ•˜๋ฉฐ ๊ฐ€์žฅ ์ฒ˜์Œ ์ถฉ๊ฒฉ๋ฐ›์•˜๋˜ ๋ธŒ๋ผ์šฐ์ € ๋ Œ๋”๋ง ๊ด€๋ จ  ์ด๋ฏธ์ง€์ž…๋‹ˆ๋‹ค!

๋ธ”๋กœ๊ทธ๋ฅผ ๋ฒจ๋กœ๊ทธ์—์„œ ํ‹ฐ์Šคํ† ๋ฆฌ๋กœ ์˜ฎ๊ธฐ๊ฒŒ ๋ผ ๋ชจ๋“  ๊ธ€๋“ค์„ ๋‹ค์‹œ ์ ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค!
์‹œ๊ฐ„์ด ์ง€๋‚œ ํ›„์—๋„ ๋ฉ˜ํ† ๋ง์„ ์ง„ํ–‰ํ•˜๋ฉฐ ์ œ๊ฐ€ ์–ด๋–ค ๋งˆ์Œ์ด์—ˆ๋Š”์ง€ ์ฝ์–ด๋ณด๊ณ  ์‹ถ์–ด ๋จผ์ € F-Lab 1๊ฐœ์›” ์ฐจ (๊ฐ€์žฅ ์ถฉ๊ฒฉ์ด์—ˆ๋˜..) ํ›„๊ธฐ๋ฅผ ์˜ฎ๊ฒจ ์ ์–ด๋ณด๋ ค ํ•ด์š”!

์–ด์งธ์„œ F-Lab์„ ์‹ ์ฒญํ•˜๊ฒŒ ๋์„๊นŒ์š”?!

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


์กฐ๊ธˆ ๋” ๋‹ค์–‘ํ•œ ์Šคํƒ์ด๋‚˜ ํ™˜๊ฒฝ์—์„œ ๋‹ค์–‘ํ•œ ์‚ฌ๋žŒ๋“ค์˜ ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ›๊ณ  ์‹ถ์—ˆ๊ณ  ๊ทธ๋ ‡๊ฒŒ ์žฌ์ง ์ค‘ F-Lab ๋ฉ˜ํ† ๋ง์„ ์‹ ์ฒญํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ฒซ ๋‹ฌ ๋™์•ˆ ๋ฌด์—‡์„ ๋ฐฐ์› ์„๊นŒ์š”?!

๋„คํŠธ์›Œํฌ ์ง€์‹๋ถ€ํ„ฐ ๋ธŒ๋ผ์šฐ์ €์˜ ๋™์ž‘์›๋ฆฌ, HTML/CSS, ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋“ฑ ๊ธฐ๋ฐ˜์ด ๋˜๋Š” ๊ธฐ๋ณธ์ ์ธ ๋‚ด์šฉ๋“ค์„ ์ „์ฒด์ ์œผ๋กœ ํ•™์Šต ํ–ˆ์—ˆ์Šต๋‹ˆ๋‹ค!

1๊ฐœ์›” ๋™์•ˆ ๋งŒ๋‚˜๋ณธ ๋ฉ˜ํ† ๋‹˜์˜ ์ˆ˜์ค€์€ ์–ด๋•Œ๋ณด์˜€๋Š”๊ฐ€?!

์ œ ๋ฉ˜ํ† ๋‹˜์€ ๋‹น๊ทผ ๋งˆ์ผ“์— ์žฌ์ง ์ค‘์ด์‹  ๊ฐœ๋ฐœ์ž๋ถ„์ด์…จ์–ด์š”!
์ฒซ ๋‹ฌ์€ ๋ฉ˜ํ† ๋‹˜์˜ ์ฝ”๋“œ ์ˆ˜์ค€๋ณด๋‹ค๋Š” ์ œ๊ฐ€ ๋†“์ณค๋˜ ๋ถ€๋ถ„๋“ค์„ ์žก์•„์ฃผ์‹œ๋Š” ์„ฌ์„ธํ•จ์ด๋‚˜ ๊ธด์žฅํ•ด์„œ ๋ง์ด ํ—›๋‚˜์˜ค๋Š” ์ €๋ฅผ ์ด๋Œ์–ด์ฃผ์‹œ๋Š” ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ๋Šฅ๋ ฅ์— ๋” ํž˜์ด ๋‚ฌ๋˜ ๊ฒƒ ๊ฐ™์•„์š”!
๊ทธ๋ž˜์„œ ๋”์šฑ ์ˆ˜์ค€์ด ๋†’์•„ ๋ณด์ด์…จ์Šต๋‹ˆ๋‹ค!!

๋ฉ˜ํ† ๋ง์—์„œ ์–ด๋–ค ๊ฒƒ๋“ค์ด ์ข‹์•˜๋Š”๊ฐ€?!

์ด๋ฒคํŠธ ๋ฒ„๋ธ”๋ง, ์บก์ณ๋ง, ์œ„์ž„์ด๋‚˜ ์ด๋ฒคํŠธ ๋ฃจํ”„ ๊ทธ๋ฆฌ๊ณ  CSS์—์„œ์˜ ํ•™์Šต์—์„œ์กฐ์ฐจ ์„œ์‹ ๋งฅ๋ฝ์ธ BFC์™€ IFC, ํ˜น์€ z-index์˜ ์Œ“์ž„ ๋งฅ๋ฝ์ธ Stacking Context ๋“ฑ ํ‰์†Œ์— ์ƒ๊ฐ์ง€ ๋ชปํ•œ ๊นŠ์€ ๊ฐœ๋…๋“ค๊นŒ์ง€ ํ•™์Šตํ•˜๊ฒŒ ๋œ๋‹ค๋Š” ๊ฒŒ ๋„ˆ๋ฌด ์ข‹์•˜์Šต๋‹ˆ๋‹ค!

๊ธฐ์ดˆ๊ฐ€ ๋ถ€์กฑํ•˜๋‹ค๋Š” ๊ฑธ ๋งŽ์ด ๊นจ๋‹ซ๊ฒŒ ๋์–ด์š”.

์‚ฌ์‹ค ๋Œ์•„๋ณด๋ฉด ๊ทธ๋‹ค์ง€ ์‚ฌ์šฉํ•ด ๋ณด์ง€ ์•Š์•˜๋˜ float๋ฅผ ๋‹ค๋ค„๋ณด๋Š” ๊ฒŒ ์€๊ทผํžˆ ์žฌ๋ฐŒ์—ˆ์Šต๋‹ˆ๋‹คใ…Žใ…Ž

์•ž์œผ๋กœ์˜ ๊ฐ์˜ค

์Šค์Šค๋กœ๋ฅผ ๋Œ์•„๋ณด๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜์ž! ๋ฉ”ํƒ€์ธ์ง€!!

์•ž์œผ๋กœ์˜ ๊ฐ์˜ค ๋ถ€๋ถ„์„ ๊ทธ๋Œ€๋กœ ์˜ฎ๊ฒจ ์ ์œผ๋ ค๋‹ˆ ๋ฏผ๋งํ•˜๊ตฐ์š”.. ๊ทธ๋ž˜๋„ ์ด๊ฑด ํŠนํžˆ๋‚˜ ๋‹น์‹œ์˜ ๋งˆ์Œ๊ฐ€์ง์„ ๊ทธ๋Œ€๋กœ ์ ์–ด์•ผ ํ•˜๋‹ˆ ์˜ฎ๊ฒจ ์ ์—ˆ์Šต๋‹ˆ๋‹ค!

์ตœ๊ทผ 1๊ฐœ์›” ๋ฉ˜ํ† ๋ง์— ๋Œ€ํ•œ ์ž์œ ๋กœ์šด ๊ฐ์ƒ ๋ฐ ํ›„๊ธฐ

๋ฌด์–ธ๊ฐ€๋ฅผ ์ฐจ๋ถ„ํžˆ ๊นŠ๊ฒŒ ๊ณต๋ถ€ํ•œ๋‹ค๋Š” ๊ฒŒ ์ •๋ง ์žฌ๋ฐŒ๋‹ค๋Š” ๊ฑธ ์•Œ๊ฒŒ ๋์Šต๋‹ˆ๋‹ค!!

'Education > F-Lab' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

F-Lab Frontend ์ˆ˜๋ฃŒ ํ›„๊ธฐ  (0) 2024.04.18
F-Lab Frontend 3๊ฐœ์›” ํ›„๊ธฐ  (0) 2024.03.29
F-Lab Frontend 2๊ฐœ์›” ํ›„๊ธฐ  (0) 2024.03.29

๋ Œ๋”๋Ÿฌ ํ”„๋กœ์„ธ์Šค ์ด์ „์˜ ํ•ต์‹ฌ ๋‹จ๊ณ„

๋ Œ๋”๋ง ๊ณผ์ •์„ ๋” ํšจ์œจ์ ์œผ๋กœ ๋งŒ๋“ค ์ˆ˜๋Š” ์—†์„๊นŒ๋ผ๋Š” ์ƒ๊ฐ์— ํฌ๋ฆฌํ‹ฐ์ปฌ ํŒจ์Šค(Critical Path)์— ๋Œ€ํ•ด ๋‹ค์‹œ ํ•™์Šตํ•˜๋˜ ์ค‘ ๋ Œ๋”๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ™”๋ฉด์„ ๋ Œ๋”๋ง ํ•˜๊ธฐ ์ „์— ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๋Š”์ง€์— ๋Œ€ํ•ด ๊ถ๊ธˆ์ฆ์ด ์ƒ๊ฒผ์Šต๋‹ˆ๋‹ค.
์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ Chrome for Developers๋ฅผ ์ฝ์–ด๋ณด์•˜๊ณ  ๊ทธ ๊ฒฐ๊ณผ, ์ง€๊ธˆ๋ถ€ํ„ฐ ์„ค๋ช…ํ•˜๊ฒŒ ๋  ๋‹จ๊ณ„๋“ค์ด ๋ Œ๋”๋Ÿฌ ํ”„๋กœ์„ธ์Šค ์ด์ „์— ์–ด๋–ป๊ฒŒ ์ง„ํ–‰๋˜๋Š”์ง€์— ๋Œ€ํ•œ ๋‚ด์šฉ์„ ๋“œ๋””์–ด ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค!

๋ธŒ๋ผ์šฐ์ € ์ฃผ์†Œ์ฐฝ์— url์„ ์ž…๋ ฅ ํ›„ ์›น์‚ฌ์ดํŠธ๊ฐ€ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์ด๊ธฐ๊นŒ์ง€ ๊ณผ์ • ์ค‘์—์„œ ์‚ฌ์šฉ์ž์—๊ฒŒ ์‚ฌ์ดํŠธ๊ฐ€ ๋ณด์ด๊ธฐ ์ง์ „๊นŒ์ง€์ธ ๋ Œ๋”๋Ÿฌ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ๋ฐ์ดํ„ฐ๊ฐ€ ์ „๋‹ฌ๋˜๊ธฐ๊นŒ์ง€ 5๊ฐ€์ง€์˜ ๊ณผ์ •์œผ๋กœ ์ง„ํ–‰์ด ๋˜๋ฉฐ ์ด ๊ณผ์ •๋“ค์— ๋Œ€ํ•ด ์ž‘์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค.

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

1๋‹จ๊ณ„: ์ž…๋ ฅ ์ฒ˜๋ฆฌ (Handling Inputs)

์‚ฌ์šฉ์ž๊ฐ€ ์ฃผ์†Œ ํ‘œ์‹œ์ค„์— text๋ฅผ ์ž…๋ ฅํ•˜๊ธฐ ์‹œ์ž‘ํ•˜๋ฉด ๋ธŒ๋ผ์šฐ์ € ํ”„๋กœ์„ธ์Šค ์•ˆ์— ์žˆ๋Š” UI ์Šค๋ ˆ๋“œ๊ฐ€ ๊ฐ€์žฅ ๋จผ์ € ์œ ์ €๊ฐ€ ์ž…๋ ฅํ•œ ์ด text ๊ฐ’์„ ํ†ตํ•ด์„œ '๊ฒ€์ƒ‰์–ด ๋˜๋Š” URL์ธ๊ฐ€์š”?'๋ผ๊ณ  ๋ฌผ์œผ๋ฉฐ ํŒ๋‹จ์„ ํ•ฉ๋‹ˆ๋‹ค.

Chrome์—์„œ๋Š” ์ฃผ์†Œ ํ‘œ์‹œ์ค„์ด ๊ฒ€์ƒ‰ ์ž…๋ ฅ๋ž€์ด๊ธฐ๋„ ํ•˜๋ฏ€๋กœ UI ์Šค๋ ˆ๋“œ๊ฐ€ ์ž…๋ ฅ๋œ text ํŒŒ์‹ฑ ํ•˜์—ฌ Search Query๋กœ ํŒ๋‹จ ํ›„ ๊ฒ€์ƒ‰์—”์ง„(Search Engine)์—๊ฒŒ ๋ณด๋‚ด์–ด ๊ฒ€์ƒ‰์ด ๋˜๊ฒŒ ๋งŒ๋“ค์ง€ URL์ด๋ผ๊ณ  ํŒ๋‹จํ•˜์—ฌ Network Thread์—๊ฒŒ ์ „๋‹ฌํ• ์ง€ ์ค€๋น„ํ•˜๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค.

์—ฌ๊ธฐ๊นŒ์ง€๋Š” ์‚ฌ์šฉ์ž๊ฐ€ Enter ํ‚ค๋ฅผ ๋ˆ„๋ฅด๊ธฐ ์ „๊นŒ์ง€์˜ ๊ณผ์ •์ด๋ž€ ๊ฑธ ๊ธฐ์–ตํ•ด ์ฃผ์„ธ์š”!

2๋‹จ๊ณ„: ๋‚ด๋น„๊ฒŒ์ด์…˜ ์‹œ์ž‘ (Start Navigation)

1๋‹จ๊ณ„์—์„œ ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅ๊ฐ’์„ ๋‹ค ์ž…๋ ฅํ•œ ๋‹ค์Œ Enter ํ‚ค๋ฅผ ๋ˆ„๋ฅด๋ฉด 2๋‹จ๊ณ„๊ฐ€ ์‹œ์ž‘๋˜๋ฉฐ UI ์Šค๋ ˆ๋“œ๊ฐ€ ๋„คํŠธ์›Œํฌ ํ˜ธ์ถœ(Network call initiates)์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
์ด๋•Œ ๋„คํŠธ์›Œํฌ ํ˜ธ์ถœ์ด๋ž€ Network thread์—๊ฒŒ URL์„ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜๋ฉฐ ์‚ฌ์ดํŠธ ์ฝ˜ํ…์ธ ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค.

๋กœ๋”ฉ ์Šคํ”ผ๋„ˆ๊ฐ€ ํ‘œ์‹œ๋˜๊ณ  ๋„คํŠธ์›Œํฌ ์Šค๋ ˆ๋“œ๊ฐ€ DNS ์กฐํšŒ์™€ ๊ฐ™์€ ์ ์ ˆํ•œ ํ”„๋กœํ† ์ฝœ์„ ํ†ต๊ณผํ•˜๊ณ  ์š”์ฒญ์— TLS ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
์ด ์‹œ์ ์—์„œ ๋„คํŠธ์›Œํฌ ์Šค๋ ˆ๋“œ๋Š” 301๊ณผ ๊ฐ™์€ HTTP Status Code์ธ ์„œ๋ฒ„ Redirection ํ—ค๋”๋ฅผ ์ˆ˜์‹ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ๋„คํŠธ์›Œํฌ ์Šค๋ ˆ๋“œ๋Š” UI ์Šค๋ ˆ๋“œ์—๊ฒŒ Redirect ํ•ด์•ผ ํ•œ๋‹ค๋Š” ํ†ต์‹ ์„ ํ•˜๊ณ  UI ์Šค๋ ˆ๋“œ๋Š” ๋‹ค๋ฅธ URL ์š”์ฒญ ์ฆ‰, ๋‹ค๋ฅธ ๋„คํŠธ์›Œํฌ ํ˜ธ์ถœ์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
์ด๋•Œ 301 ์ฝ”๋“œ๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด 3๋‹จ๊ณ„ ๊ณผ์ •์ธ ์‘๋‹ต ์ฝ๊ธฐ(Read Response)๊ฐ€ ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค.

๋‹ค๋งŒ ์–ด์งธ์„œ ๋„คํŠธ์›Œํฌ ํ˜ธ์ถœ ๊ณผ์ •์„ Network Thread๊ฐ€ ์ง์ ‘์ ์œผ๋กœ ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ UI Tread๋ฅผ ๊ฑฐ์ณ ์ด๋ฃจ์–ด์งˆ๊นŒ์š”? ๊ทธ ์ด์œ ๋Š” ๋กœ๋”ฉ ์Šคํ”ผ๋„ˆ(Loading spinner)์™€ ๋ Œ๋”๋Ÿฌ ํ”„๋กœ์„ธ์Šค(Renderer process) ํƒ์ƒ‰์— ์žˆ์Šต๋‹ˆ๋‹ค.

์œ„ ์‚ฌ์ง„์˜ ๊ฐ€์žฅ ์™ผ์ชฝ ํƒญ ํ‚ค์—์„œ ํŒŒ๋ž—๊ฒŒ ๋Œ์•„๊ฐ€๊ณ  ์žˆ๋Š” ๋กœ๋”ฉ ์Šคํ”ผ๋„ˆ๊ฐ€ ๋ณด์ด์‹ค ๊ฒ๋‹ˆ๋‹ค.
์ด๋ ‡๊ฒŒ ๋กœ๋”ฉ ์Šคํ”ผ๋„ˆ๋ฅผ ํƒญ์˜ ์™ผ์ชฝ ๋ชจ์„œ๋ฆฌ์— ๊ทธ๋ฆฌ๋Š” ๊ฒƒ์„ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์ด UI Tread์ž…๋‹ˆ๋‹ค.
๋„คํŠธ์›Œํฌ ํ˜ธ์ถœ์ด ์‹œ์ž‘๋๋‹ค๋Š” ๊ฒƒ์„ UI Tread๊ฐ€ ์•Œ ์ˆ˜ ์—†๋‹ค๋ฉด ๋กœ๋”ฉ ์Šคํ”ผ๋„ˆ๋ฅผ ๊ทธ๋ฆด ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
Network Thread๊ฐ€ UI Tread์—๊ฒŒ ๋„คํŠธ์›Œํฌ ํ˜ธ์ถœ์ด ์‹œ์ž‘๋๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๋ฆฌ๋Š” ๊ฒƒ๋ณด๋‹ค ๋น ๋ฅด๊ฒŒ ๋กœ๋”ฉ ์Šคํ”ผ๋„ˆ๋ฅผ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ Œ๋”๋Ÿฌ ํ”„๋กœ์„ธ์Šค ํƒ์ƒ‰๊ณผ์ •์€ 4๋‹จ๊ณ„ ๋ Œ๋”๋Ÿฌ ํ”„๋กœ์„ธ์Šค ์ฐพ๊ธฐ์—์„œ ์ž์„ธํžˆ ์ ์–ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
UI ์Šค๋ ˆ๋“œ๊ฐ€ ๋„คํŠธ์›Œํฌ ํ˜ธ์ถœ์„ ํ•  ๋•Œ ์ด ๋„คํŠธ์›Œํฌ ํ˜ธ์ถœ์€ ์„œ๋ฒ„์™€ ํ†ต์‹ ์„ ํ•˜๋Š” ๊ฒƒ์ด๊ธฐ์— ์ˆ˜๋ฐฑ ๋ฐ€๋ฆฌ์ดˆ๋‚˜ ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ด ํ”„๋กœ์„ธ์Šค์˜ ์†๋„๋ฅผ ๋†’์ด๊ธฐ ์œ„ํ•œ ์ตœ์ ํ™”๋ฅผ ํ•œ๋‹ค๋Š” ๊ฒƒ๋งŒ ๊ธฐ์–ตํ•ด ์ฃผ์„ธ์š”!

3๋‹จ๊ณ„: ์‘๋‹ต ์ฝ๊ธฐ (Read response)

Response body (ํŽ˜์ด๋กœ๋“œ)๊ฐ€ ๋„คํŠธ์›Œํฌ ์Šค๋ ˆ๋“œ๋กœ ๋“ค์–ด์˜ค๊ธฐ ์‹œ์ž‘ํ•˜๋ฉด ๋„คํŠธ์›Œํฌ ์Šค๋ ˆ๋“œ๋Š” Response Body์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
ํ™•์ธ ํ›„ HTML ํŒŒ์ผ์ธ ๊ฒฝ์šฐ ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ์œ„ํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๋ Œ๋”๋Ÿฌ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ์ „๋‹ฌํ•  ์ค€๋น„๋ฅผ ํ•˜๊ณ  ZIP ํŒŒ์ผ ๋˜๋Š” ๊ธฐํƒ€ ํŒŒ์ผ ํ˜•์‹์ธ ๊ฒฝ์šฐ ๋‹ค์šด๋กœ๋“œ ์š”์ฒญ์ด๋ฏ€๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์šด๋กœ๋“œ ๊ด€๋ฆฌ์ž์— ์ „๋‹ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. (a ํƒœ๊ทธ์—์„œ์˜ ๋‹ค์šด๋กœ๋“œ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๋ช…์‹œ์ ์œผ๋กœ ํด๋ฆญํ•˜์—ฌ ๋‹ค์šด๋กœ๋“œ๋ฅผ ์‹œ์ž‘ํ•˜๋Š” ์ˆ˜๋™์ ์ธ ๊ณผ์ •๊ณผ๋Š” ๋‹ค๋ฆ…๋‹ˆ๋‹ค.)

ํ™•์ธ์€ ์–ด๋–ค ์‹์œผ๋กœ ์ด๋ฃจ์–ด์งˆ๊นŒ์š”?
Response body๊ฐ€ ๋“ค์–ด์˜ค๊ธฐ ์‹œ์ž‘ํ•˜๋ฉด ๋„คํŠธ์›Œํฌ ์Šค๋ ˆ๋“œ๋Š” ํ•„์š”์— ๋”ฐ๋ผ ์ŠคํŠธ๋ฆผ์˜ ์ฒ˜์Œ ๋ช‡ ๋ฐ”์ดํŠธ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€์ • ๋จผ์ € Response body์˜ Content-Type ํ—ค๋”์— ํ‘œ์‹œ๋˜๋Š” ๋ฐ์ดํ„ฐ ์œ ํ˜•์„ ํ™•์ธํ•˜์ง€๋งŒ, ๋ˆ„๋ฝ๋˜๊ฑฐ๋‚˜ ์ž˜๋ชป๋˜์—ˆ์„ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์—ฌ๊ธฐ์—์„œ MIME ํƒ€์ž… ์Šค๋‹ˆํ•‘ (MIME Type Sniffing)์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
Sniffing ๋‹จ์–ด ๊ทธ๋Œ€๋กœ ๋ƒ„์ƒˆ๋ฅผ ๋งก๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์ฃผ๋กœ ๋ฐ์ดํ„ฐ์˜ ์ฒ˜์Œ ๋ช‡ ๋ฐ”์ดํŠธ๋ฅผ ๋ถ„์„ํ•˜์—ฌ ํŠน์ • ํŒŒ์ผ ํ˜•์‹์˜ ํŠน์ง•์ ์ธ ํŒจํ„ด์ด๋‚˜ ์‹๋ณ„์ž๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์ •ํ™•ํ•œ MIME ํƒ€์ž…์„ ํ™•์ธํ•˜๊ณ , ๊ทธ์— ๋งž๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.(MIME ํƒ€์ž… ์Šค๋‹ˆํ•‘์€ ์ฃผ๋กœ ๋ณด์•ˆ ๋ฐ ํ˜ธํ™˜์„ฑ ์ธก๋ฉด์—์„œ ์‚ฌ์šฉ๋˜๋ฉฐ, ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ํ˜•์‹์˜ ํŒŒ์ผ์ด๋‚˜ ์•…์„ฑ ์ฝ”๋“œ๋ฅผ ํƒ์ง€ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.)

์ด ๊ณผ์ •์—์„œ SafeBrowsing ๊ฒ€์‚ฌ ๊ณผ์ •๊ณผ CORB(Cross Origin Read Blocking)๊ณผ์ •๋„ ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค.

๋จผ์ € SafeBrowsing์€ ๊ตฌ๊ธ€์—์„œ ์„ธ์ดํ”„ ๋ธŒ๋ผ์šฐ์ง•์ด๋ผ๊ณ  ๊ฒ€์ƒ‰ ์‹œ ์ œ๊ณต์„ ํ•ฉ๋‹ˆ๋‹ค! Domain๊ณผ Response Data๊ฐ€ ์•Œ๋ ค์ง„ ์•…์„ฑ ์‚ฌ์ดํŠธ(Malicious site)์™€ ์ผ์น˜ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ด๋ฉด ๋„คํŠธ์›Œํฌ ์Šค๋ ˆ๋“œ ์•Œ๋ฆผ์ด ๊ฒฝ๊ณ  ํŽ˜์ด์ง€(Warning page)๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

CORB ๊ณผ์ •์€ Same-Origin Policy์™€ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
Same-Origin Policy๋Š” ๋™์ผ ์ถœ์ฒ˜ ์ •์ฑ…์œผ๋กœ, ๋ณด์•ˆ์ƒ์˜ ์ด์œ ๋กœ ๋™์ผํ•œ ์ถœ์ฒ˜(Origin)์—์„œ๋งŒ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผ์ด ํ—ˆ์šฉ๋˜๋„๋ก ํ•˜๋Š” ์ •์ฑ…์ž…๋‹ˆ๋‹ค.
์ฆ‰, Same-Origin ๋ฐ์ดํ„ฐ๋Š” ์•ˆ์ „ํ•˜๊ณ  ์‹ ๋ขฐํ• ๋งŒํ•˜๋‹ค๊ณ  ๋งํ•ด์ฃผ๋Š” ์ •์ฑ…์ž…๋‹ˆ๋‹ค.

CORB๋Š” ๋ธŒ๋ผ์šฐ์ €์—์„œ ํŽ˜์ด์ง€์˜ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๋‹ค๋ฅธ ์ถœ์ฒ˜์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ์ฝ๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๋Š” ๋ณด์•ˆ ๋ฉ”์ปค๋‹ˆ์ฆ˜์œผ๋กœ ํŠนํžˆ, ๋ธŒ๋ผ์šฐ์ €๋Š” ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•  ๋•Œ, ์ด ๋ฐ์ดํ„ฐ๊ฐ€ ํ•ด๋‹น ์Šคํฌ๋ฆฝํŠธ์˜ ์ถœ์ฒ˜์™€ ๋‹ค๋ฅผ ๊ฒฝ์šฐ CORB๋ฅผ ์ ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐจ๋‹จํ•ฉ๋‹ˆ๋‹ค.
์ด๋ฅผ ์ด์šฉํ•ด Renderer process์—๊ฒŒ cross-site data๋ฅผ ์ „๋‹ฌํ•˜์ง€ ์•Š๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๋ฌผ๋ก  ์ ˆ๋Œ€์ ์ธ ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.
CORS ์„ค์ •์„ ์‚ฌ์šฉํ•˜๋ฉด ํŠน์ • ๋„๋ฉ”์ธ ๊ฐ„์— ๋ฐ์ดํ„ฐ ๊ตํ™˜์„ ํ—ˆ์šฉํ•จ์œผ๋กœ์จ, Same-Origin Policy์™€ CORB์— ์˜ํ•œ ๋ณด์•ˆ ์ •์ฑ…์„ ์œ ์—ฐํ•˜๊ฒŒ ์กฐ์ ˆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์˜ˆ์‹œ๋กœ Spring Security ๋“ฑ์˜ ๋ณด์•ˆ ์„ค์ •์—์„œ ํ—ˆ์šฉํ•  ๋„๋ฉ”์ธ์„ ๋ช…์‹œ์ ์œผ๋กœ ์„ค์ •ํ•˜๋Š” ๊ฑธ ๋– ์˜ฌ๋ฆฌ์‹œ๋ฉด ์‰ฝ๊ฒ ๋„ค์š”!

์ด ๋ชจ๋“  3๋‹จ๊ณ„ ๊ณผ์ •์„ ํ†ต๊ณผํ•œ HTML ํŒŒ์ผ ํ˜•์‹์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ Œ๋”๋Ÿฌ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ์ „๋‹ฌํ•  ์ค€๋น„๋ฅผ ํ•ฉ๋‹ˆ๋‹ค.

4๋‹จ๊ณ„: ๋ Œ๋”๋Ÿฌ ํ”„๋กœ์„ธ์Šค ์ฐพ๊ธฐ (Find Renderer process)

1๋‹จ๊ณ„ - 3๋‹จ๊ณ„ ๊นŒ์ง€์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…๊ณผ ์•ˆ์ •์„ฑ์— ๋Œ€ํ•œ ๊ฒ€์‚ฌ๊ฐ€ ์™„๋ฃŒ๋˜๊ณ  ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์š”์ฒญํ•œ ์‚ฌ์ดํŠธ๋กœ ์ด๋™ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ํ™•์‹ ํ•œ๋‹ค๋ฉด 4๋‹จ๊ณ„๊ฐ€ ์‹œ์ž‘๋˜๋ฉฐ Network Thread ๊ฐ€ UI Thread์—๊ฒŒ ๋ฐ์ดํ„ฐ๊ฐ€ ์ค€๋น„๋˜์—ˆ์Œ(Data is ready)์„ ์•Œ๋ฆฝ๋‹ˆ๋‹ค.

์ด๋•Œ UI ์Šค๋ ˆ๋“œ๊ฐ€ ์›นํŽ˜์ด์ง€ ๋ Œ๋”๋ง์„ ์‹คํ–‰ํ•  ๋ Œ๋”๋Ÿฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ฐพ๋Š”๋‹ค๊ณ  ์˜คํ•ดํ•˜๊ธฐ ๋”ฑ ์ข‹์Šต๋‹ˆ๋‹ค!
๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋Š” ์˜๋ฏธ๊ฒ ์ฃ ?!
2๋‹จ๊ณ„์—์„œ ๋ Œ๋”๋Ÿฌ ํ”„๋กœ์„ธ์Šค ํƒ์ƒ‰๊ณผ์ •์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด์ž๋Š” ๋ง์„ ํ–ˆ์—ˆ์Šต๋‹ˆ๋‹ค.
๊ธฐ์–ต์ด ์•ˆ๋‚˜์‹ ๋‹ค๋ฉด ๋‹ค์‹œ ์˜ฌ๋ผ๊ฐ€ ํ™•์ธํ•ด ์ฃผ์„ธ์š”!
๋“œ๋””์–ด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ๋„คํŠธ์›Œํฌ ํ˜ธ์ถœ์‹œ๊ฐ„์„ ํ™œ์šฉํ•œ ๋ Œ๋”๋Ÿฌ ํ”„๋กœ์„ธ์Šค ํƒ์ƒ‰ ์ตœ์ ํ™” ๊ณผ์ •์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•  ์ฐจ๋ก€์ž…๋‹ˆ๋‹ค.

2๋‹จ๊ณ„์—์„œ UI ์Šค๋ ˆ๋“œ๊ฐ€ ๋„คํŠธ์›Œํฌ ์Šค๋ ˆ๋“œ๋กœ URL ์š”์ฒญ์„ ๋ณด๋ƒˆ๊ธฐ์— ์–ด๋–ค ์‚ฌ์ดํŠธ๋กœ ์ด๋™ํ•˜๋Š”์ง€ ์ด๋ฏธ ์•Œ๊ณ  ์žˆ์„ ๊ฒ๋‹ˆ๋‹ค. UI ์Šค๋ ˆ๋“œ๋Š” ๋„คํŠธ์›Œํฌ ์š”์ฒญ๊ณผ ๋™์‹œ์— ๋ Œ๋”๋Ÿฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‚ฌ์ „์— ์ฐพ๊ธฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
๋ณ‘๋ ฌ์ ์œผ๋กœ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๊ธฐ์— ๋งŽ์€ ์‹œ๊ฐ„์„ ์•„๋‚„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!
๊ทธ๋ ‡๋‹ค๋ฉด ๋ชจ๋“  ๊ฒƒ์ด ์˜ˆ์ƒ๋Œ€๋กœ ์ง„ํ–‰๋œ ํ›„ ๋„คํŠธ์›Œํฌ ์Šค๋ ˆ๋“œ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์‹ ํ–ˆ์„ ๋•Œ ๋ Œ๋”๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ด๋ฏธ ๋Œ€๊ธฐ ์ƒํƒœ์— ์žˆ๊ฒ ์ฃ ?!
์ด๋•Œ ํฌ๋กœ์Šค ์‚ฌ์ดํŠธ๋กœ Redirection ๋˜๋Š” ๊ฒฝ์šฐ ์ด ํ”„๋กœ์„ธ์Šค์—์„œ ์ฐพ๋Š” ๋ Œ๋”๋Ÿฌ ํ”„๋กœ์„ธ์Šค๋Š” ์‚ฌ์šฉ๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด ๊ฒฝ์šฐ ๋‹ค๋ฅธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๊ณผ์ • ๋˜ํ•œ ์ •์ƒ์ ์œผ๋กœ ์ง„ํ–‰๋˜์—ˆ๋‹ค๋ฉด ๋“œ๋””์–ด!! ์‘๋‹ต๋ฐ›์€ ๋ฐ์ดํ„ฐ์ธ HTML ํŒŒ์ผ์„ ๋ฏธ๋ฆฌ ์ฐพ์•„๋†“์€ ๋ Œ๋”๋Ÿฌ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค!
์ด์ œ ๋ Œ๋”๋Ÿฌ ํ”„๋กœ์„ธ์Šค๋Š” ๋ Œ๋”๋ง ํ•  ์ค€๋น„๋ฅผ ์‹œ์ž‘ํ•˜๊ฒŒ ๋˜๋Š”๋ฐ ์ด ์ง์ „์— ๋ฐœ์ƒํ•˜๋Š” ๊ฒŒ ์ปค๋ฐ‹๋‚ด๋น„๊ฒŒ์ด์…˜์ด๋ผ๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค.

5๋‹จ๊ณ„: ํƒ์ƒ‰ ์ปค๋ฐ‹ (Commit Navigation)

๋“œ๋””์–ด ๋งˆ์ง€๋ง‰ ๊ณผ์ •์ž…๋‹ˆ๋‹ค!
ํ•ด๋‹น ๊ณผ์ •์„ ํ†ตํ•ด์„œ ๋‚ด๋น„๊ฒŒ์ด์…˜์ด ์ปค๋ฐ‹๋˜๊ณ  ์ด ๊ณผ์ •์ด ๋๋‚˜๋ฉด ๋ Œ๋”๋Ÿฌ ํ”„๋กœ์„ธ์Šค ์•ˆ์—์„œ์˜ ๋ Œ๋”๋ง ๊ณผ์ •์ด ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค.

๋ธŒ๋ผ์šฐ์ € ํ”„๋กœ์„ธ์Šค ์•ˆ์˜ UI ์Šค๋ ˆ๋“œ๊ฐ€ HTML ํŒŒ์ผ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฏ€๋กœ ๋ธŒ๋ผ์šฐ์ € ํ”„๋กœ์„ธ์Šค์—์„œ HTML ํŒŒ์ผ ๋ฐ์ดํ„ฐ๋ฅผ ๋ Œ๋”๋Ÿฌ ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.
ํ”„๋กœ์„ธ์Šค์—์„œ ํ”„๋กœ์„ธ์Šค๋กœ์˜ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ์ด๊ธฐ์— IPC(Inter-Process Communication)๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค. ์ด๋•Œ ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆผ์„ ์ „๋‹ฌํ•˜๋ฏ€๋กœ ๋ Œ๋”๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ HTML ๋ฐ์ดํ„ฐ๋ฅผ ๊ณ„์† ์ˆ˜์‹ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋ ‡๊ฒŒ ๋ธŒ๋ผ์šฐ์ € ํ”„๋กœ์„ธ์Šค์—์„œ ๋ Œ๋”๋Ÿฌ ํ”„๋กœ์„ธ์Šค๋กœ์˜ ์ปค๋ฐ‹์ด ์™„๋ฃŒ๋๋‹ค๋Š” ํ™•์ธ์„ ์ˆ˜์‹ ํ•˜๋ฉด ๋‚ด๋น„๊ฒŒ์ด์…˜์ด ๋๋‚˜๊ฒŒ ๋˜๋Š”๋ฐ ๊ทธ๋ ‡๊ฒŒ ๋˜๋ฉด ์ด์ œ ๋ฌธ์„œ ๋กœ๋“œ ๋‹จ๊ณ„(Document Loading Phase)๊ฐ€ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค.
๋ฌธ์„œ ๋กœ๋“œ ๋‹จ๊ณ„๊ฐ€ ๋ Œ๋”๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹œ์ž‘๋˜๋Š” ๋ Œ๋”๋ง ๊ณผ์ •์ž…๋‹ˆ๋‹ค.

์ด ๋ Œ๋”๋ง ๊ณผ์ •์ด ์‹œ์ž‘๋˜๊ธฐ ์ „ ์ฃผ์†Œ ํ‘œ์‹œ์ค„์ด ์‚ฌ์šฉ์ž๊ฐ€ ์ฒ˜์Œ์— ์ž…๋ ฅํ–ˆ๋˜ ๊ทธ ์ฃผ์†Œ์ฐฝ์œผ๋กœ ์—…๋ฐ์ดํŠธ๋˜๊ณ  ์œ„ ์ด๋ฏธ์ง€์—์„œ URL ์ฃผ์†Œ ์™ผ์ชฝ ์ž๋ฌผ์‡  ๋ชจ์–‘์˜ ๋ณด์•ˆ ํ‘œ์‹œ๊ธฐ(Security indicator) ๋ฐ ์‚ฌ์ดํŠธ ์„ค์ • UI๊ฐ€ ์—…๋ฐ์ดํŠธ๋ฉ๋‹ˆ๋‹ค.
์ด๋•Œ ์ž๋ฌผ์‡  ํ‘œ์‹œ์™€ ์‚ฌ์ดํŠธ ์„ค์ • UI๋Š” ์ด๋™ ์ „ ์‚ฌ์ดํŠธ๊ฐ€ ์•„๋‹Œ ์ด๋™ํ•  ์‚ฌ์ดํŠธ์˜ ์ •๋ณด๋กœ ํ™•์ธ์ด ๋˜์–ด ํ•ด๋‹น ์‚ฌ์ดํŠธ์˜ ์‹œํ๋ฆฌํ‹ฐ๋ฅผ ํ‘œ์‹œํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์—…๋ฐ์ดํŠธ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ ๋‚ด๋น„๊ฒŒ์ด์…˜์ด ์ปค๋ฐ‹๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ์€ ์„ธ์…˜ ํžˆ์Šคํ† ๋ฆฌ(Sesstion History)๊ฐ€ ์ƒˆ๋กญ๊ฒŒ ์ถ”๊ฐ€๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋’ค๋กœ ๊ฐ€๊ธฐ-์•ž์œผ๋กœ ๊ฐ€๊ธฐ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ๋ฐฉ๊ธˆ ์ด๋™ํ•œ ์‚ฌ์ดํŠธ๋ฅผ ๋‹จ๊ณ„๋ณ„๋กœ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํƒญ์˜ ์„ธ์…˜ ๊ธฐ๋ก์ด ์—…๋ฐ์ดํŠธ๋˜๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค. ํƒญ ๋˜๋Š” ์ฐฝ์„ ๋‹ซ์„ ๋•Œ ํƒญ/์„ธ์…˜ ๋ณต์›์„ ์šฉ์ดํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด ์„ธ์…˜ ๊ธฐ๋ก์€ ํ•˜๋“œ ๋””์Šคํฌ์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.
๊ทธ๋ ‡๊ธฐ์— ํ™”๋ฉด์ด ๊ทธ๋ ค์ง€๊ธฐ ์ „์ด๋ผ๋„ ์ปค๋ฐ‹ ๋‚ด๋น„๊ฒŒ์ด์…˜ ๊ณผ์ •๊นŒ์ง€๋งŒ ์™„๋ฃŒ๊ฐ€ ๋˜์—ˆ๋‹ค๋ฉด ๋’ค๋กœ ๊ฐ€๊ธฐ๋ฅผ ํ•˜์˜€์„ ๋•Œ ๋ฐ”๋กœ ์ง์ „์˜ ๋ธŒ๋ผ์šฐ์ €๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค!

์ถ”๊ฐ€ ๋‹จ๊ณ„: ์ดˆ๊ธฐ ๋กœ๋“œ ์™„๋ฃŒ

5๋‹จ๊ณ„ ๊ณผ์ •๊นŒ์ง€ ์™„๋ฃŒ ํ›„ ์ตœ์ข…์ ์œผ๋กœ ๋ Œ๋”๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ HTML ํŒŒ์ผ์„ ๋ฐ›์œผ๋ฉฐ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๊ณผ์ •์„ ๊ฑฐ์น˜๋ฉด์„œ ๋ธŒ๋ผ์šฐ์ € ๋ Œ๋”๋ง์˜ ๋ชจ๋“  ๊ณผ์ •์ด ๋๋‚˜๋ฉด ๋ Œ๋”๋Ÿฌ ํ”„๋กœ์„ธ์Šค๋Š” ๋ชจ๋“  onload ์ด๋ฒคํŠธ๊ฐ€ ํŽ˜์ด์ง€์˜ ๋ชจ๋“  ํ”„๋ ˆ์ž„์—์„œ ์‹คํ–‰์ด ์™„๋ฃŒ๋œ ํ›„์— IPC๋ฅผ ํ†ตํ•ด ๋ธŒ๋ผ์šฐ์ € ํ”„๋กœ์„ธ์Šค์—๊ฒŒ ๋ชจ๋“  ๊ณผ์ •์ด ์™„๋ฃŒ๋˜์—ˆ์Œ์„ ์•Œ๋ฆฝ๋‹ˆ๋‹ค.
์ด ์‘๋‹ต์„ ๋ฐ›์€ ๋ธŒ๋ผ์šฐ์ € ํ”„๋กœ์„ธ์Šค์˜ UI ์Šค๋ ˆ๋“œ๋Š” ํƒญ์—์„œ ๋กœ๋”ฉ ์Šคํ”ผ๋„ˆ๋ฅผ ์ค‘์ง€ํ•ฉ๋‹ˆ๋‹ค!

์ด ์‹œ์  ์ดํ›„์—๋„ ํด๋ผ์ด์–ธํŠธ ์ธก JavaScript๊ฐ€ ์—ฌ์ „ํžˆ ์ถ”๊ฐ€ ๋ฆฌ์†Œ์Šค๋ฅผ ๋กœ๋“œํ•˜๊ณ  ์ƒˆ ๋ทฐ๋ฅผ ๋ Œ๋”๋ง ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ์ „ํžˆ ๋™์ ์œผ๋กœ ํŽ˜์ด์ง€๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ณ  ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋Š” ์‹œ์ ์ž…๋‹ˆ๋‹ค.

๋” ์•Œ์•„๋ณด๊ธฐ!

  • ์‚ฌ์šฉ์ž๊ฐ€ ์ฃผ์†Œ ํ‘œ์‹œ์ค„์— ๋‹ค๋ฅธ URL์„ ๋‹ค์‹œ ์ž…๋ ฅํ•˜๋ฉด?! - beforeunload ํ•™์Šต
  • ์„œ๋น„์Šค ์›Œ์ปค
  • Chrome ์†๋„ ๋†’์ด๊ธฐ์— ๊ด€๋ จ๋œ ํƒ์ƒ‰ ๋ฏธ๋ฆฌ ๋กœ๋“œ
    ๋“ฑ์— ๋Œ€ํ•œ ์ถ”๊ฐ€์ ์ธ ํ•™์Šต์„ ์›ํ•˜์‹ ๋‹ค๋ฉด ์•„๋ž˜์˜ ์ฐธ๊ณ  ์ž๋ฃŒ๋ฅผ ์ฝ์–ด๋ณด์‹œ๋ฉด ์ข‹์Šต๋‹ˆ๋‹ค!!

์ฐธ๊ณ ์ž๋ฃŒ

Chrome for Developers - ํƒ์ƒ‰์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์ผ

'CS' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

React.js๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ผ๊นŒ ํ”„๋ ˆ์ž„์›Œํฌ์ผ๊นŒ  (0) 2024.07.02

+ Recent posts