๋ชจ๋ ์ฃผ์ ๋ธ๋ผ์ฐ์ ์์ ์ํํ ์ฌ์ฉ์ ๊ฒฝํ์ ์ํ ํฌ๋ก์ค ๋ธ๋ผ์ฐ์ JavaScript ๊ฐ๋ฐ ๋ง์คํฐํ๊ธฐ. ๋ฒ์ฉ ํธํ์ฑ ์ ๋ต, ๊ธฐ์ ๋ฐ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๋ฐฐ์ฐ์ญ์์ค.
ํฌ๋ก์ค ๋ธ๋ผ์ฐ์ JavaScript ๊ฐ๋ฐ: ๋ฒ์ฉ ํธํ์ฑ ์ ๋ต
์ค๋๋ ์ ๋ค์ํ ๋์งํธ ํ๊ฒฝ์์ JavaScript ์ฝ๋๊ฐ ๋ชจ๋ ์ฃผ์ ๋ธ๋ผ์ฐ์ ์์ ์๋ฒฝํ๊ฒ ์คํ๋๋๋ก ํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ค์ํฉ๋๋ค. ์ฌ์ฉ์๊ฐ ์ ํํ ๋ธ๋ผ์ฐ์ ์ ๊ด๊ณ์์ด ์ผ๊ด๋๊ณ ์์ ์ ์ธ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ๋ ๊ฒ์ด ์ฑ๊ณต์ ๋งค์ฐ ์ค์ํฉ๋๋ค. ์ด ํฌ๊ด์ ์ธ ๊ฐ์ด๋๋ ํฌ๋ก์ค ๋ธ๋ผ์ฐ์ JavaScript ๊ฐ๋ฐ์ ์ํ ํ์ ์ ๋ต, ๊ธฐ์ ๋ฐ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ํ๊ตฌํ์ฌ ์ง์ ์ผ๋ก ๋ณดํธ์ ์ธ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค ์ ์๋๋ก ์ง์ํฉ๋๋ค.
ํฌ๋ก์ค ๋ธ๋ผ์ฐ์ ํธํ์ฑ์ ์ค์์ฑ
๋ธ๋ผ์ฐ์ ๋ง๋ค JavaScript ์ฝ๋๋ฅผ ์ฝ๊ฐ ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ํด์ํฉ๋๋ค. ์ด๋ฌํ ์ฐจ์ด๋ก ์ธํด ๊ธฐ๋ฅ, ๋ชจ์ ๋ฐ ์ ์ฒด ์ฌ์ฉ์ ๊ฒฝํ์ ๋ถ์ผ์น๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ํฌ๋ก์ค ๋ธ๋ผ์ฐ์ ํธํ์ฑ์ ํด๊ฒฐํ์ง ๋ชปํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
- ๊ธฐ๋ฅ ์์: ๊ธฐ๋ฅ์ด ์์๋๋ก ์๋ํ์ง ์์ ์ฌ์ฉ์ ๋ถ๋ง์ ์ด๋ํ ์ ์์ต๋๋ค.
- ๋ ์ด์์ ๋ฌธ์ : ์น์ฌ์ดํธ๊ฐ ์๋ชป ๋ ๋๋ง๋์ด ์๊ฐ์ ๋งค๋ ฅ๊ณผ ์ฌ์ฉ์ฑ์ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค.
- ๋ณด์ ์ทจ์ฝ์ : ๋ธ๋ผ์ฐ์ ๋ณ ๋ฒ๊ทธ๊ฐ ์ ์ฉ๋์ด ์ฌ์ฉ์ ๋ฐ์ดํฐ๊ฐ ์์๋ ์ ์์ต๋๋ค.
- ์ฌ์ฉ์ ์ฐธ์ฌ ๊ฐ์: ์ข์ง ์์ ๊ฒฝํ์ ์ฌ์ฉ์๋ฅผ ๋ชฐ์๋ด์ด ๋น์ฆ๋์ค์ ๋ถ์ ์ ์ธ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค.
๋ฐ๋ผ์ ํฌ๋ก์ค ๋ธ๋ผ์ฐ์ ํธํ์ฑ์ ๋จ์ํ ๊ธฐ์ ์ ์ธ๋ถ ์ฌํญ์ด ์๋๋ผ ์ฑ๊ณต์ ์ธ ์น ์ ํ๋ฆฌ์ผ์ด์ ๊ตฌ์ถ์ ์ํ ๊ธฐ๋ณธ์ ์ธ ์๊ตฌ ์ฌํญ์ ๋๋ค.
๋ธ๋ผ์ฐ์ ์ฐจ์ด์ ์ดํด
์๋ฃจ์ ์ ๋ค์ด๊ฐ๊ธฐ ์ ์ ํฌ๋ก์ค ๋ธ๋ผ์ฐ์ ๋ถ์ผ์น์ ๊ทผ๋ณธ ์์ธ์ ์ดํดํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์ด๋ ์ข ์ข ๋ค์๊ณผ ๊ฐ์ ์์ธ์์ ๋น๋กฏ๋ฉ๋๋ค.
- ๋ค๋ฅธ JavaScript ์์ง: ๋ธ๋ผ์ฐ์ ๋ ๋ค๋ฅธ JavaScript ์์ง(์: Chrome์ V8, Firefox์ SpiderMonkey, Safari์ JavaScriptCore)์ ์ฌ์ฉํ๋ฉฐ, ์ด๋ ์ฌ์์ ์ฝ๊ฐ์ ์ฐจ์ด๋ก ๊ตฌํํ ์ ์์ต๋๋ค.
- ์น ํ์ค์ ๋ํ ๋ค์ํ ์์ค์ ์ง์: ๋ธ๋ผ์ฐ์ ๊ฐ ์ผ๋ฐ์ ์ผ๋ก ์น ํ์ค์ ์ค์ํ์ง๋ง ๊ตฌํ ์ ๋์ ์๊ธฐ๋ ๋ค๋ฅผ ์ ์์ต๋๋ค. ๊ตฌํ ๋ธ๋ผ์ฐ์ ๋ ์ต์ ๊ธฐ๋ฅ์ ๋ํ ์ง์์ด ๋ถ์กฑํ ์ ์๋ ๋ฐ๋ฉด, ์ต์ ๋ธ๋ผ์ฐ์ ๋ ์์ง ํ์คํ๋์ง ์์ ์คํ์ ๊ธฐ๋ฅ์ ๋์ ํ ์ ์์ต๋๋ค.
- ๋ธ๋ผ์ฐ์ ๋ณ ๋ฒ๊ทธ ๋ฐ ํน์ฑ: ๋ชจ๋ ๋ธ๋ผ์ฐ์ ์๋ JavaScript ์คํ์ ์ํฅ์ ์ค ์ ์๋ ๊ณ ์ ํ ๋ฒ๊ทธ ๋ฐ ํน์ฑ์ด ์์ต๋๋ค.
- ์ฌ์ฉ์ ๊ตฌ์ฑ: ์ฌ์ฉ์๋ JavaScript ๋นํ์ฑํ ๋๋ ์น์ฌ์ดํธ ๋์์ ์์ ํ๋ ํ์ฅ ํ๋ก๊ทธ๋จ ์ฌ์ฉ๊ณผ ๊ฐ์ด ๋ธ๋ผ์ฐ์ ์ค์ ์ ์ฌ์ฉ์ ์ง์ ํ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด Chrome์์ ์๋ฒฝํ๊ฒ ๋ ๋๋ง๋ CSS ์์ฑ์ด ์๋ธํฝ์ ๋ ๋๋ง ์ฒ๋ฆฌ์ ์์ง ๋ณํ์ผ๋ก ์ธํด Firefox์์ ์ฝ๊ฐ ๋ค๋ฅด๊ฒ ํ์๋ ์ ์์ต๋๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก, ์ด์ ๋ฒ์ ์ Internet Explorer๋ `fetch` ๋๋ `async/await`๊ณผ ๊ฐ์ ์ต์ JavaScript ๊ธฐ๋ฅ์ ๋ํ ์ง์์ด ๋ถ์กฑํ ์ ์์ต๋๋ค.
ํฌ๋ก์ค ๋ธ๋ผ์ฐ์ ํธํ์ฑ ๋ฌ์ฑ ์ ๋ต
๋ค์์ JavaScript ์ฝ๋๊ฐ ๋ชจ๋ ์ฃผ์ ๋ธ๋ผ์ฐ์ ์์ ์์ ์ ์ผ๋ก ์คํ๋๋๋ก ๋ณด์ฅํ๋ ํฌ๊ด์ ์ธ ์ ๋ต ์ธํธ์ ๋๋ค.
1. ํ์ค ์ค์ ์ฝ๋ ์์ฑ
์น ํ์ค ์ค์๋ ํฌ๋ก์ค ๋ธ๋ผ์ฐ์ ํธํ์ฑ์ ์ด์์ ๋๋ค. ECMAScript ์ฌ์ ๋ฐ W3C ํ์ค์ ์ค์ํ๋ ์ฝ๋๋ฅผ ์์ฑํ๋ฉด ๋ค๋ฅธ ๋ธ๋ผ์ฐ์ ์์ ์ผ๊ด๋ ๋์์ ํ ๊ฐ๋ฅ์ฑ์ ์ต๋ํํ ์ ์์ต๋๋ค.
- ์ต์ JavaScript ๊ตฌ๋ฌธ ์ฌ์ฉ: ์ ์ ํ ๊ฒฝ์ฐ ES6+ ๊ธฐ๋ฅ(์: ํ์ดํ ํจ์, ํด๋์ค, ํ ํ๋ฆฟ ๋ฆฌํฐ๋ด)์ ์ฌ์ฉํ๋, ๊ตฌํ ๋ธ๋ผ์ฐ์ ์ง์์ ์ ์ํ์ญ์์ค(์๋ ํด๋ฆฌํ ์น์ ์ฐธ์กฐ).
- ์ฝ๋ ์ ํจ์ฑ ๊ฒ์ฌ: ๋ฆฐํฐ(์: ESLint) ๋ฐ ์ฝ๋ ํฌ๋งทํฐ(์: Prettier)๋ฅผ ์ฌ์ฉํ์ฌ ์ฝ๋ฉ ํ์ค์ ์ ์ฉํ๊ณ ์ ์ฌ์ ์ค๋ฅ๋ฅผ ์๋ณํฉ๋๋ค.
- ์ ๊ทผ์ฑ ์ง์นจ(WCAG) ์ค์: ์ฝ๋๊ฐ ์ฅ์ ๊ฐ ์๋ ์ฌ์ฉ์๊ฐ ์ก์ธ์คํ ์ ์๋์ง ํ์ธํฉ๋๋ค. ์ด๋ ํฌ๋ก์ค ๋ธ๋ผ์ฐ์ ํธํ์ฑ์ ์ํ ๋ชจ๋ฒ ์ฌ๋ก์ ์ผ์นํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
2. ๊ธฐ๋ฅ ๊ฐ์ง(Modernizr)
(์ ๋ขฐํ ์ ์๋) ๋ธ๋ผ์ฐ์ ์ค๋ํ์ ์์กดํ๊ธฐ๋ณด๋ค๋ ๊ธฐ๋ฅ ๊ฐ์ง๋ฅผ ์ฌ์ฉํ์ฌ ๋ธ๋ผ์ฐ์ ๊ฐ ํน์ ๊ธฐ๋ฅ์ ์ง์ํ๋์ง ์ฌ๋ถ๋ฅผ ํ์ธํ ํ์ ์ฌ์ฉํฉ๋๋ค. Modernizr๋ ์ด ํ๋ก์ธ์ค๋ฅผ ๊ฐ์ํํ๋ ๋๋ฆฌ ์ฌ์ฉ๋๋ JavaScript ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค.
์:
if (Modernizr.geolocation) {
// Browser supports geolocation
navigator.geolocation.getCurrentPosition(function(position) {
// Use the position data
});
} else {
// Browser doesn't support geolocation
alert("Geolocation is not supported in your browser.");
}
Modernizr๋ ๊ธฐ๋ฅ ์ง์์ ๊ธฐ๋ฐ์ผ๋ก `` ์์์ ํด๋์ค๋ฅผ ์ถ๊ฐํ์ฌ CSS ์คํ์ผ์ ์กฐ๊ฑด๋ถ๋ก ์ ์ฉํ ์ ์์ต๋๋ค.
3. ํด๋ฆฌํ ๋ฐ ํธ๋์คํ์ผ๋ฌ(Babel)
ํด๋ฆฌํ์ ๋ธ๋ผ์ฐ์ ์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ง์ํ์ง ์๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ์ฝ๋ ์ค๋ํซ์ ๋๋ค. Babel๊ณผ ๊ฐ์ ํธ๋์คํ์ผ๋ฌ๋ ์ต์ JavaScript ์ฝ๋(ES6+)๋ฅผ ๊ตฌํ ๋ธ๋ผ์ฐ์ ์์ ์ดํดํ ์ ์๋ ์ฝ๋๋ก ๋ณํํฉ๋๋ค.
- ํด๋ฆฌํ: ๊ตฌํ ๋ธ๋ผ์ฐ์ ์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ง์ํ์ง ์๋ `fetch`, `Promise`, `Array.prototype.includes` ๋ฐ ๊ธฐํ ES5/ES6+ ๊ธฐ๋ฅ๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ ํด๋ฆฌํ์ ์ฌ์ฉํฉ๋๋ค. `core-js`์ ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ํฌ๊ด์ ์ธ ํด๋ฆฌํ ์ง์์ ์ ๊ณตํฉ๋๋ค.
- ํธ๋์คํ์ผ๋ฌ: Babel์ ์ฌ์ฉํ๋ฉด ์ต์ JavaScript ์ฝ๋๋ฅผ ์์ฑํ๊ณ ์๋์ผ๋ก ES5๋ก ๋ณํํ์ฌ ๊ตฌํ ๋ธ๋ผ์ฐ์ ์์ ํธํ์ฑ์ ๋ณด์ฅํ ์ ์์ต๋๋ค. ์ง์ํด์ผ ํ๋ ํน์ ๋ธ๋ผ์ฐ์ ๋ฅผ ๋์์ผ๋ก ํ๋๋ก Babel์ ์ ์คํ๊ฒ ๊ตฌ์ฑํฉ๋๋ค. browserlist๋ฅผ ์ฌ์ฉํ์ฌ ๋์ ๋ธ๋ผ์ฐ์ ๋ฅผ ๊ด๋ฆฌํ๋ ๊ฒ์ ๊ณ ๋ คํ์ญ์์ค.
์(Babel):
Babel ์ค์น:
npm install --save-dev @babel/core @babel/cli @babel/preset-env
`.babelrc` ๋๋ `babel.config.js`์์ Babel ๊ตฌ์ฑ:
{
"presets": [["@babel/preset-env", {
"targets": {
"browsers": ["> 0.25%", "not dead"]
}
}]]
}
์ด ๊ตฌ์ฑ์ ์ ์ญ ์ฌ์ฉ๋์ด 0.25%๋ฅผ ์ด๊ณผํ๊ณ ์ฌ์ฉ ์ค์ง๋ ๋ธ๋ผ์ฐ์ ๋ฅผ ์ ์ธํ ๋ธ๋ผ์ฐ์ ๋ฅผ ๋์์ผ๋ก ํฉ๋๋ค.
์ฝ๋ ํธ๋์คํ์ผ:
npx babel src -d dist
4. ๋ธ๋ผ์ฐ์ ๋ณ CSS ํต(์ฃผ์ํด์ ์ฌ์ฉ)
์ผ๋ฐ์ ์ผ๋ก ๊ถ์ฅ๋์ง๋ ์์ง๋ง ๋ ๋๋ง ์ฐจ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ ํ๋ ๊ฒฝ์ฐ์ ๋ธ๋ผ์ฐ์ ๋ณ CSS ํต์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ฐ๋ฅํ ํ ๊ธฐ๋ฅ ๊ฐ์ง ๋ฐ ํด๋ฆฌํ์ ์ฐ์ ์ํ์ญ์์ค.
- ์กฐ๊ฑด๋ถ ์ฃผ์(IE๋ณ): ์ด๋ฅผ ํตํด ํน์ ๋ฒ์ ์ Internet Explorer์ ๋ํด์๋ง CSS ๋๋ JavaScript ์ฝ๋๋ฅผ ํฌํจํ ์ ์์ต๋๋ค.
- CSS ๋ฒค๋ ์ ๋์ฌ: ์คํ์ ๋๋ ๋นํ์ค CSS ์์ฑ์ ๋ฒค๋ ์ ๋์ฌ(์: `-webkit-`, `-moz-`, `-ms-`)๋ฅผ ์ฌ์ฉํ๋, ํ์ค ์์ฑ๋ ํฌํจํด์ผ ํฉ๋๋ค.
- JavaScript ๋ธ๋ผ์ฐ์ ๊ฐ์ง(๊ฐ๋ฅํ๋ฉด ํผํ์ญ์์ค): `navigator.userAgent`๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์ผ๋ฐ์ ์ผ๋ก ์ ๋ขฐํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ ๋์ ์ผ๋ก ํ์ํ ๊ฒฝ์ฐ ๊ทนํ ์ฃผ์ํด์ ์ฒ๋ฆฌํ๊ณ ๋์ฒด ์๋ฃจ์ ์ ์ ๊ณตํ์ญ์์ค.
์(์กฐ๊ฑด๋ถ ์ฃผ์):
<!--[if IE]> <link rel="stylesheet" href="ie.css"> <![endif]-->
์ด CSS ํ์ผ์ Internet Explorer์์๋ง ์ ์ฉ๋ฉ๋๋ค.
5. ๋ธ๋ผ์ฐ์ ๋ฐ ์ฅ์น ์ ์ฒด์์ ์ฒ ์ ํ ํ ์คํธ
ํ ์คํ ์ ํฌ๋ก์ค ๋ธ๋ผ์ฐ์ ํธํ์ฑ ๋ฌธ์ ๋ฅผ ์๋ณํ๊ณ ํด๊ฒฐํ๋ ๋ฐ ๋งค์ฐ ์ค์ํฉ๋๋ค. ๋ค์์ ํฌํจํ๋ ํฌ๊ด์ ์ธ ํ ์คํ ์ ๋ต์ ๊ตฌํํฉ๋๋ค.
- ์๋ ํ ์คํ : ๋ชจ๋ ์ฃผ์ ๋ธ๋ผ์ฐ์ (Chrome, Firefox, Safari, Edge, Internet Explorer) ๋ฐ ์ด์ ์ฒด์ (Windows, macOS, Linux)์์ ์น์ฌ์ดํธ๋ฅผ ์๋์ผ๋ก ํ ์คํธํฉ๋๋ค.
- ์๋ ํ ์คํ : ์๋ ํ ์คํ ๋๊ตฌ(์: Selenium, Cypress, Puppeteer)๋ฅผ ์ฌ์ฉํ์ฌ ๋ค๋ฅธ ๋ธ๋ผ์ฐ์ ๋ฐ ์ฅ์น์์ ํ ์คํธ๋ฅผ ์คํํฉ๋๋ค.
- ์ค์ ์ฅ์น ํ ์คํ : ์ค์ ์ฅ์น(์ค๋งํธํฐ, ํ๋ธ๋ฆฟ)์์ ํ ์คํธํ์ฌ ๋ฐ์์ฑ์ ๋ณด์ฅํ๊ณ ๋ค์ํ ํ๋ฉด ํฌ๊ธฐ ๋ฐ ํด์๋์์ ํธํ์ฑ์ ํ์ธํฉ๋๋ค. BrowserStack ๋ฐ Sauce Labs์ ๊ฐ์ ์๋น์ค๋ ๊ด๋ฒ์ํ ๊ฐ์ ๋ฐ ์ค์ ์ฅ์น์ ๋ํ ์ก์ธ์ค๋ฅผ ์ ๊ณตํฉ๋๋ค.
- ์ฌ์ฉ์ ํ ์คํ : ์ค์ ์ฌ์ฉ์๋ก๋ถํฐ ํผ๋๋ฐฑ์ ์์งํ์ฌ ์ฌ์ฉ์ฑ ๋ฌธ์ ๋ฐ ํฌ๋ก์ค ๋ธ๋ผ์ฐ์ ํธํ์ฑ ๋ฌธ์ ๋ฅผ ์๋ณํฉ๋๋ค.
๊ตฌํ ๋ธ๋ผ์ฐ์ ๋ฐ ๋ ์ผ๋ฐ์ ์ธ ์ฅ์น์์ ํ ์คํ ํ๋ ๋ฐ ํนํ ์ฃผ์ํ์ญ์์ค. ์ด๋ฌํ ์ฅ์น์์ ํธํ์ฑ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ๊ฐ๋ฅ์ฑ์ด ๊ฐ์ฅ ๋์ต๋๋ค.
6. ์ ์ง์ ํฅ์
์ ์ง์ ํฅ์์ ๋ชจ๋ ์ฌ์ฉ์์๊ฒ ๊ธฐ๋ณธ ํ๊ฒฝ์ ์ ๊ณตํ๋ ๋ฐ ์ค์ ์ ๋๋ ์น ๊ฐ๋ฐ ์ฒ ํ์ด๋ฉฐ, ์ต์ ๋ธ๋ผ์ฐ์ ๋ฐ ์ฅ์น๋ฅผ ์ฌ์ฉํ๋ ์ฌ์ฉ์๋ฅผ ์ํด ํ๊ฒฝ์ ํฅ์์ํต๋๋ค.
- ๊ฒฌ๊ณ ํ ํ ๋๋ก ์์: ๋ชจ๋ ๋ธ๋ผ์ฐ์ ์์ ์๋ํ๋ ์๋งจํฑ HTML ๋ฐ CSS๋ก ์น์ฌ์ดํธ๋ฅผ ๊ตฌ์ถํฉ๋๋ค.
- JavaScript๋ก ํฅ์: JavaScript๋ฅผ ์ฌ์ฉํ์ฌ ๋ํํ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๊ณ ์ฌ์ฉ์ ๊ฒฝํ์ ํฅ์์ํค์ง๋ง JavaScript๊ฐ ๋นํ์ฑํ๋ ๊ฒฝ์ฐ์๋ ์น์ฌ์ดํธ๊ฐ ๊ณ์ ์๋ํ๋์ง ํ์ธํฉ๋๋ค.
- ์ฐ์ํ ์ ํ: ๊ตฌํ ๋ธ๋ผ์ฐ์ ์์ ์ ์์ ์ผ๋ก ์ ํ๋๋๋ก ์น์ฌ์ดํธ๋ฅผ ๋์์ธํ์ฌ ์ผ๋ถ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๋ ๊ฒฝ์ฐ์๋ ์ฌ์ฉ ๊ฐ๋ฅํ ํ๊ฒฝ์ ์ ๊ณตํฉ๋๋ค.
7. ํฌ๋ก์ค ๋ธ๋ผ์ฐ์ JavaScript ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ
๋ง์ JavaScript ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ํฌ๋ก์ค ๋ธ๋ผ์ฐ์ ํธํ์ฑ์ ์ํด ์ค๊ณ๋์์ผ๋ฉฐ ๋ธ๋ผ์ฐ์ ์ฐจ์ด์ ๋ณต์ก์ฑ์ ์ถ์ํํฉ๋๋ค. ์ธ๊ธฐ ์๋ ์ต์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- jQuery: ๊ธฐ๋ณธ Javascript์ ๋ฐ์ ์ผ๋ก ๊ณผ๊ฑฐ๋ณด๋ค ๋ ์ค์ํด์ก์ง๋ง, jQuery๋ ์ฌ์ ํ DOM ์กฐ์ ๋ฐ ์ด๋ฒคํธ ์ฒ๋ฆฌ์ ๊ด๋ จ๋ ๋ง์ ๋ธ๋ผ์ฐ์ ๋ถ์ผ์น๋ฅผ ์ ๊ทํํฉ๋๋ค.
- React, Angular, Vue.js: ์ด๋ฌํ ํ๋ ์์ํฌ๋ ์ผ๊ด๋ ์ถ์ํ ๊ณ์ธต์ ์ ๊ณตํ์ฌ ๋ง์ ํฌ๋ก์ค ๋ธ๋ผ์ฐ์ ํธํ์ฑ ๋ฌธ์ ๋ฅผ ๋ด๋ถ์ ์ผ๋ก ์ฒ๋ฆฌํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ฌ์ ํ ๋ค๋ฅธ ๋ธ๋ผ์ฐ์ ์์ ๊ตฌ์ฑ ์์๋ฅผ ํ ์คํธํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
8. ์ผ๋ฐ์ ์ธ ํฌ๋ก์ค ๋ธ๋ผ์ฐ์ ๋ฌธ์ ํด๊ฒฐ
์ผ๋ฐ์ ์ธ ํฌ๋ก์ค ๋ธ๋ผ์ฐ์ ํธํ์ฑ ๋ฌธ์ ์ ์ ์ํ๊ณ ์ ์ ํ ์๋ฃจ์ ์ ๊ตฌํํฉ๋๋ค.
- ๋ฐ์ค ๋ชจ๋ธ ์ฐจ์ด(IE): Internet Explorer์ ์ด์ ๋ฐ์ค ๋ชจ๋ธ ํด์(ํธํ ๋ชจ๋)์ผ๋ก ์ธํด ๋ ์ด์์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. CSS ์ฌ์ค์ (์: Normalize.css)์ ์ฌ์ฉํ๊ณ ์ ํจํ ๋ฌธ์ ์ ํ์ ํฌํจํ์ฌ ๋ฌธ์๊ฐ ํ์ค ๋ชจ๋์ ์๋์ง ํ์ธํฉ๋๋ค.
- ์ด๋ฒคํธ ์ฒ๋ฆฌ ์ฐจ์ด: ์ด๋ฒคํธ ์ฒ๋ฆฌ๋ ๋ธ๋ผ์ฐ์ ๋ง๋ค ์ฝ๊ฐ ๋ค๋ฅผ ์ ์์ต๋๋ค. ํฌ๋ก์ค ๋ธ๋ผ์ฐ์ ์ด๋ฒคํธ ๋ฆฌ์ค๋ ๋๋ jQuery์ ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฒคํธ ์ฒ๋ฆฌ๋ฅผ ์ ๊ทํํฉ๋๋ค.
- AJAX/XMLHttpRequest: ์ด์ ๋ฒ์ ์ Internet Explorer๋ AJAX ์์ฒญ์ ActiveXObject๋ฅผ ์ฌ์ฉํฉ๋๋ค. ํฌ๋ก์ค ๋ธ๋ผ์ฐ์ AJAX ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋๋ `fetch` API(๊ตฌํ ๋ธ๋ผ์ฐ์ ์ฉ ํด๋ฆฌํ ํฌํจ)๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- JavaScript ์ค๋ฅ: JavaScript ์ค๋ฅ ์ถ์ ๊ธฐ(์: Sentry, Bugsnag)๋ฅผ ์ฌ์ฉํ์ฌ ์น์ฌ์ดํธ์์ JavaScript ์ค๋ฅ๋ฅผ ๋ชจ๋ํฐ๋งํ๊ณ ํฌ๋ก์ค ๋ธ๋ผ์ฐ์ ํธํ์ฑ ๋ฌธ์ ๋ฅผ ์๋ณํฉ๋๋ค.
ํฌ๋ก์ค ๋ธ๋ผ์ฐ์ ํธํ์ฑ ์ ์ง๋ฅผ ์ํ ๋ชจ๋ฒ ์ฌ๋ก
ํฌ๋ก์ค ๋ธ๋ผ์ฐ์ ํธํ์ฑ์ ์ ์งํ๋ ๊ฒ์ ์ง์์ ์ธ ํ๋ก์ธ์ค์ ๋๋ค. ๋ค์ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๋ฐ๋ผ ์น์ฌ์ดํธ๊ฐ ์ ๋ธ๋ผ์ฐ์ ๋ฐ ์ฅ์น์ ํธํ๋๋์ง ํ์ธํฉ๋๋ค.
- ์น ํ์ค์ ๋ํ ์ต์ ์ ๋ณด ์ ์ง: ์๋ก์ด ์น ํ์ค ๋ฐ ๋ธ๋ผ์ฐ์ ์ ๋ฐ์ดํธ์ ๋ํ ์ต์ ์ ๋ณด๋ฅผ ์ ์งํฉ๋๋ค.
- ์๋ ํ ์คํ ์ฌ์ฉ: ํ ์คํ ํ๋ก์ธ์ค๋ฅผ ์๋ํํ์ฌ ํฌ๋ก์ค ๋ธ๋ผ์ฐ์ ํธํ์ฑ ๋ฌธ์ ๋ฅผ ์ด๊ธฐ์ ํ์ ํฉ๋๋ค.
- ์น์ฌ์ดํธ์์ ์ค๋ฅ ๋ชจ๋ํฐ๋ง: JavaScript ์ค๋ฅ ์ถ์ ๊ธฐ๋ฅผ ์ฌ์ฉํ์ฌ ์ค๋ฅ๋ฅผ ์ ์ํ๊ฒ ์๋ณํ๊ณ ํด๊ฒฐํฉ๋๋ค.
- ์ฌ์ฉ์ ํผ๋๋ฐฑ ์์ง: ์ฌ์ฉ์๊ฐ ๋ฐ์ํ๋ ๋ชจ๋ ๋ฌธ์ ๋ฅผ ๋ณด๊ณ ํ๋๋ก ๊ถ์ฅํฉ๋๋ค.
- ์ ๊ธฐ์ ์ผ๋ก ์ฝ๋ ์ ๋ฐ์ดํธ: ์ฝ๋๋ฅผ ์ต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ ํ๋ ์์ํฌ๋ก ์ต์ ์ํ๋ก ์ ์งํฉ๋๋ค.
๋๊ตฌ ๋ฐ ๋ฆฌ์์ค
๋ค์ ๋๊ตฌ ๋ฐ ๋ฆฌ์์ค๋ฅผ ํ์ฉํ์ฌ ํฌ๋ก์ค ๋ธ๋ผ์ฐ์ JavaScript ๊ฐ๋ฐ์ ๊ฐ์ํํฉ๋๋ค.
- BrowserStack: ๊ด๋ฒ์ํ ๋ธ๋ผ์ฐ์ ๋ฐ ์ฅ์น์ ๋ํ ์ก์ธ์ค๋ฅผ ์ ๊ณตํ๋ ํด๋ผ์ฐ๋ ๊ธฐ๋ฐ ํ ์คํ ํ๋ซํผ์ ๋๋ค.
- Sauce Labs: BrowserStack๊ณผ ์ ์ฌํ ๊ธฐ๋ฅ์ ๊ฐ์ถ ๋ ๋ค๋ฅธ ํด๋ผ์ฐ๋ ๊ธฐ๋ฐ ํ ์คํ ํ๋ซํผ์ ๋๋ค.
- Modernizr: ๊ธฐ๋ฅ ๊ฐ์ง๋ฅผ ์ํ JavaScript ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค.
- Babel: JavaScript ํธ๋์คํ์ผ๋ฌ์ ๋๋ค.
- ESLint: JavaScript ๋ฆฐํฐ์ ๋๋ค.
- Prettier: ์ฝ๋ ํฌ๋งทํฐ์ ๋๋ค.
- Can I use...: ์น ๊ธฐ์ ์ ๋ํ ๋ธ๋ผ์ฐ์ ์ง์์ ๋ํ ์ต์ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ ์น์ฌ์ดํธ์ ๋๋ค.
- MDN Web Docs: ์น ๊ฐ๋ฐ ๋ฌธ์์ ๋ํ ํฌ๊ด์ ์ธ ๋ฆฌ์์ค์ ๋๋ค.
์ค์ ์ฌ๋ก ๋ฐ ์ฌ๋ก ์ฐ๊ตฌ
ํฌ๋ก์ค ๋ธ๋ผ์ฐ์ ํธํ์ฑ์ด ์ค์ํ ์ค์ ์๋๋ฆฌ์ค๋ฅผ ๊ณ ๋ คํ์ญ์์ค.
- ์ ์ ์๊ฑฐ๋ ์น์ฌ์ดํธ: ๋ชจ๋ ๋ธ๋ผ์ฐ์ ์์ ๊ฒฐ์ ํ๋ก์ธ์ค๊ฐ ์ํํ๊ฒ ์๋ํ๋์ง ํ์ธํ๋ ๊ฒ์ ํ๋งค ์ ํ์ ๋งค์ฐ ์ค์ํฉ๋๋ค. ๋ ์ผ์ ์ฌ์ฉ์๊ฐ ์ ํ์ ๊ตฌ๋งคํ๋ ค๊ณ ํ์ง๋ง Safari ๋ธ๋ผ์ฐ์ ์์ ๊ฒฐ์ ๊ฒ์ดํธ์จ์ด๊ฐ ์ ๋๋ก ๋ก๋๋์ง ์๋๋ค๊ณ ์์ํด ๋ณด์ญ์์ค.
- ์จ๋ผ์ธ ๋ฑ ํน ์ ํ๋ฆฌ์ผ์ด์ : ๋ณด์๊ณผ ์์ ์ฑ์ด ๊ฐ์ฅ ์ค์ํฉ๋๋ค. ํฌ๋ก์ค ๋ธ๋ผ์ฐ์ ํ ์คํ ์ ์ทจ์ฝ์ ์ ๋ฐฉ์งํ๊ณ ๋ชจ๋ ์ฌ์ฉ์๊ฐ ์์น์ ๊ด๊ณ์์ด ๊ณ์ ์ ์์ ํ๊ฒ ์ก์ธ์คํ ์ ์๋๋ก ํ๋ ๋ฐ ํ์์ ์ ๋๋ค(์: ์๊ณจ ์ธ๋์ ์ฌ์ฉ์๊ฐ ๊ตฌํ Firefox ๋ฒ์ ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ).
- ์ ๋ถ ์น์ฌ์ดํธ: ์ ๊ทผ์ฑ์ ์ฃผ์ ์๊ตฌ ์ฌํญ์ ๋๋ค. ์ ๋ถ ์น์ฌ์ดํธ๋ ๋ณด์กฐ ๊ธฐ์ ๋ฐ ๊ตฌํ ๋ธ๋ผ์ฐ์ ๋ฅผ ์ฌ์ฉํ๋ ์ฌ๋๋ค์ ํฌํจํ์ฌ ๋ชจ๋ ์๋ฏผ์ด ์ก์ธ์คํ ์ ์์ด์ผ ํฉ๋๋ค. ์บ๋๋ค์ ์ฌํ ์๋น์ค๋ฅผ ์ ๊ณตํ๋ ์ ๋ถ ์น์ฌ์ดํธ๋ ๋ชจ๋ ์ธ๊ธฐ ์๋ ๋ธ๋ผ์ฐ์ ์์ ์๋ํด์ผ ํฉ๋๋ค.
- ๊ต์ก ํ๋ซํผ: ํ์๋ค์ ์ฌ์ฉํ๋ ๋ธ๋ผ์ฐ์ ์ ๊ด๊ณ์์ด ๊ต์ก ๋ฆฌ์์ค์ ์ก์ธ์คํ ์ ์์ด์ผ ํฉ๋๋ค. ์ผ๊ด๋ ๊ฒฝํ์ ๋ณด์ฅํ๋ ๊ฒ์ ํฌ๊ด์ ์ธ ํ์ต์ ์ค์ํฉ๋๋ค. ์จ๋ผ์ธ ๊ณผ์ ์ Moodle์ ์ฌ์ฉํ๋ ์ผ๋ณธ์ ๋ํ์ ์น์ฌ์ดํธ๊ฐ ๋ค์ํ ์ฅ์น์์ ์๋ํ๋์ง ํ์ธํด์ผ ํฉ๋๋ค.
๊ฒฐ๋ก
ํฌ๋ก์ค ๋ธ๋ผ์ฐ์ JavaScript ๊ฐ๋ฐ์ ๋ชจ๋ ์น ๊ฐ๋ฐ์์๊ฒ ํ์์ ์ธ ๊ธฐ์ ์ ๋๋ค. ์ด ๊ฐ์ด๋์ ์ค๋ช ๋ ์ ๋ต ๋ฐ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๋ฐ๋ฅด๋ฉด ๋ชจ๋ ์ฃผ์ ๋ธ๋ผ์ฐ์ ๋ฐ ์ฅ์น์์ ์ผ๊ด๋๊ณ ์์ ์ ์ธ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค ์ ์์ต๋๋ค. ํ์ค ์ค์, ๊ธฐ๋ฅ ๊ฐ์ง ๋ฐ ์ฒ ์ ํ ํ ์คํ ์ ์ฐ์ ์ํ๋ ๊ฒ์ ์์ง ๋ง์ญ์์ค. ํฌ๋ก์ค ๋ธ๋ผ์ฐ์ ํธํ์ฑ์ ๋ํ ์ฌ์ ์๋ฐฉ์ ์ ๊ทผ ๋ฐฉ์์ ์ฑํํ๋ฉด ์น์ฌ์ดํธ๊ฐ ์ต๋ํ ๊ด๋ฒ์ํ ์ ์ฌ ๊ณ ๊ฐ์๊ฒ ๋๋ฌํ๊ณ ์ ์ฌ๋ ฅ์ ์ต๋ํ ๋ฐํํ ์ ์์ต๋๋ค. ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ํ ์์กด๋๊ฐ ์ ์ ๋์์ง๊ณ ์์ผ๋ฏ๋ก ๋ชจ๋ ์ฌ๋, ๋ชจ๋ ๊ณณ์์ ์๋ํ๋์ง ํ์ธํ๋ ๊ฒ์ด ๊ทธ ์ด๋ ๋๋ณด๋ค ์ค์ํฉ๋๋ค.