๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

WEB

(17)
[ WEB ] ์›น ํ”„๋ก ํŠธ์—”๋“œ ์„ฑ๋Šฅ ์ตœ์ ํ™” ๋ฐฉ๋ฒ• ์›น ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์—์„œ๋Š” ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ๊ทน๋Œ€ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์„ฑ๋Šฅ ์ตœ์ ํ™”๊ฐ€ ๊ผญ ํ•„์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค.  ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ, ๋Š๋ฆฐ ๋กœ๋”ฉ ์†๋„์™€ ์„ฑ๋Šฅ์ด ์ €ํ•˜๋˜๋Š” ๋ถˆํ•„์š”ํ•œ ์ž์› ๋‚ญ๋น„๋Š” ์‚ฌ์šฉ์ž๋กœ ํ•˜์—ฌ๊ธˆ ์ข‹์ง€ ์•Š์€ ๊ฒฝํ—˜์„ ๋‚จ๊ธฐ๊ณ , ์ด๋Ÿฐ ๊ฒฝํ—˜์€ ์‚ฌ์šฉ์ž๋กœ ํ•˜์—ฌ๊ธˆ ์„œ๋น„์Šค๋ฅผ ์ดํƒˆํ•˜๊ฒŒ๋” ๋งŒ๋“œ๋Š” ์ฃผ์š” ์›์ธ์ด๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ์›น ํ”„๋ก ํŠธ์—”๋“œ ์„ฑ๋Šฅ ์ตœ์ ํ™”์— ๋Œ€ํ•ด ๊ฐ„๋‹จํžˆ ์•Œ์•„๋ณด๋ ค๊ณ  ํ•œ๋‹ค.      1. ์ดˆ๊ธฐ ๋กœ๋”ฉ ์ตœ์ ํ™”์ฝ”๋“œ ๋ถ„ํ•  (Code Splitting): ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ฝ”๋“œ๋ฒ ์ด์Šค๋ฅผ ์—ฌ๋Ÿฌ ์ฒญํฌ๋กœ ๋‚˜๋ˆ„์–ด ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ ๋กœ๋“œํ•œ๋‹ค. Webpack, Rollup ๋“ฑ์˜ ๋ฒˆ๋“ค๋Ÿฌ์—์„œ dynamic import๋ฅผ ํ™œ์šฉํ•˜์—ฌ ํ•„์š”ํ•œ ๋ถ€๋ถ„์—์„œ๋งŒ ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜์—ฌ ํšจ์œจ์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค. Lazy Loading: ์ด๋ฏธ์ง€๋‚˜ ๋น„๋””์˜ค ๊ฐ™์€ ๋ฆฌ์†Œ..
[ WEB ] ์›นํ”„๋ก ํŠธ์—”๋“œ์—์„œ ์•ฑ ์„ฑ๋Šฅ ์ตœ์ ํ™” ํ•˜๋Š” ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ• ์›น ํ”„๋ก ํŠธ์—”๋“œ์—์„œ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ด ์žˆ์„๊นŒ?ํฌ๊ฒŒ ๋กœ๋”ฉ ์„ฑ๋Šฅ ์ตœ์ ํ™”์™€ ๋ Œ๋”๋ง ์„ฑ๋Šฅ ์ตœ์ ํ™” ์ด๋ ‡๊ฒŒ 2๊ฐ€์ง€๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ ๊ฐ™๋‹ค.     ๋กœ๋”ฉ ์„ฑ๋Šฅ ์ตœ์ ํ™”์›นํ”„๋ก ํŠธ์—์„œ ๋กœ๋”ฉ ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์–‘ํ•˜๋‹ค.์šฐ์„  ๋ฆฌ์†Œ์Šค ์ตœ์†Œํ™” ๋ฐ ์••์ถ•์„ ํ†ตํ•œ ์‚ฌ์ด์ฆˆ ๊ฐ์†Œ(JavaScript, CSS, HTML ํŒŒ์ผ ์••์ถ•, ์ด๋ฏธ์ง€ ์ตœ์ ํ™”-ํฌ๊ธฐ ์กฐ์ •, ์••์ถ•, webP์‚ฌ์šฉ ๋“ฑ)๋ฅผ ํ†ตํ•ด ์•ฑ์˜ ๋ฒˆ๋“ค ์‚ฌ์ด์ฆˆ๋ฅผ ์ค„์ผ ์ˆ˜๋„ ์žˆ๊ณ , ์บ์‹ฑ ์ „๋žต์„ ๊ตฌํ•œํ•˜์—ฌ ๋ถˆํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€ ์š”์ฒญ๋“ฑ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ์บ์‹ฑ ์ „๋žต์œผ๋กœ๋Š” ๋ธŒ๋ผ์šฐ์ € ์บ์‹ฑ ์„ค์ •์„ ์ตœ์ ํ™”ํ•˜๊ฑฐ๋‚˜, ์„œ๋น„์Šค ์›Œ์ปค๋ฅผ ์ด์šฉํ•œ ์˜คํ”„๋ผ์ธ ์บ์‹ฑ, CDN์„ ํ†ตํ•œ ๋ฆฌ์†Œ์Šค ์บ์‹ฑ๋“ฑ์ด ์—ฌ๊ธฐ์— ์†ํ•œ๋‹ค. SSR, SSG ๋“ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ ์ธก JavaScript ์‹ค..
[ WEB ] iOS์—์„œ SVG ์ด๋ฏธ์ง€๊ฐ€ ๊นจ์ ธ ๋ณด์ผ ๋•Œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• ํšŒ์‚ฌ์—์„œ  iOS๊ฐœ๋ฐœ ํŒŒํŠธ์— ์ด์Šˆ ํ‹ฐ์ผ“์ด ๋ฐœํ–‰๋˜์—ˆ๋Š”๋ฐ,  AOS์—์„œ๋Š” ์ด๋ฏธ์ง€๊ฐ€ ์ •์ƒ์ ์ธ ํ•ด์ƒ๋„๋กœ ๋…ธ์ถœ๋˜๋Š” ๋ฐ˜๋ฉด,  iOS ์—์„œ๋Š” ์ด๋ฏธ์ง€๊ฐ€ ๊นจ์ ธ ๋ณด์ด๋Š” ์ด์Šˆ๊ฐ€ ์žˆ์—ˆ๋‹ค. ํ•ด๋‹น ์ด๋ฏธ์ง€๋Š”  SVG ๋ฒกํ„ฐ ์ด๋ฏธ์ง€๋ผ ์ด๋ก ์ƒ์œผ๋กœ ๋‹น์—ฐํžˆ ๊นจ์ง€๋Š” ์ด์Šˆ๊ฐ€ ์—†์–ด์•ผ ํ•˜๋Š” ๊ฒŒ ๋งž๋Š”๋ฐ ์ฐธ ์ด์ƒํ–ˆ๋‹ค.  iOS๊ฐœ๋ฐœ์ž ๋ถ„์ด ํ•ด๋‹น ํ™”๋ฉด์€ ์›น๋ทฐ๋ผ๊ณ  ์›นํ”„๋ก ํŠธ ํŒŒํŠธ์— ์ด์Šˆ ํ‹ฐ์ผ“์„ ๋„˜๊ฒจ์ฃผ์–ด ํ•จ๊ป˜ ์ฐพ์•„๋ณด์•˜๋Š”๋ฐ, ๊ตฌ๊ธ€๋ง์„ ํ†ตํ•ด ์‚ฌํŒŒ๋ฆฌ ์›น๋ทฐ์—์„œ SVG๊นจ์ง ํ˜„์ƒ์ด ๋ฐœ์ƒํ•˜๊ณ  ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์•Œ์•˜๊ณ , ๋ฐฉ๋ฒ•์„ ์ฐพ์•„๋ณด์•˜๋‹ค.    ํƒœ๊ทธ๋ฅผ  ์ด๋Ÿฐ ์‹์œผ๋กœ object ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ„๋‹จํ•˜๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค. (, ๋„ ๊ฐ€๋Šฅ)     ๊ตฌ๊ธ€๋ง์„ ํ•ด๋ณธ ๊ฒฐ๊ณผ ์œ„์˜ ๋ฐฉ๋ฒ•์ด ๊ฐ€์žฅ ์‰ฌ์›Œ ๋ณด์˜€๋‹ค. ํ•˜์ง€๋งŒ ๋ชจ๋“  SVG ์ด๋ฏธ์ง€๋ฅผ ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ๋Š” ์‹ค์งˆ์ ์œผ๋กœ ์–ด๋ ค์› ๋‹ค. (์„œ๋ฒ„์—์„œ ์ด๋ฏธ์ง€..
[ WEB API ] Geolocation API๋ฅผ ํ†ตํ•ด ์œ„์น˜ ์ •๋ณด ๊ฐ€์ ธ์˜ค๊ธฐ. ๋ธŒ๋ผ์šฐ์ €์—์„œ ์‚ฌ์šฉ์ž์˜ ์œ„์น˜ ์ •๋ณด๋ฅผ ๋ฐ›์•„์˜ค๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ๊นŒ? Geolocation API๋ฅผ ํ†ตํ•ด์„œ ์‚ฌ์šฉ์ž์˜ ๋™์˜๋ฅผ ๋ฐ›์•„ ์œ„์น˜ ์ •๋ณด์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋ฅผํ†ตํ•ด ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์‚ฌ์šฉ์ž์˜ ์œ„์น˜ ์ •๋ณด๋ฅผ ๋ฐ›์•„์„œ ์ง€๋„์— ํ‘œ์‹œํ•˜๊ฑฐ๋‚˜, ์‚ฌ์šฉ์ž์˜ ์œ„์น˜ ๊ธฐ๋ฐ˜ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋‹ค. Geolocation API๋Š” navigator.geolocation ์„ ํ†ตํ•ด ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค. if ("geolocation" in navigator) { /* ์œ„์น˜์ •๋ณด ์‚ฌ์šฉ ๊ฐ€๋Šฅ */ } else { /* ์œ„์น˜์ •๋ณด ์‚ฌ์šฉ ๋ถˆ๊ฐ€๋Šฅ */ } ๋ธŒ๋ผ์šฐ์ €๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ์œ„์น˜ ์ •๋ณด ๊ถŒํ•œ์„ ์š”์ฒญํ•˜๊ณ , ์‚ฌ์šฉ์ž๊ฐ€ ๋™์˜ํ•˜๋ฉด ํ˜„์žฌ ์žฅ์น˜์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ตœ์„ ์˜ ๋ฐฉ๋ฒ•(GPS๋“ฑ)์„ ํ†ตํ•ด ์œ„์น˜ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค. - Geolocation.getCurrentPos..
[ LocalStorage ] localStorage์—์„œ ๋ฐฐ์—ด(Array)๋‹ค๋ฃจ๊ธฐ. ์ตœ๊ทผ ์ž‘์—… ํ•  ๋ถ€๋ถ„์ด client์ธก์—์„œ `localStorage`๋ฅผ ํ†ตํ•ด ๋ฐฐ์—ด์„ ์ €์žฅ, ์ˆ˜์ •, ์‚ญ์ œํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•ด์•ผ ํ•ด์„œ ์ •๋ฆฌํ•ด ๋ณด์•˜๋‹ค. (localStorage๋Š” ์›น ๋ธŒ๋ผ์šฐ์ €์˜ ํด๋ผ์ด์–ธํŠธ ์ธก์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์›น ์Šคํ† ๋ฆฌ์ง€) 1. ๋ฐฐ์—ด์„ `localStorage`์— ์ €์žฅํ•˜๊ธฐ: // ์˜ˆ์‹œ ๋ฐฐ์—ด const myArray = [1, 2, 3, 4, 5]; // ๋ฐฐ์—ด์„ JSON ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ localStorage์— ์ €์žฅ localStorage.setItem('myArray', JSON.stringify(myArray)); * localStorage๋Š” value์— ๋ฌธ์ž์—ด๋งŒ ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์—, JSON.stringufy()๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฐฐ์—ด์„ ๋ฌธ์ž๋กœ ๋ฐ”๊พธ์–ด ์ €์žฅํ•ด์•ผํ•œ๋‹ค. 2. `localStor..
[ CSS ] white-space ์†์„ฑ /* Single keyword values */ white-space: normal; white-space: nowrap; white-space: pre; white-space: pre-wrap; white-space: pre-line; white-space: break-spaces; /* white-space-collapse and text-wrap shorthand values */ white-space: collapse balance; white-space: preserve nowrap; /* Global values */ white-space: inherit; white-space: initial; white-space: revert; white-space: revert-layer; white-..
[ CSS ] list-style-type์•Œ์•„๋ณด๊ธฐ. list-style์€ css์†์„ฑ ์ค‘ ํ•˜๋‚˜๋กœ, HTML์˜ ๋ชฉ๋ก ์š”์†Œ(``, ``, ``)๋“ฑ์˜ ๋ฆฌ์ŠคํŠธ์—์„œ ๋ฆฌ์ŠคํŠธ ํ•ญ๋ชฉ๋“ค์˜ ๋งˆ์ปค(marker) ๋ชจ์–‘์„ ์ง€์ •ํ•˜๋Š” CSS ์†์„ฑ์œผ๋กœ, ํ…์ŠคํŠธ ์•ž์— ์‚ฌ์šฉ๋˜๋Š” ์ˆซ์ž, ๋ฌธ์ž, ์ด๋ฏธ์ง€ ๋“ฑ์˜ ๋งˆ์ปค ๋ชจ์–‘์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. `list-style-type` ์†์„ฑ์€ ๋‹ค์–‘ํ•œ ๊ฐ’์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ผ๋ฐ˜์ ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฐ’๋“ค์ด ์‚ฌ์šฉ๋œ๋‹ค. 1. `none` ๋ชฉ๋ก ํ•ญ๋ชฉ์— ๋งˆ์ปค๋ฅผ ํ‘œ์‹œํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ฆ‰, ๋ฒˆํ˜ธ๋‚˜ ๋ถˆ๋ฆฟ ๊ธฐํ˜ธ๊ฐ€ ๋‚˜ํƒ€๋‚˜์ง€ ์•Š๋Š”๋‹ค. 2. `disc` ์›ํ˜• ๋ถˆ๋ฆฟ ๊ธฐํ˜ธ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. (default) 3. `circle` ๋นˆ ์› ๊ธฐํ˜ธ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. 4. `square` ๋„ค๋ชจ ์ƒ์ž ๊ธฐํ˜ธ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. 5. `decimal` 1๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ ์ˆซ์ž๋กœ ๋ฒˆํ˜ธ๋ฅผ ๋งค๊ธด๋‹ค. 6. `decimal-lead..
[ WEB ] CSR๊ณผ SSR ๋น„๊ตํ•˜๊ธฐ CSR(client-side-rendering)๊ณผ SSR(server-side-rendering)์€ ์›น ํŽ˜์ด์ง€์™€ ์ฝ˜ํ…์ธ ๋ฅผ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ Œ๋”๋งํ•˜๋Š” ๊ธฐ์ˆ ์ด๋‹ค. SSR๊ณผ CSR์€ ๋ Œ๋”๋ง ๊ณผ์ •์ด ์ผ์–ด๋‚˜๋Š” ์œ„์น˜์—์„œ ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค. CSR (Client-Side-Rendering) CSR์€ ํด๋ผ์ด์–ธํŠธ ์ธก์—์„œ ๋ Œ๋”๋ง์„ ํ•˜๋Š” ๊ธฐ์ˆ ๋กœ ์‚ฌ์šฉ์ž์˜ ์›น ๋ธŒ๋ผ์šฐ์ €์˜ JavaScript๋ฅผ ํ†ตํ•ด ์›น ํŽ˜์ด์ง€๋ฅผ ๋ Œ๋”๋งํ•œ๋‹ค. ์„œ๋ฒ„์—์„œ ์ตœ์†Œํ•œ์˜ HTML ํŒŒ์ผ์„ ๋ณด๋‚ด๊ณ , ํด๋ผ์ด์–ธํŠธ ์ธก JavaScript ์ฝ”๋“œ๊ฐ€ ์ฝ˜ํ…์ธ ๋ฅผ ๊ฐ€์ ธ์™€ ๋ Œ๋”๋งํ•œ๋‹ค. ์ด ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด๋‹ค ๋” ์ธํ„ฐ๋ ‰ํ‹ฐ๋ธŒํ•˜๊ณ  ๋™์ ์ธ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๊ณ  ์ „์ฒด ํŽ˜์ด์ง€๋ฅผ ๋‹ค์‹œ ๋กœ๋“œํ•˜์ง€ ์•Š๊ณ ๋„ ์ฝ˜ํ…์ธ ๋ฅผ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ด ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ์ดˆ๊ธฐ ํŽ˜์ด์ง€ ๋กœ๋”ฉ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ๊ฒฝ์šฐ..