์๋ฐ์คํฌ๋ฆฝํธ ํด๋ฆฌํ์ ์ดํด์ ๊ตฌํ์ ๋ํ ์ข ํฉ ๊ฐ์ด๋. ์ ์ธ๊ณ ์ฌ์ฉ์๋ฅผ ์ํ ๋ธ๋ผ์ฐ์ ํธํ์ฑ ๋ฌธ์ ์ ๊ธฐ๋ฅ ๊ฐ์ง์ ๊ฐ๋ ฅํจ์ ํ๊ตฌํฉ๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ ํด๋ฆฌํ: ๊ธฐ๋ฅ ๊ฐ์ง๋ฅผ ํตํ ๋ธ๋ผ์ฐ์ ํธํ์ฑ ๊ฒฉ์ฐจ ํด์
๋์์์ด ์งํํ๋ ์น ๊ฐ๋ฐ ํ๊ฒฝ์์, ์๋ง์ ๋ธ๋ผ์ฐ์ ์ ๊ธฐ๊ธฐ ์ ๋ฐ์ ๊ฑธ์ณ ์ผ๊ด๋ ์ฌ์ฉ์ ๊ฒฝํ์ ๋ณด์ฅํ๋ ๊ฒ์ ์ค๋๋ ๊ณผ์ ์ ๋๋ค. ๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ๊ณผ ์ฐ์ํ ๋ฌธ๋ฒ์ ์ ๊ณตํ์ง๋ง, ์น์ ํ์ค์ ์ต์ ํ์ค์ ์๋ฒฝํ๊ฒ ์ง์ํ์ง ์์ ์ ์๋ ๋ค์ํ ํ๊ฒฝ์ ๊ณ ๋ คํด์ผ ํจ์ ์๋ฏธํฉ๋๋ค. ๋ฐ๋ก ์ด ์ง์ ์์ ์๋ฐ์คํฌ๋ฆฝํธ ํด๋ฆฌํ(JavaScript polyfills)์ด ์ค์ํ ์ญํ ์ ํฉ๋๋ค. ํด๋ฆฌํ์ ๊ฐ๋ฐ์๋ค์ด ์ต์ฒจ๋จ ๊ธฐ๋ฅ์ ํ์ฉํ๋ฉด์๋ ๊ตฌํ ๋๋ ๊ธฐ๋ฅ์ด ๋ถ์กฑํ ๋ธ๋ผ์ฐ์ ์์ ํธํ์ฑ์ ์ ์งํ ์ ์๋๋ก ํ๋ ํ์์ ์ธ ๋ค๋ฆฌ ์ญํ ์ ํฉ๋๋ค. ์ด ๊ธ์์๋ ํด๋ฆฌํ, ๋ธ๋ผ์ฐ์ ํธํ์ฑ, ๊ทธ๋ฆฌ๊ณ ๊ธฐ๋ฅ ๊ฐ์ง๋ผ๋ ์ง๋ฅ์ ์ธ ์ค์ฒ๋ฒ์ ํต์ฌ ๊ฐ๋ ์ ๊น์ด ํ๊ตฌํ๋ฉฐ, ์ ์ธ๊ณ ๊ฐ๋ฐ์๋ค์ ์ํ ๊ธ๋ก๋ฒ ๊ด์ ์ ์ ๊ณตํฉ๋๋ค.
ํญ์ ์กด์ฌํ๋ ๊ณผ์ : ๋ธ๋ผ์ฐ์ ํธํ์ฑ
์ธํฐ๋ท์ ๊ธฐ๊ธฐ, ์ด์ ์ฒด์ , ๋ธ๋ผ์ฐ์ ๋ฒ์ ์ ๋ชจ์์ดํฌ์ ๋๋ค. ์ต์ ํ๋๊ทธ์ญ ์ค๋งํธํฐ๋ถํฐ ๋ ๊ฑฐ์ ๋ฐ์คํฌํฑ ์ปดํจํฐ์ ์ด๋ฅด๊ธฐ๊น์ง, ๊ฐ์ ๊ณ ์ ์ ๋ ๋๋ง ์์ง๊ณผ ์๋ฐ์คํฌ๋ฆฝํธ ์ธํฐํ๋ฆฌํฐ๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์ด๋ฌํ ์ด์ง์ฑ์ ์น์ ๊ทผ๋ณธ์ ์ธ ์ธก๋ฉด์ด์ง๋ง, ๊ท ์ผํ๊ณ ์ ๋ขฐํ ์ ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ชฉํ๋ก ํ๋ ๊ฐ๋ฐ์์๊ฒ๋ ์๋นํ ์ฅ์ ๋ฌผ์ด ๋ฉ๋๋ค.
๋ธ๋ผ์ฐ์ ํธํ์ฑ์ด ์ ์ค์ํ๊ฐ?
- ์ฌ์ฉ์ ๊ฒฝํ(UX): ํน์ ๋ธ๋ผ์ฐ์ ์์ ์น์ฌ์ดํธ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๊นจ์ง๊ฑฐ๋ ์๋ชป ์๋ํ๋ฉด ์ฌ์ฉ์์๊ฒ ๋ถ๋ง์ ์ด๋ํ๊ณ ์ดํํ๊ฒ ๋ง๋ค ์ ์์ต๋๋ค. ๊ธ๋ก๋ฒ ์ฌ์ฉ์์ ๊ฒฝ์ฐ, ์ด๋ ์๋นํ ์ฌ์ฉ์์ธต์ ์์ธ์ํค๋ ๊ฒ์ ์๋ฏธํ ์ ์์ต๋๋ค.
- ์ ๊ทผ์ฑ: ์ฅ์ ๋ฅผ ๊ฐ์ง ์ฌ์ฉ์๊ฐ ์น ์ฝํ ์ธ ์ ์ ๊ทผํ๊ณ ์ํธ์์ฉํ ์ ์๋๋ก ๋ณด์ฅํ๋ ๊ฒ์ ๋๋์ ์ด๋ฉฐ ์ข ์ข ๋ฒ์ ์ธ ์๋ฌด์ ๋๋ค. ๋ง์ ์ ๊ทผ์ฑ ๊ธฐ๋ฅ๋ค์ด ์ต์ ์น ํ์ค์ ์์กดํฉ๋๋ค.
- ๊ธฐ๋ฅ ๋๋ฑ์ฑ: ์ฌ์ฉ์๋ ์ด๋ค ๋ธ๋ผ์ฐ์ ๋ฅผ ์ ํํ๋ ์ผ๊ด๋ ๊ธฐ๋ฅ์ ๊ธฐ๋ํฉ๋๋ค. ์ผ๊ด๋์ง ์์ ๊ธฐ๋ฅ ์ธํธ๋ ํผ๋์ ์ผ๊ธฐํ๊ณ ํ์ง์ด ๋ฎ๋ค๋ ์ธ์์ ์ค ์ ์์ต๋๋ค.
- ๋๋ฌ ๋ฒ์ ๋ฐ ์์ฅ ์ ์ ์จ: ์ต์ ๋ธ๋ผ์ฐ์ ์ฌ์ฉ์๊ฐ ์ฆ๊ฐํ๊ณ ์์ง๋ง, ์ ์ธ๊ณ ์ธ๊ตฌ์ ์๋น ๋ถ๋ถ์ ํ๋์จ์ด ์ ์ฝ, ๊ธฐ์ ์ ์ฑ ๋๋ ๊ฐ์ธ์ ์ ํธ๋ก ์ธํด ์ฌ์ ํ ๊ตฌํ ๋ฒ์ ์ ์์กดํ๊ณ ์์ต๋๋ค. ์ด๋ฌํ ์ฌ์ฉ์๋ค์ ๋ฌด์ํ๋ ๊ฒ์ ์๋นํ ์์ฅ์ ๋์น๋ ๊ฒ์ ์๋ฏธํ ์ ์์ต๋๋ค.
๋ณํํ๋ ์น ํ์ค์ ํ๋ฆ
World Wide Web Consortium(W3C)์ด๋ Ecma International(ECMAScript ๊ด๋ จ)๊ณผ ๊ฐ์ ์กฐ์ง์ด ์ฃผ๋ํ๋ ์น ํ์ค ๊ฐ๋ฐ์ ์ง์์ ์ธ ๊ณผ์ ์ ๋๋ค. ์๋ก์ด ๊ธฐ๋ฅ์ด ์ ์๋๊ณ , ํ์คํ๋ ํ, ๋ธ๋ผ์ฐ์ ๊ณต๊ธ์ ์ฒด์ ์ํด ๊ตฌํ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ ์ด ๊ณผ์ ์ ์ฆ๊ฐ์ ์ด์ง๋ ์๊ณ , ์ฑํ์ด ๊ท ์ผํ์ง๋ ์์ต๋๋ค.
- ๊ตฌํ ์ง์ฐ: ๊ธฐ๋ฅ์ด ํ์คํ๋ ํ์๋ ๋ชจ๋ ์ฃผ์ ๋ธ๋ผ์ฐ์ ์์ ์์ ํ ๊ตฌํ๋๊ณ ์์ ํ๋๊ธฐ๊น์ง๋ ์๊ฐ์ ๋๋ ์๋ ์ด ๊ฑธ๋ฆด ์ ์์ต๋๋ค.
- ๊ณต๊ธ์ ์ฒด๋ณ ๊ตฌํ: ๋๋๋ก ๋ธ๋ผ์ฐ์ ๋ค์ ๊ธฐ๋ฅ์ ์ฝ๊ฐ ๋ค๋ฅด๊ฒ ๊ตฌํํ๊ฑฐ๋ ๊ณต์ ํ์คํ ์ด์ ์ ์คํ์ ์ธ ๋ฒ์ ์ ๋์ ํ์ฌ ๋ฏธ๋ฌํ ํธํ์ฑ ๋ฌธ์ ๋ฅผ ์ผ์ผํฌ ์ ์์ต๋๋ค.
- ์๋น์ค ์ข ๋ฃ ๋ธ๋ผ์ฐ์ : ํน์ ๊ตฌํ ๋ธ๋ผ์ฐ์ ๋ค์ ๋ ์ด์ ๊ณต๊ธ์ ์ฒด์์ ์ ๊ทน์ ์ผ๋ก ์ง์ํ์ง ์์ง๋ง, ์ฌ์ ํ ์ ์ธ๊ณ ์ฌ์ฉ์ ์ผ๋ถ๊ฐ ์ฌ์ฉํ๊ณ ์์ ์ ์์ต๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ ํด๋ฆฌํ ์๊ฐ: ๋ณดํธ์ ์ธ ๋ฒ์ญ๊ฐ
ํต์ฌ์ ์ผ๋ก, ์๋ฐ์คํฌ๋ฆฝํธ ํด๋ฆฌํ์ ์ต์ ๊ธฐ๋ฅ์ ๋ค์ดํฐ๋ธ๋ก ์ง์ํ์ง ์๋ ๊ตฌํ ๋ธ๋ผ์ฐ์ ์ ํด๋น ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ์ฝ๋ ์กฐ๊ฐ์ ๋๋ค. ์ด๋ ์ฌ๋ฌ๋ถ์ ๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๊ฐ ๊ตฌํ ๋ธ๋ผ์ฐ์ ๊ฐ ์ดํดํ๋ ์ธ์ด๋ก "๋งํ " ์ ์๊ฒ ํด์ฃผ๋ ๋ฒ์ญ๊ฐ๋ผ๊ณ ์๊ฐํ ์ ์์ต๋๋ค.
ํด๋ฆฌํ์ด๋ ๋ฌด์์ธ๊ฐ?
ํด๋ฆฌํ์ ๋ณธ์ง์ ์ผ๋ก ํน์ ์น API๋ ์๋ฐ์คํฌ๋ฆฝํธ ๊ธฐ๋ฅ์ด ์ฌ์ฉ ๊ฐ๋ฅํ์ง ํ์ธํ๋ ์คํฌ๋ฆฝํธ์ ๋๋ค. ๋ง์ฝ ์ฌ์ฉ ๊ฐ๋ฅํ์ง ์๋ค๋ฉด, ํด๋ฆฌํ์ ํ์ค์ ์ต๋ํ ๊ฐ๊น๊ฒ ๋์์ ๋ณต์ ํ์ฌ ํด๋น ๊ธฐ๋ฅ์ ์ ์ํฉ๋๋ค. ์ด๋ฅผ ํตํด ๊ฐ๋ฐ์๋ค์ ์๋ก์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ฌ ์ฝ๋๋ฅผ ์์ฑํ ์ ์์ผ๋ฉฐ, ํด๋ฆฌํ์ ๋ธ๋ผ์ฐ์ ๊ฐ ๋ค์ดํฐ๋ธ๋ก ์ง์ํ์ง ์์ ๋๋ ์ฝ๋๊ฐ ์๋ํ๋๋ก ๋ณด์ฅํฉ๋๋ค.
ํด๋ฆฌํ์ ์ด๋ป๊ฒ ์๋ํ๋๊ฐ?
ํด๋ฆฌํ์ ์ผ๋ฐ์ ์ธ ์์ ํ๋ฆ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ๊ธฐ๋ฅ ๊ฐ์ง: ํด๋ฆฌํ์ ๋จผ์ ๋์ ๊ธฐ๋ฅ(์: ๋ด์ฅ ๊ฐ์ฒด์ ๋ฉ์๋, ์๋ก์ด ์ ์ญ API)์ด ํ์ฌ ํ๊ฒฝ์ ์กด์ฌํ๋์ง ํ์ธํฉ๋๋ค.
- ์กฐ๊ฑด๋ถ ์ ์: ๊ธฐ๋ฅ์ด ๋๋ฝ๋ ๊ฒ์ผ๋ก ๊ฐ์ง๋๋ฉด, ํด๋ฆฌํ์ด ์ด๋ฅผ ์ ์ํฉ๋๋ค. ์ด๋ ์๋ก์ด ํจ์๋ฅผ ๋ง๋ค๊ฑฐ๋, ๊ธฐ์กด ํ๋กํ ํ์ ์ ํ์ฅํ๊ฑฐ๋, ์ ์ญ ๊ฐ์ฒด๋ฅผ ์ ์ํ๋ ๊ฒ์ ํฌํจํ ์ ์์ต๋๋ค.
- ๋์ ๋ณต์ : ํด๋ฆฌํ์์ ์ ์๋ ๊ธฐ๋ฅ์ ์น ํ์ค์ ๋ช ์๋ ๋ค์ดํฐ๋ธ ๊ตฌํ์ ๋์์ ๋ชจ๋ฐฉํ๋ ๊ฒ์ ๋ชฉํ๋ก ํฉ๋๋ค.
ํด๋ฆฌํ์ ์ผ๋ฐ์ ์ธ ์์
์ค๋๋ ๋๋ฆฌ ์ฌ์ฉ๋๋ ๋ง์ ์๋ฐ์คํฌ๋ฆฝํธ ๊ธฐ๋ฅ๋ค์ ํ๋ ํด๋ฆฌํ์ ํตํด์๋ง ์ฌ์ฉ ๊ฐ๋ฅํ์ต๋๋ค:
- ๋ฐฐ์ด ๋ฉ์๋:
Array.prototype.includes(),Array.prototype.find(),Array.prototype.flat()์ ๊ฐ์ ๊ธฐ๋ฅ๋ค์ ๊ด๋ฒ์ํ ๋ค์ดํฐ๋ธ ์ง์ ์ด์ ์ ํด๋ฆฌํ์ ์ผ๋ฐ์ ์ธ ๋์์ด์์ต๋๋ค. - ๋ฌธ์์ด ๋ฉ์๋:
String.prototype.startsWith(),String.prototype.endsWith(),String.prototype.repeat()๊ฐ ๋ค๋ฅธ ์์ ๋๋ค. - Promise ํด๋ฆฌํ: ๋ค์ดํฐ๋ธ Promise ์ง์ ์ด์ ์, `es6-promise`์ ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋น๋๊ธฐ ์์ ์ ๋ณด๋ค ๊ตฌ์กฐํ๋ ๋ฐฉ์์ผ๋ก ์ฒ๋ฆฌํ๋ ๋ฐ ํ์์ ์ด์์ต๋๋ค.
- Fetch API: `XMLHttpRequest`์ ๋์์ธ ์ต์ `fetch` API๋ ์ข ์ข ๊ตฌํ ๋ธ๋ผ์ฐ์ ๋ฅผ ์ํด ํด๋ฆฌํ์ด ํ์ํ์ต๋๋ค.
- ๊ฐ์ฒด ๋ฉ์๋:
Object.assign()๊ณผObject.entries()๋ ํด๋ฆฌํ์ ํํ์ ๋ฐ์ ๋ค๋ฅธ ๊ธฐ๋ฅ๋ค์ ๋๋ค. - ES6+ ๊ธฐ๋ฅ: ์๋ก์ด ECMAScript ๋ฒ์ (ES6, ES7, ES8 ๋ฑ)์ด ์ถ์๋จ์ ๋ฐ๋ผ, ํ์ดํ ํจ์(ํ์ฌ๋ ๋๋ฆฌ ์ง์๋จ), ํ ํ๋ฆฟ ๋ฆฌํฐ๋ด, ๋น๊ตฌ์กฐํ ํ ๋น๊ณผ ๊ฐ์ ๊ธฐ๋ฅ๋ค์ ํน์ API์ ๋ํด ํธ๋์คํ์ผ๋ง(๊ด๋ จ์ด ์์ง๋ง ๋ณ๊ฐ์)์ด๋ ํด๋ฆฌํ์ด ํ์ํ ์ ์์ต๋๋ค.
ํด๋ฆฌํ ์ฌ์ฉ์ ์ด์
- ๋ ๋์ ๋๋ฌ ๋ฒ์: ์ฌ์ฉ์์ ๋ธ๋ผ์ฐ์ ์ ํ๊ณผ ์๊ด์์ด ๋ ๋์ ๋ฒ์์ ์ฌ์ฉ์๋ค์ด ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ๋ฐ๋ฅด๊ฒ ์ฌ์ฉํ ์ ์๊ฒ ํฉ๋๋ค.
- ํ๋์ ์ธ ๊ฐ๋ฐ: ๊ฐ๋ฐ์๋ค์ด ํ์ ํธํ์ฑ ๋ฌธ์ ์ ์ง๋์น๊ฒ ์ ์ฝ๋ฐ์ง ์๊ณ ํ๋์ ์ธ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฌธ๋ฒ๊ณผ API๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ํฉ๋๋ค.
- ํฅ์๋ ์ฌ์ฉ์ ๊ฒฝํ: ๋ชจ๋ ์ฌ์ฉ์์๊ฒ ์ผ๊ด๋๊ณ ์์ธก ๊ฐ๋ฅํ ๊ฒฝํ์ ๋ณด์ฅํฉ๋๋ค.
- ๋ฏธ๋ ๋๋น(์ด๋ ์ ๋): ํ์ค ๊ธฐ๋ฅ์ ์ฌ์ฉํ๊ณ ํด๋ฆฌํ์ ์ ์ฉํจ์ผ๋ก์จ, ๋ธ๋ผ์ฐ์ ๊ฐ ์งํํจ์ ๋ฐ๋ผ ์ฝ๋๊ฐ ๋ ์ ์ํ๊ธฐ ์ฌ์์ง๋๋ค.
๊ธฐ๋ฅ ๊ฐ์ง์ ๊ธฐ์
ํด๋ฆฌํ์ ๊ฐ๋ ฅํ์ง๋ง, ๋ชจ๋ ์ฌ์ฉ์์๊ฒ ๋ฌด์์ ๋ก๋ํ๋ ๊ฒ์ ๋ถํ์ํ ์ฝ๋ ์ฆ๊ฐ์ ์ฑ๋ฅ ์ ํ๋ฅผ ์ด๋ํ ์ ์์ต๋๋ค. ํนํ ์ด๋ฏธ ๋ค์ดํฐ๋ธ ์ง์์ ๊ฐ์ถ ์ต์ ๋ธ๋ผ์ฐ์ ์ฌ์ฉ์์๊ฒ๋ ๋์ฑ ๊ทธ๋ ์ต๋๋ค. ๋ฐ๋ก ์ด ์ง์ ์์ ๊ธฐ๋ฅ ๊ฐ์ง(feature detection)๊ฐ ๊ฐ์ฅ ์ค์ํด์ง๋๋ค.
๊ธฐ๋ฅ ๊ฐ์ง๋ ๋ฌด์์ธ๊ฐ?
๊ธฐ๋ฅ ๊ฐ์ง๋ ํน์ ๋ธ๋ผ์ฐ์ ๋ ํ๊ฒฝ์ด ํน์ ๊ธฐ๋ฅ์ด๋ API๋ฅผ ์ง์ํ๋์ง ํ์ธํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๊ธฐ์ ์ ๋๋ค. ๋ธ๋ผ์ฐ์ ์ ์ด๋ฆ์ด๋ ๋ฒ์ ์ ๊ธฐ๋ฐํ์ฌ ๊ธฐ๋ฅ์ ๊ฐ์ ํ๋ ๋์ (์ด๋ ๊นจ์ง๊ธฐ ์ฝ๊ณ ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ธฐ ์ฌ์ฐ๋ฉฐ, ๋ธ๋ผ์ฐ์ ์ค๋ํ์ผ๋ก ์๋ ค์ ธ ์์), ๊ธฐ๋ฅ ๊ฐ์ง๋ ์ํ๋ ๊ธฐ๋ฅ์ ์กด์ฌ ์ฌ๋ถ๋ฅผ ์ง์ ํ์ธํฉ๋๋ค.
๊ธฐ๋ฅ ๊ฐ์ง๊ฐ ์ ์ค์ํ๊ฐ?
- ์ฑ๋ฅ ์ต์ ํ: ํด๋ฆฌํ์ด๋ ๋์ฒด ๊ตฌํ์ ์ค์ ๋ก ํ์ํ ๋๋ง ๋ก๋ํฉ๋๋ค. ์ด๋ ๋ค์ด๋ก๋, ํ์ฑ, ์คํํด์ผ ํ ์๋ฐ์คํฌ๋ฆฝํธ์ ์์ ์ค์ฌ ๋ก๋ ์๊ฐ์ ๋จ์ถ์ํต๋๋ค.
- ๊ฒฌ๊ณ ํจ: ๊ธฐ๋ฅ ๊ฐ์ง๋ ๋ธ๋ผ์ฐ์ ์ค๋ํ๋ณด๋ค ํจ์ฌ ์ ๋ขฐํ ์ ์์ต๋๋ค. ๋ธ๋ผ์ฐ์ ์ค๋ํ์ ์ฝ๊ฒ ์์กฐ๋๊ฑฐ๋ ์คํด์ ์์ง๊ฐ ์๋ ์ฌ์ฉ์ ์์ด์ ํธ ๋ฌธ์์ด์ ์์กดํฉ๋๋ค. ๋ฐ๋ฉด์ ๊ธฐ๋ฅ ๊ฐ์ง๋ ๊ธฐ๋ฅ์ ์ค์ ์กด์ฌ์ ๊ธฐ๋ฅ์ ํ์ธํฉ๋๋ค.
- ์ ์ง๋ณด์์ฑ: ๊ธฐ๋ฅ ๊ฐ์ง์ ์์กดํ๋ ์ฝ๋๋ ํน์ ๋ธ๋ผ์ฐ์ ๋ฒ์ ์ด๋ ๊ณต๊ธ์ ์ฒด์ ํน์ฑ์ ์ฝ๋งค์ด์ง ์๊ธฐ ๋๋ฌธ์ ์ ์ง๋ณด์๊ฐ ๋ ์ฝ์ต๋๋ค.
- ์ ์ง์ ๊ธฐ๋ฅ ์ ํ(Graceful Degradation): ์ต์ ๋ธ๋ผ์ฐ์ ์๋ ๋ชจ๋ ๊ธฐ๋ฅ์ ๊ฐ์ถ ๊ฒฝํ์ ์ ๊ณตํ๊ณ , ๊ตฌํ ๋ธ๋ผ์ฐ์ ์๋ ๋ ๊ฐ๋จํ์ง๋ง ๊ธฐ๋ฅ์ ์ธ ๊ฒฝํ์ ์ ๊ณตํ๋ ์ ๋ต์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
๊ธฐ๋ฅ ๊ฐ์ง ๊ธฐ๋ฒ
์๋ฐ์คํฌ๋ฆฝํธ์์ ๊ธฐ๋ฅ ๊ฐ์ง๋ฅผ ์ํํ๋ ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ๋ฐฉ๋ฒ์ ๊ด๋ จ ๊ฐ์ฒด์ ์์ฑ์ด๋ ๋ฉ์๋์ ์กด์ฌ๋ฅผ ํ์ธํ๋ ๊ฒ์ ๋๋ค.
1. ๊ฐ์ฒด ์์ฑ/๋ฉ์๋ ํ์ธ
์ด๊ฒ์ ๊ฐ์ฅ ๊ฐ๋จํ๊ณ ๋๋ฆฌ ์ฌ์ฉ๋๋ ๋ฐฉ๋ฒ์ ๋๋ค. ๊ฐ์ฒด๊ฐ ํน์ ์์ฑ์ ๊ฐ์ง๊ณ ์๋์ง ๋๋ ๊ฐ์ฒด์ ํ๋กํ ํ์ ์ด ํน์ ๋ฉ์๋๋ฅผ ๊ฐ์ง๊ณ ์๋์ง ํ์ธํฉ๋๋ค.
์์:Array.prototype.includes() ์ง์ ๊ฐ์ง
```javascript
if (Array.prototype.includes) {
// ๋ธ๋ผ์ฐ์ ๊ฐ Array.prototype.includes๋ฅผ ๋ค์ดํฐ๋ธ๋ก ์ง์ํฉ๋๋ค
console.log('๋ค์ดํฐ๋ธ includes()๊ฐ ์ง์๋ฉ๋๋ค!');
} else {
// ๋ธ๋ผ์ฐ์ ๊ฐ Array.prototype.includes๋ฅผ ์ง์ํ์ง ์์ต๋๋ค. ํด๋ฆฌํ์ ๋ก๋ํฉ๋๋ค.
console.log('๋ค์ดํฐ๋ธ includes()๊ฐ ์ง์๋์ง ์์ต๋๋ค. ํด๋ฆฌํ์ ๋ก๋ํฉ๋๋ค...');
// ์ฌ๊ธฐ์ includes ํด๋ฆฌํ ์คํฌ๋ฆฝํธ๋ฅผ ๋ก๋ํฉ๋๋ค
}
```
์์: Fetch API ์ง์ ๊ฐ์ง
```javascript
if (window.fetch) {
// ๋ธ๋ผ์ฐ์ ๊ฐ Fetch API๋ฅผ ๋ค์ดํฐ๋ธ๋ก ์ง์ํฉ๋๋ค
console.log('Fetch API๊ฐ ์ง์๋ฉ๋๋ค!');
} else {
// ๋ธ๋ผ์ฐ์ ๊ฐ Fetch API๋ฅผ ์ง์ํ์ง ์์ต๋๋ค. ํด๋ฆฌํ์ ๋ก๋ํฉ๋๋ค.
console.log('Fetch API๊ฐ ์ง์๋์ง ์์ต๋๋ค. ํด๋ฆฌํ์ ๋ก๋ํฉ๋๋ค...');
// ์ฌ๊ธฐ์ fetch ํด๋ฆฌํ ์คํฌ๋ฆฝํธ๋ฅผ ๋ก๋ํฉ๋๋ค
}
```
2. ๊ฐ์ฒด ์กด์ฌ ํ์ธ
์ ์ญ ๊ฐ์ฒด๋ ๊ธฐ์กด ๊ฐ์ฒด์ ๋ฉ์๋๊ฐ ์๋ API์ ๊ฒฝ์ฐ์ ๋๋ค.
์์: Promises ์ง์ ๊ฐ์ง ```javascript if (window.Promise) { // ๋ธ๋ผ์ฐ์ ๊ฐ Promises๋ฅผ ๋ค์ดํฐ๋ธ๋ก ์ง์ํฉ๋๋ค console.log('Promises๊ฐ ์ง์๋ฉ๋๋ค!'); } else { // ๋ธ๋ผ์ฐ์ ๊ฐ Promises๋ฅผ ์ง์ํ์ง ์์ต๋๋ค. ํด๋ฆฌํ์ ๋ก๋ํฉ๋๋ค. console.log('Promises๊ฐ ์ง์๋์ง ์์ต๋๋ค. ํด๋ฆฌํ์ ๋ก๋ํฉ๋๋ค...'); // ์ฌ๊ธฐ์ Promise ํด๋ฆฌํ ์คํฌ๋ฆฝํธ๋ฅผ ๋ก๋ํฉ๋๋ค } ```3. `typeof` ์ฐ์ฐ์ ์ฌ์ฉ
์ด๋ ๋ณ์๋ ํจ์๊ฐ ์ ์๋์๊ณ ํน์ ํ์ ์ ๊ฐ์ง๊ณ ์๋์ง ํ์ธํ ๋ ํนํ ์ ์ฉํฉ๋๋ค.
์์: ํจ์ ์ ์ ์ฌ๋ถ ํ์ธ ```javascript if (typeof someFunction === 'function') { // someFunction์ด ์ ์๋์๊ณ ํจ์์ ๋๋ค } else { // someFunction์ด ์ ์๋์ง ์์๊ฑฐ๋ ํจ์๊ฐ ์๋๋๋ค } ```๊ธฐ๋ฅ ๊ฐ์ง ๋ฐ ํด๋ฆฌํ๋ง์ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
์ง์ ๊ธฐ๋ฅ ๊ฐ์ง ๋ก์ง๊ณผ ํด๋ฆฌํ์ ์์ฑํ ์๋ ์์ง๋ง, ์ด ๊ณผ์ ์ ๋จ์ํํ๋ ์ฌ๋ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์์ต๋๋ค:
- Modernizr: ๊ธฐ๋ฅ ๊ฐ์ง๋ฅผ ์ํ ์ค๋๋๊ณ ํฌ๊ด์ ์ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์
๋๋ค. ๋ค์ํ ํ
์คํธ๋ฅผ ์คํํ๊ณ
<html>์์์ ์ด๋ค ๊ธฐ๋ฅ์ด ์ง์๋๋์ง๋ฅผ ๋ํ๋ด๋ CSS ํด๋์ค๋ฅผ ์ ๊ณตํฉ๋๋ค. ๊ฐ์ง๋ ๊ธฐ๋ฅ์ ๋ฐ๋ผ ํด๋ฆฌํ์ ๋ก๋ํ ์๋ ์์ต๋๋ค. - Core-js: ๊ด๋ฒ์ํ ECMAScript ๊ธฐ๋ฅ๊ณผ ์น API์ ๋ํ ํด๋ฆฌํ์ ์ ๊ณตํ๋ ๊ฐ๋ ฅํ ๋ชจ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค. ๊ตฌ์ฑ ๊ฐ๋ฅ์ฑ์ด ๋์ ํ์ํ ํด๋ฆฌํ๋ง ํฌํจํ ์ ์์ต๋๋ค.
- Polyfill.io: ์ฌ์ฉ์์ ๋ธ๋ผ์ฐ์ ์ ๊ฐ์ง๋ ๊ธฐ๋ฅ์ ๋ฐ๋ผ ๋์ ์ผ๋ก ํด๋ฆฌํ์ ์ ๊ณตํ๋ ์๋น์ค์ ๋๋ค. ์ด๋ ํด๋ฆฌํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ง์ ๊ด๋ฆฌํ์ง ์๊ณ ๋ ํธํ์ฑ์ ๋ณด์ฅํ๋ ๋งค์ฐ ํธ๋ฆฌํ ๋ฐฉ๋ฒ์ ๋๋ค. ์คํฌ๋ฆฝํธ ํ๊ทธ ํ๋๋ง ํฌํจํ๋ฉด ์๋น์ค๊ฐ ๋๋จธ์ง๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค.
์ ์ธ๊ณ์ ์ผ๋ก ํด๋ฆฌํ์ ๊ตฌํํ๋ ์ ๋ต
๊ธ๋ก๋ฒ ์ฌ์ฉ์๋ฅผ ์ํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ ๋, ์ ๊ณ ๋ ค๋ ํด๋ฆฌํ ์ ๋ต์ ํธํ์ฑ๊ณผ ์ฑ๋ฅ์ ๊ท ํ์ ๋ง์ถ๋ ๋ฐ ํ์์ ์ ๋๋ค.
1. ๊ธฐ๋ฅ ๊ฐ์ง๋ฅผ ํตํ ์กฐ๊ฑด๋ถ ๋ก๋ฉ (๊ถ์ฅ)
์ด๊ฒ์ ๊ฐ์ฅ ๊ฒฌ๊ณ ํ๊ณ ์ฑ๋ฅ์ด ์ข์ ์ ๊ทผ ๋ฐฉ์์ ๋๋ค. ์์์ ์ค๋ช ํ ๊ฒ์ฒ๋ผ, ํด๋ฆฌํ์ด ํ์ํ์ง ๊ฒฐ์ ํ๊ธฐ ์ํด ๊ธฐ๋ฅ ๊ฐ์ง๋ฅผ ์ฌ์ฉํ ํ ๋ก๋ํฉ๋๋ค.
์์ ์ํฌํ๋ก์ฐ:- ๊ฐ์ฅ ์ค๋๋ ๋ธ๋ผ์ฐ์ ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ธฐ๋ณธ ๊ธฐ๋ฅ์ด ์คํ๋๋ ๋ฐ ํ์์ ์ธ ์ต์ํ์ ํต์ฌ ํด๋ฆฌํ ์ธํธ๋ฅผ ํฌํจํฉ๋๋ค.
- ๋ ๊ณ ๊ธ ๊ธฐ๋ฅ์ ์ํด์๋ `if` ๋ฌธ์ ์ฌ์ฉํ์ฌ ํ์ธ์ ๊ตฌํํฉ๋๋ค.
- ๊ธฐ๋ฅ์ด ๋๋ฝ๋ ๊ฒฝ์ฐ, ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ์ฌ ํด๋น ํด๋ฆฌํ ์คํฌ๋ฆฝํธ๋ฅผ ๋์ ์ผ๋ก ๋ก๋ํฉ๋๋ค. ์ด๋ ํด๋ฆฌํ์ด ํ์ํ ๋๋ง ๋ค์ด๋ก๋๋๊ณ ์คํ๋๋๋ก ๋ณด์ฅํฉ๋๋ค.
2. ํธ๋์คํ์ผ๋ง ๋ฐ ํด๋ฆฌํ ๋ฒ๋ค๋ง๊ณผ ํจ๊ป ๋น๋ ๋๊ตฌ ์ฌ์ฉ
Webpack, Rollup, Parcel๊ณผ ๊ฐ์ ์ต์ ๋น๋ ๋๊ตฌ์ Babel๊ณผ ๊ฐ์ ํธ๋์คํ์ผ๋ฌ๋ฅผ ๊ฒฐํฉํ๋ฉด ๊ฐ๋ ฅํ ์๋ฃจ์ ์ ์ ๊ณตํฉ๋๋ค.
- ํธ๋์คํ์ผ๋ง: Babel์ ์ต์ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฌธ๋ฒ(ES6+)์ ๋๋ฆฌ ์ง์๋๋ ๊ตฌํ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฒ์ (์: ES5)์ผ๋ก ๋ณํํ ์ ์์ต๋๋ค. ์ด๊ฒ์ ํด๋ฆฌํ๊ณผ ๊ฐ์ง ์์ต๋๋ค; ๋๋ฝ๋ API๊ฐ ์๋ ๋ฌธ๋ฒ์ ๋ณํํฉ๋๋ค.
- Babel ํด๋ฆฌํ: Babel์ ๋๋ฝ๋ ECMAScript ๊ธฐ๋ฅ ๋ฐ ์น API์ ๋ํ ํด๋ฆฌํ์ ์๋์ผ๋ก ์ฃผ์ ํ ์๋ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, `@babel/preset-env` ํ๋ฆฌ์ ์ ํน์ ๋ธ๋ผ์ฐ์ ๋ฒ์ ์ ๋์์ผ๋ก ๊ตฌ์ฑํ๊ณ `core-js`์ ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ํ์ํ ํด๋ฆฌํ์ ์๋์ผ๋ก ํฌํจํ๋๋ก ํ ์ ์์ต๋๋ค.
Babel ๊ตฌ์ฑ(์: `.babelrc` ๋๋ `babel.config.js`)์์ ํ๋ฆฌ์ ์ ์ง์ ํ ์ ์์ต๋๋ค:
```json { "presets": [ [ "@babel/preset-env", { "useBuiltIns": "usage", "corejs": 3 } ] ] } ```"useBuiltIns": "usage" ์ต์
์ Babel์๊ฒ ์ฝ๋์์ ์ค์ ๋ก ์ฌ์ฉ๋๊ณ Webpack ๊ตฌ์ฑ(์: `package.json`)์ ์ ์๋ ๋์ ๋ธ๋ผ์ฐ์ ์์ ๋๋ฝ๋ ๊ธฐ๋ฅ์ ๋ํด์๋ง `core-js`์ ํด๋ฆฌํ์ ์๋์ผ๋ก ํฌํจํ๋๋ก ์ง์ํฉ๋๋ค. ์ด๊ฒ์ ๋๊ท๋ชจ ํ๋ก์ ํธ์ ๋งค์ฐ ํจ์จ์ ์ธ ์ ๊ทผ ๋ฐฉ์์
๋๋ค.
3. ํด๋ฆฌํ ์๋น์ค ์ฌ์ฉ
์์ ์ธ๊ธํ๋ฏ์ด Polyfill.io์ ๊ฐ์ ์๋น์ค๋ ํธ๋ฆฌํ ์ต์ ์ ๋๋ค. ์์ฒญํ๋ ๋ธ๋ผ์ฐ์ ์ ๊ธฐ๋ฅ์ ๋ง์ถฐ์ง ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ์ ์ ๊ณตํฉ๋๋ค.
์๋ ๋ฐฉ์: HTML์ ๋จ์ผ ์คํฌ๋ฆฝํธ ํ๊ทธ๋ฅผ ํฌํจํฉ๋๋ค:
```html ```?features=default ๋งค๊ฐ๋ณ์๋ ์๋น์ค์๊ฒ ์ผ๋ฐ์ ์ธ ํด๋ฆฌํ ์ธํธ๋ฅผ ํฌํจํ๋๋ก ์ง์ํฉ๋๋ค. ํ์ํ ํน์ ๊ธฐ๋ฅ์ ์ง์ ํ ์๋ ์์ต๋๋ค:
์ฅ์ : ๊ตฌํ์ด ๋งค์ฐ ์ฝ๊ณ , ํญ์ ์ต์ ์ํ์ด๋ฉฐ, ์ ์ง๋ณด์๊ฐ ์ต์ํ๋ฉ๋๋ค. ๋จ์ : ์ 3์ ์๋น์ค์ ์์กดํ๋ฉฐ(์ ์ฌ์ ์ธ ๋จ์ผ ์ฅ์ ์ง์ ๋๋ ์ง์ฐ ์๊ฐ), ์ด๋ค ํด๋ฆฌํ์ด ๋ก๋๋๋์ง์ ๋ํ ์ ์ด๊ฐ ์ ๊ณ (๋ช ์์ ์ผ๋ก ์ง์ ํ์ง ์๋ ํ), ์ ์คํ๊ฒ ์ง์ ํ์ง ์์ผ๋ฉด ์ฌ์ฉํ์ง ์๋ ๊ธฐ๋ฅ์ ๋ํ ํด๋ฆฌํ์ ๋ก๋ํ ์ ์์ต๋๋ค.
4. ํต์ฌ ํด๋ฆฌํ ์ธํธ ๋ฒ๋ค๋ง
์๊ท๋ชจ ํ๋ก์ ํธ๋ ํน์ ์๋๋ฆฌ์ค์ ๊ฒฝ์ฐ, ์ ๋ณ๋ ํ์ ํด๋ฆฌํ ์ธํธ๋ฅผ ์ ํ๋ฆฌ์ผ์ด์ ์ฝ๋์ ์ง์ ๋ฒ๋ค๋งํ๋๋ก ์ ํํ ์ ์์ต๋๋ค. ์ด๋ฅผ ์ํด์๋ ๋์ ์ฌ์ฉ์์๊ฒ ์ด๋ค ํด๋ฆฌํ์ด ์ ๋ง๋ก ํ์ํ์ง ์ ์คํ๊ฒ ๊ณ ๋ คํด์ผ ํฉ๋๋ค.
์์: ๋ถ์ ๋๊ตฌ๋ ํ์ UI ๊ตฌ์ฑ ์์์ `Promise`์ `fetch`๊ฐ ํ์ํ ๊ฒฝ์ฐ, ํด๋น ํด๋ฆฌํ์ ์ฃผ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฒ๋ค์ ๋งจ ์์ ํฌํจํ ์ ์์ต๋๋ค.
๊ธ๋ก๋ฒ ์ฌ์ฉ์๋ฅผ ์ํ ๊ณ ๋ ค์ฌํญ
- ๊ธฐ๊ธฐ ๋ค์์ฑ: ํนํ ์ ํฅ ์์ฅ์ ๋ชจ๋ฐ์ผ ๊ธฐ๊ธฐ๋ ๊ตฌํ ์ด์ ์ฒด์ ์ ๋ธ๋ผ์ฐ์ ๋ฅผ ์คํํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํ ์คํธ ๋ฐ ํด๋ฆฌํ ์ ๋ต์ ๊ณ ๋ คํด์ผ ํฉ๋๋ค.
- ๋์ญํญ ์ ํ: ์ธํฐ๋ท ์ ์์ด ์ ํ๋ ์ง์ญ์์๋ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ด๋ก๋์ ํฌ๊ธฐ๋ฅผ ์ต์ํํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ๊ธฐ๋ฅ ๊ฐ์ง๋ฅผ ํตํ ์กฐ๊ฑด๋ถ ํด๋ฆฌํ ๋ก๋ฉ์ด ์ฌ๊ธฐ์ ํต์ฌ์ ๋๋ค.
- ๋ฌธํ์ ๋์์ค: ํด๋ฆฌํ๊ณผ ์ง์ ์ ์ธ ๊ด๋ จ์ ์์ง๋ง, ์น ์ฝํ ์ธ ์์ฒด๋ ๋ฌธํ์ ์ผ๋ก ๋ฏผ๊ฐํด์ผ ํจ์ ๊ธฐ์ตํ์ญ์์ค. ์ด๋ ํ์งํ, ์ ์ ํ ์ด๋ฏธ์ง ์ฌ์ฉ, ๊ฐ์ ํผํ๊ธฐ ๋ฑ์ ํฌํจํฉ๋๋ค.
- ์น ํ์ค ์ฑํ: ์ฃผ์ ๋ธ๋ผ์ฐ์ ๋ค์ ์ผ๋ฐ์ ์ผ๋ก ํ์ค์ ์ ์ํ๊ฒ ์ฑํํ์ง๋ง, ์ผ๋ถ ์ง์ญ์ด๋ ํน์ ์ฌ์ฉ์ ๊ทธ๋ฃน์ ๋ธ๋ผ์ฐ์ ์ ๊ทธ๋ ์ด๋๊ฐ ๋๋ ์ ์์ต๋๋ค.
ํด๋ฆฌํ๋ง์ ์ํ ๋ชจ๋ฒ ์ฌ๋ก
ํด๋ฆฌํ๊ณผ ๊ธฐ๋ฅ ๊ฐ์ง๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์ฌ์ฉํ๋ ค๋ฉด ๋ค์ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์ค์ํ์ญ์์ค:
- ๊ธฐ๋ฅ ๊ฐ์ง ์ฐ์ : ํญ์ ๋ธ๋ผ์ฐ์ ์ค๋ํ ๋์ ๊ธฐ๋ฅ ๊ฐ์ง๋ฅผ ์ฌ์ฉํ์ญ์์ค.
- ์กฐ๊ฑด๋ถ๋ก ํด๋ฆฌํ ๋ก๋: ๋ชจ๋ ์ฌ์ฉ์์๊ฒ ๋ชจ๋ ํด๋ฆฌํ์ ๋ก๋ํ์ง ๋ง์ญ์์ค. ๊ธฐ๋ฅ ๊ฐ์ง๋ฅผ ์ฌ์ฉํ์ฌ ํ์ํ ๋๋ง ๋ก๋ํ์ญ์์ค.
- ํด๋ฆฌํ ์ต์ ์ํ ์ ์ง: ์ ๋ขฐํ ์ ์๋ ์์ค(์: `core-js`, ์ ๊ด๋ฆฌ๋๋ GitHub ํ๋ก์ ํธ)์์ ํด๋ฆฌํ์ ์ฌ์ฉํ๊ณ , ๋ฒ๊ทธ ์์ ๋ฐ ์ฑ๋ฅ ๊ฐ์ ์ ํํ์ ๋ฐ๊ธฐ ์ํด ์ต์ ์ํ๋ก ์ ์งํ์ญ์์ค.
- ์ฑ๋ฅ ์ ๋
: ํฐ ํด๋ฆฌํ ๋ฒ๋ค์ ๋ก๋ ์๊ฐ์ ์๋นํ ์ํฅ์ ์ค ์ ์์ต๋๋ค. ๋ค์๊ณผ ๊ฐ์ด ์ต์ ํํ์ญ์์ค:
- ๋ชจ๋์ ํด๋ฆฌํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(์: `core-js`)๋ฅผ ์ฌ์ฉํ๊ณ ํ์ํ ๊ฒ๋ง ๊ฐ์ ธ์ต๋๋ค.
- ๋์ ๋ธ๋ผ์ฐ์ ์ ๋ฐ๋ผ ์๋์ผ๋ก ํด๋ฆฌํ์ ํฌํจํ๋๋ก ๋น๋ ๋๊ตฌ๋ฅผ ํ์ฉํฉ๋๋ค.
- ๋จ์์ฑ์ ์ํด ํด๋ฆฌํ ์๋น์ค๋ฅผ ๊ณ ๋ คํฉ๋๋ค.
- ์ฒ ์ ํ ํ ์คํธ: ๊ตฌํ ๋ฒ์ ๋ฐ ์๋ฎฌ๋ ์ด์ ๋ ์ ์ฌ์ ๊ธฐ๊ธฐ๋ฅผ ํฌํจํ ๋ค์ํ ๋ธ๋ผ์ฐ์ ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ ์คํธํ์ฌ ํด๋ฆฌํ์ด ์์๋๋ก ์๋ํ๋์ง ํ์ธํ์ญ์์ค. ๋ธ๋ผ์ฐ์ ํ ์คํธ ๋๊ตฌ์ ์๋น์ค๊ฐ ์ฌ๊ธฐ์์ ๋งค์ฐ ์ค์ํฉ๋๋ค.
- ์ ๋ต ๋ฌธ์ํ: ๊ฐ๋ฐ ํ์ ์ํด ๋ธ๋ผ์ฐ์ ํธํ์ฑ ๋ฐ ํด๋ฆฌํ๋ง์ ๋ํ ์ ๊ทผ ๋ฐฉ์์ ๋ช ํํ๊ฒ ๋ฌธ์ํํ์ญ์์ค.
- ํธ๋์คํ์ผ๋ง๊ณผ ํด๋ฆฌํ๋ง์ ์ฐจ์ด ์ดํด: ํธ๋์คํ์ผ๋ง(์: Babel ์ฌ์ฉ)์ ์ต์ ๋ฌธ๋ฒ์ ๊ตฌํ ๋ฌธ๋ฒ์ผ๋ก ๋ณํํฉ๋๋ค. ํด๋ฆฌํ๋ง์ ๋๋ฝ๋ API์ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ๋ ๋ค ์ข ์ข ํจ๊ป ์ฌ์ฉ๋ฉ๋๋ค.
ํด๋ฆฌํ์ ๋ฏธ๋
์น ํ์ค์ด ์ฑ์ํ๊ณ ๋ธ๋ผ์ฐ์ ์ฑํ๋ฅ ์ด ์ฆ๊ฐํจ์ ๋ฐ๋ผ ์ผ๋ถ ํด๋ฆฌํ์ ํ์์ฑ์ ์ค์ด๋ค ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ธ๋ผ์ฐ์ ํธํ์ฑ์ ๋ณด์ฅํ๊ณ ๊ธฐ๋ฅ ๊ฐ์ง๋ฅผ ํ์ฉํ๋ ๊ธฐ๋ณธ ์์น์ ๊ณ์ํด์ ์ค์ํ ๊ฒ์ ๋๋ค. ์น์ด ๋ฐ์ ํจ์ ๋ฐ๋ผ ์ต์ ๊ธฐ์ ๋ก ์ ๋ฐ์ดํธํ ์ ์๊ฑฐ๋ ํ์ง ์๋ ์ฌ์ฉ์์ธต์ ํญ์ ์กด์ฌํ ๊ฒ์ ๋๋ค.
์ถ์ธ๋ ๋ ํจ์จ์ ์ธ ํด๋ฆฌํ ์๋ฃจ์ ์ผ๋ก ํฅํ๊ณ ์์ผ๋ฉฐ, ๋น๋ ๋๊ตฌ๊ฐ ํด๋ฆฌํ ํฌํจ์ ์ต์ ํํ๋ ๋ฐ ์ค์ํ ์ญํ ์ ํฉ๋๋ค. Polyfill.io์ ๊ฐ์ ์๋น์ค๋ ํธ์์ฑ์ ์ ๊ณตํฉ๋๋ค. ๊ถ๊ทน์ ์ผ๋ก ๋ชฉํ๋ ํ๋์ ์ด๊ณ ํจ์จ์ ์ด๋ฉฐ ์ ์ง๋ณด์ ๊ฐ๋ฅํ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํ๋ฉด์, ์ ์ธ๊ณ ์ด๋์ ์๋ ์ด๋ค ๊ธฐ๊ธฐ๋ฅผ ์ฌ์ฉํ๋ ๋ชจ๋ ์ฌ์ฉ์์๊ฒ ์ํํ ๊ฒฝํ์ ๋ณด์ฅํ๋ ๊ฒ์ ๋๋ค.
๊ฒฐ๋ก
์๋ฐ์คํฌ๋ฆฝํธ ํด๋ฆฌํ์ ํฌ๋ก์ค ๋ธ๋ผ์ฐ์ ํธํ์ฑ์ ๋ณต์ก์ฑ์ ํด๊ฒฐํ๋ ๋ฐ ์์ด์๋ ์ ๋ ๋๊ตฌ์ ๋๋ค. ์ง๋ฅ์ ์ธ ๊ธฐ๋ฅ ๊ฐ์ง์ ๊ฒฐํฉ๋ ๋, ํด๋ฆฌํ์ ๊ฐ๋ฐ์๋ค์ด ๋๋ฌ ๋ฒ์๋ ์ฌ์ฉ์ ๊ฒฝํ์ ํฌ์ํ์ง ์๊ณ ๋ ์ต์ ์น API์ ๋ฌธ๋ฒ์ ์์ฉํ ์ ์๋๋ก ํ์ ์ค์ด์ค๋๋ค. ํด๋ฆฌํ๋ง์ ๋ํ ์ ๋ต์ ์ธ ์ ๊ทผ ๋ฐฉ์์ ์ฑํํจ์ผ๋ก์จ, ๊ฐ๋ฐ์๋ค์ ์์ ์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ง์ ํ ๊ธ๋ก๋ฒ ์ฌ์ฉ์์๊ฒ ์ ๊ทผ ๊ฐ๋ฅํ๊ณ , ์ฑ๋ฅ์ด ๋ฐ์ด๋๋ฉฐ, ์ฆ๊ฑฐ์ด ๊ฒฝํ์ ์ ๊ณตํ๋๋ก ๋ณด์ฅํ ์ ์์ต๋๋ค. ๋ชจ๋์๊ฒ ํฌ์ฉ์ ์ด๊ณ ์ ๊ทผ ๊ฐ๋ฅํ ์น์ ๊ตฌ์ถํ๊ธฐ ์ํด ๊ธฐ๋ฅ ๊ฐ์ง๋ฅผ ์ฐ์ ์ํ๊ณ , ์ฑ๋ฅ์ ์ต์ ํํ๋ฉฐ, ์ฒ ์ ํ๊ฒ ํ ์คํธํ๋ ๊ฒ์ ์์ง ๋ง์ญ์์ค.