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 ์ฝ๋๊ฐ ์ฝํ ์ธ ๋ฅผ ๊ฐ์ ธ์ ๋ ๋๋งํ๋ค. ์ด ๊ฒฝ์ฐ ์ฌ์ฉ์์๊ฒ ๋ณด๋ค ๋ ์ธํฐ๋ ํฐ๋ธํ๊ณ ๋์ ์ธ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ ์ ์๊ณ ์ ์ฒด ํ์ด์ง๋ฅผ ๋ค์ ๋ก๋ํ์ง ์๊ณ ๋ ์ฝํ ์ธ ๋ฅผ ์ ๋ฐ์ดํธํ ์ ์๋ ๊ธฐ๋ฅ์ด ์๋ค. ํ์ง๋ง ์ด๊ธฐ ํ์ด์ง ๋ก๋ฉ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฌ๋ ๊ฒฝ์ฐ.. ์ด์ 1 2 3 ๋ค์