์ ์ ํ IDE์ ๋๊ตฌ๋ก JavaScript ๊ฐ๋ฐ ์์ฐ์ฑ์ ๊ทน๋ํํ์ธ์. ์ด ๊ฐ์ด๋์์๋ IDE ํตํฉ, ํ์ ํ๋ฌ๊ทธ์ธ, ํจ์จ์ ์ธ ์ฝ๋ฉ, ๋๋ฒ๊น ๋ฐ ํ ์คํ ์ ๋ต์ ์ดํด๋ด ๋๋ค.
JavaScript ๊ฐ๋ฐ ๋๊ตฌ: IDE ํตํฉ ๋ ์์ฐ์ฑ ํฅ์
์ญ๋์ ์ธ JavaScript ๊ฐ๋ฐ ์ธ๊ณ์์ ์ฌ๋ฐ๋ฅธ ๋๊ตฌ๋ฅผ ์ ํํ๋ ๊ฒ์ ์์ฐ์ฑ์ ๋์ด๊ณ ๊ณ ํ์ง ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋๋ ๋ฐ ๋งค์ฐ ์ค์ํฉ๋๋ค. ์ด ๊ฐ์ด๋์์๋ IDE(ํตํฉ ๊ฐ๋ฐ ํ๊ฒฝ)์ ์ค์ํ ์ญํ ๊ณผ ๋ค์ํ ๋๊ตฌ์์ ํตํฉ์ด ์ํฌํ๋ก์ฐ๋ฅผ ์ด๋ป๊ฒ ํฌ๊ฒ ํฅ์์ํฌ ์ ์๋์ง ์์ธํ ์ค๋ช ํฉ๋๋ค. ์๋ จ๋ ๊ฐ๋ฐ์์ด๋ JavaScript ์ฌ์ ์ ์์ํ๋ ์ฌ๋์ด๋ ์ฌ์ฉ ๊ฐ๋ฅํ ๋๊ตฌ์ ํด๋น ํตํฉ ๊ธฐ๋ฅ์ ํ๊ฒฝ์ ์ดํดํ๋ ๊ฒ์ ์ฑ๊ณต์ ๋งค์ฐ ์ค์ํฉ๋๋ค.
JavaScript ๊ฐ๋ฐ์ ์ํด IDE๋ฅผ ์ ํํ๋ ์ด์ ๋ ๋ฌด์์ ๋๊น?
IDE๋ ์ฝ๋๋ฅผ ์์ฑ, ํ ์คํธ ๋ฐ ๋๋ฒ๊น ํ๊ธฐ ์ํ ํฌ๊ด์ ์ธ ํ๊ฒฝ์ ์ ๊ณตํฉ๋๋ค. ๊ฐ๋จํ ํ ์คํธ ํธ์ง๊ธฐ์ ๋ฌ๋ฆฌ IDE๋ ๋ค์๊ณผ ๊ฐ์ ๊ณ ๊ธ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
- ์ฝ๋ ์์ฑ(IntelliSense): ์ฝ๋๋ฅผ ์ ๋ ฅํ ๋ ์ฝ๋ ์กฐ๊ฐ, ํจ์ ์ด๋ฆ ๋ฐ ๋ณ์ ์ด๋ฆ์ ์ ์ํ์ฌ ์ค๋ฅ๋ฅผ ์ค์ด๊ณ ์๊ฐ์ ์ ์ฝํฉ๋๋ค.
- ๊ตฌ๋ฌธ ๊ฐ์กฐ ํ์: ์ฝ๋ ์์์ ์์์ ์ง์ ํ์ฌ ๊ฐ๋ ์ฑ๊ณผ ์ค๋ฅ ๊ฐ์ง๋ฅผ ๊ฐ์ ํฉ๋๋ค.
- ๋๋ฒ๊น ๋๊ตฌ: ์ฝ๋๋ฅผ ๋จ๊ณ๋ณ๋ก ์คํํ๊ณ , ์ค๋จ์ ์ ์ค์ ํ๊ณ , ๋ณ์๋ฅผ ๊ฒ์ฌํ์ฌ ๋ฌธ์ ๋ฅผ ์๋ณํ๊ณ ์์ ํ ์ ์์ต๋๋ค.
- ๋ฆฌํฉํ ๋ง ๋๊ตฌ: ์ฝ๋ ์ฌ๊ตฌ์ฑ, ์ด๋ฆ ๋ฐ๊พธ๊ธฐ ๋ฐ ์ถ์ถ์ ์ฉ์ดํ๊ฒ ํ์ฌ ์ ์ง ๊ด๋ฆฌ์ฑ์ ๊ฐ์ ํฉ๋๋ค.
- ๋ฒ์ ์ ์ด ์์คํ ๊ณผ์ ํตํฉ: Git ๋ฐ ๊ธฐํ ๋ฒ์ ์ ์ด ์์คํ ๊ณผ ์ํํ๊ฒ ํตํฉ๋์ด ํ์ ๊ฐ๋ฐ์ด ๊ฐ๋ฅํฉ๋๋ค.
- ๋น๋ ์๋ํ: ์ปดํ์ผ, ๋ฒ๋ค๋ง ๋ฐ ์ฝ๋ ๋ฐฐํฌ์ ๊ฐ์ ์์ ์ ์๋ํํฉ๋๋ค.
- ํ ์คํ ํ๋ ์์ํฌ ํตํฉ: IDE์์ ์ง์ ๋จ์ ํ ์คํธ๋ฅผ ์คํํ๊ณ ๊ด๋ฆฌํ๋ ๊ฒ์ ์ง์ํฉ๋๋ค.
์ธ๊ธฐ ์๋ JavaScript IDE
๋ช ๊ฐ์ง ํ๋ฅญํ IDE๊ฐ JavaScript ๊ฐ๋ฐ์๋ฅผ ์ํด ์ ๊ณต๋๋ฉฐ ๊ฐ IDE์๋ ๊ณ ์ ํ ๊ฐ์ ๊ณผ ๊ธฐ๋ฅ์ด ์์ต๋๋ค. ๊ฐ์ฅ ์ธ๊ธฐ ์๋ ์ต์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
1. Visual Studio Code(VS Code)
VS Code๋ Microsoft์์ ๊ฐ๋ฐํ ๋ฌด๋ฃ ์คํ ์์ค์ด๋ฉฐ ์ฌ์ฉ์ ์ ์๊ฐ ๊ฐ๋ฅํ IDE์ ๋๋ค. ๊ด๋ฒ์ํ ํ์ฅ ์ํ๊ณ๋ก ์ ๋ช ํ์ฌ ๋ค์ํ JavaScript ํ๋ ์์ํฌ ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ ์ฉํ ์ ์์ต๋๋ค. TypeScript ๋ฐ JavaScript ๋๋ฒ๊น ์ ๋ํ ๊ธฐ๋ณธ ์ง์๋ ์ต๊ณ ์์ค์ ๋๋ค.
์ฃผ์ ๊ธฐ๋ฅ:
- ๊ด๋ฒ์ํ ํ์ฅ ๋ง์ผํ๋ ์ด์ค: ๋ฆฐํ , ํฌ๋งทํ , ์ฝ๋ ์์ฑ ๋ฑ์ ์ํ ๋ค์ํ ํ์ฅ์ ์ ๊ณตํฉ๋๋ค.
- ๋ด์ฅ ๋๋ฒ๊ฑฐ: Node.js, Chrome, Edge ๋ฐ ๊ธฐํ JavaScript ํ๊ฒฝ ๋๋ฒ๊น ์ ์ง์ํฉ๋๋ค.
- Git ํตํฉ: ๋ฒ์ ์ ์ด๋ฅผ ์ํด Git๊ณผ ์ํํ๊ฒ ํตํฉ๋ฉ๋๋ค.
- ํตํฉ ํฐ๋ฏธ๋: IDE ๋ด์์ ์ง์ ๋ช ๋ น์ค ๋๊ตฌ๋ฅผ ์คํํ ์ ์์ต๋๋ค.
- TypeScript ์ง์: ํ์ ๊ฒ์ฌ ๋ฐ ์ฝ๋ ์์ฑ์ ํฌํจํ์ฌ TypeScript ๊ฐ๋ฐ์ ๋ํ ํ๋ฅญํ ์ง์์ ์ ๊ณตํฉ๋๋ค.
์์ : VS Code์์ ESLint ์ฌ์ฉ:
VS Code์์ JavaScript ์ฝ๋ ๋ฆฐํ ์ ์ํด ESLint๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ๋ง์ผํ๋ ์ด์ค์์ ESLint ํ์ฅ์ ์ค์นํ์ญ์์ค. ์ค์น ๋ฐ ๊ตฌ์ฑ ํ(์ผ๋ฐ์ ์ผ๋ก ํ๋ก์ ํธ์ `.eslintrc.js` ํ์ผ ์ฌ์ฉ) VS Code๋ ์ ์ฌ์ ์ธ ์ฝ๋ ์ค๋ฅ์ ์คํ์ผ ๋ฌธ์ ๋ฅผ ์ ๋ ฅํ ๋ ์๋์ผ๋ก ๊ฐ์กฐ ํ์ํฉ๋๋ค.
2. WebStorm
WebStorm์ JetBrains์์ ๊ฐ๋ฐํ ๊ฐ๋ ฅํ ์์ฉ IDE์ ๋๋ค. ๊ณ ๊ธ ์ฝ๋ ์์ฑ, ๋ฆฌํฉํ ๋ง ๋๊ตฌ, ๋ค์ํ JavaScript ํ๋ ์์ํฌ ์ง์์ ํฌํจํ์ฌ ์น ๊ฐ๋ฐ์ ์ํด ํน๋ณํ ์ค๊ณ๋ ํฌ๊ด์ ์ธ ๊ธฐ๋ฅ ์ธํธ๋ฅผ ์ ๊ณตํฉ๋๋ค.
์ฃผ์ ๊ธฐ๋ฅ:
- ์ง๋ฅํ ์ฝ๋ ์์ฑ: ๋งค์ฐ ์ ํํ๊ณ ์ํฉ์ ๋ง๋ ์ฝ๋ ์ ์์ ์ ๊ณตํฉ๋๋ค.
- ๊ณ ๊ธ ๋ฆฌํฉํ ๋ง ๋๊ตฌ: ์ฝ๋ ํ์ง์ ๊ฐ์ ํ๊ธฐ ์ํ ๊ด๋ฒ์ํ ๋ฆฌํฉํ ๋ง ์ต์ ์ ์ ๊ณตํฉ๋๋ค.
- JavaScript ํ๋ ์์ํฌ ์ง์: React, Angular ๋ฐ Vue.js์ ๊ฐ์ ์ธ๊ธฐ ์๋ ํ๋ ์์ํฌ์ ๋ํ ์ ์ฉ ์ง์์ ์ ๊ณตํฉ๋๋ค.
- ๋ด์ฅ ๋๋ฒ๊ฑฐ: Node.js, Chrome ๋ฐ ๊ธฐํ JavaScript ํ๊ฒฝ ๋๋ฒ๊น ์ ์ง์ํฉ๋๋ค.
- ํ ์คํ ํ๋ ์์ํฌ ํตํฉ: Jest ๋ฐ Mocha์ ๊ฐ์ ํ ์คํ ํ๋ ์์ํฌ์ ์ํํ๊ฒ ํตํฉ๋ฉ๋๋ค.
์์ : WebStorm์ผ๋ก ๋๋ฒ๊น :
WebStorm์ ๊ฐ๋ ฅํ ๋๋ฒ๊น ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ฝ๋์ ์ค๋จ์ ์ ์ค์ ํ๊ณ , ์คํ์ ๋จ๊ณ๋ณ๋ก ์งํํ๊ณ , ๋ณ์๋ฅผ ์ค์๊ฐ์ผ๋ก ๊ฒ์ฌํ ์ ์์ต๋๋ค. ์ด๋ ์คํ ํ๋ฆ์ ์ถ์ ํ๋ ๊ฒ์ด ์ค์ํ ๋ณต์กํ JavaScript ์ ํ๋ฆฌ์ผ์ด์ ์ ํนํ ์ ์ฉํฉ๋๋ค.
3. Sublime Text
Sublime Text๋ ํ๋ฌ๊ทธ์ธ์ ๋์์ผ๋ก ๊ฐ๋ ฅํ JavaScript IDE๋ก ๋ณํํ ์ ์๋ ๊ฐ๋ณ๊ณ ์ฌ์ฉ์ ์ ์๊ฐ ๊ฐ๋ฅํ ํ ์คํธ ํธ์ง๊ธฐ์ ๋๋ค. ์๋, ์ฑ๋ฅ ๋ฐ ๊ด๋ฒ์ํ ์ปค๋ฎค๋ํฐ ์ง์์ผ๋ก ์ ๋ช ํฉ๋๋ค.
์ฃผ์ ๊ธฐ๋ฅ:
- Package Control: ํ๋ฌ๊ทธ์ธ ์ค์น ๋ฐ ๊ด๋ฆฌ๋ฅผ ๋จ์ํํ๋ ํจํค์ง ๊ด๋ฆฌ์์ ๋๋ค.
- ๋ค์ค ์ ํ: ์ฌ๋ฌ ์ค์ ์ฝ๋๋ฅผ ๋์์ ์ ํํ๊ณ ํธ์งํ ์ ์์ต๋๋ค.
- Goto Anything: ํ์ผ, ๊ธฐํธ ๋ฐ ์ฝ๋ ์ค๋ก ๋น ๋ฅด๊ฒ ์ด๋ํ ์ ์์ต๋๋ค.
- ๋ช ๋ น ํ๋ ํธ: ๊ด๋ฒ์ํ ๋ช ๋ น ๋ฐ ์ค์ ์ ๋ํ ์ก์ธ์ค๋ฅผ ์ ๊ณตํฉ๋๋ค.
- ๊ตฌ๋ฌธ ๊ฐ์กฐ ํ์: JavaScript๋ฅผ ํฌํจํ ๋ค์ํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋ํ ๊ตฌ๋ฌธ ๊ฐ์กฐ ํ์๋ฅผ ์ง์ํฉ๋๋ค.
์์ : Sublime Text์ JavaScript ๋ฆฐํฐ ์ค์น:
Package Control์ ์ฌ์ฉํ์ฌ Sublime Text์ ๋ํ JSHint ๋๋ ESLint์ ๊ฐ์ ๋ฆฐํฐ๋ฅผ ์ค์นํ ์ ์์ต๋๋ค. ์ค์น ๋ฐ ๊ตฌ์ฑ ํ ๋ฆฐํฐ๋ ํ์ผ์ ์ ์ฅํ ๋ ์ค๋ฅ ๋ฐ ์คํ์ผ ๋ฌธ์ ์ ๋ํด JavaScript ์ฝ๋๋ฅผ ์๋์ผ๋ก ํ์ธํฉ๋๋ค.
4. Atom
Atom์ GitHub์์ ๊ฐ๋ฐํ ๋ฌด๋ฃ ์คํ ์์ค์ด๋ฉฐ ์ฌ์ฉ์ ์ ์๊ฐ ๊ฐ๋ฅํ ํ ์คํธ ํธ์ง๊ธฐ์ ๋๋ค. ์ ์ฐ์ฑ ๋ฐ ํ์ฅ์ฑ ์ธก๋ฉด์์ Sublime Text์ ์ ์ฌํฉ๋๋ค. Atom์ ์น ๊ธฐ์ (HTML, CSS ๋ฐ JavaScript)์ ์ฌ์ฉํ์ฌ ๊ตฌ์ถ๋์ด ์ฌ์ฉ์ ์ ์ํ๊ณ ํ์ฅํ๊ธฐ๊ฐ ๋น๊ต์ ์ฝ์ต๋๋ค.
์ฃผ์ ๊ธฐ๋ฅ:
- ํจํค์ง ๊ด๋ฆฌ์: Atom์ ๊ธฐ๋ฅ์ ํ์ฅํ๊ธฐ ์ํ ํจํค์ง๋ฅผ ์ค์นํ๊ณ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
- ๋ด์ฅ Git ํตํฉ: ๋ฒ์ ์ ์ด๋ฅผ ์ํด Git๊ณผ ์ํํ๊ฒ ํตํฉ๋ฉ๋๋ค.
- Teletype: ๋ค๋ฅธ ๊ฐ๋ฐ์์ ์ค์๊ฐ์ผ๋ก ํ์ ์ฝ๋ฉ์ ํ ์ ์์ต๋๋ค.
- ์ฌ์ฉ์ ์ ์ ๊ฐ๋ฅํ ํ ๋ง: ํธ์ง๊ธฐ์ ๋ชจ์๊ณผ ๋๋์ ์ฌ์ฉ์ ์ ์ํ ์ ์์ต๋๋ค.
- ํฌ๋ก์ค ํ๋ซํผ ํธํ์ฑ: Windows, macOS ๋ฐ Linux์์ ์คํ๋ฉ๋๋ค.
์์ : Atom์ Teletype๋ก ํ์ ์ฝ๋ฉ:
Teletype๋ฅผ ์ฌ์ฉํ๋ฉด ์ฌ๋ฌ ๊ฐ๋ฐ์๊ฐ Atom์์ ๋์ผํ ํ์ผ์ ๋์์ ํธ์งํ ์ ์์ต๋๋ค. ์ด๋ ํ์ด ํ๋ก๊ทธ๋๋ฐ ๋ฐ ์๊ฒฉ ํ์ ์๋๋ฆฌ์ค์ ๋งค์ฐ ์ ์ฉํ๋ฉฐ ์ค์๊ฐ ์ฝ๋ฉ ๊ฒฝํ์ ์ ๊ณตํฉ๋๋ค.
ํ์ JavaScript ๊ฐ๋ฐ ๋๊ตฌ ๋ฐ ํ๋ฌ๊ทธ์ธ
IDE์ ํต์ฌ ๊ธฐ๋ฅ ์ธ์๋ ๋ค์ํ ๋๊ตฌ ๋ฐ ํ๋ฌ๊ทธ์ธ์ด JavaScript ๊ฐ๋ฐ ์ํฌํ๋ก์ฐ๋ฅผ ๋์ฑ ํฅ์์ํฌ ์ ์์ต๋๋ค. ๊ฐ์ฅ ํ์์ ์ธ ์ฌํญ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
1. ๋ฆฐํฐ(ESLint, JSHint)
๋ฆฐํฐ๋ ์ ์ฌ์ ์ธ ์ค๋ฅ, ์คํ์ผ ๋ฌธ์ ๋ฐ ์ํฐ ํจํด์ ๋ํด ์ฝ๋๋ฅผ ๋ถ์ํฉ๋๋ค. ํ๋ก์ ํธ ์ ๋ฐ์ ๊ฑธ์ณ ์ฝ๋ ํ์ง๊ณผ ์ผ๊ด์ฑ์ ์ ์งํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ESLint๋ ์ต์ JavaScript ๊ธฐ๋ฅ์ ๋ํ ๊ด๋ฒ์ํ ์ฌ์ฉ์ ์ ์ ์ต์ ๊ณผ ์ง์์ ์ ๊ณตํ๋ ๊ฐ์ฅ ์ธ๊ธฐ ์๋ JavaScript ๋ฆฐํฐ์ ๋๋ค. JSHint๋ ๋จ์์ฑ๊ณผ ์ฌ์ฉ ํธ์์ฑ์ผ๋ก ์ ์๋ ค์ง ๋ ๋ค๋ฅธ ์ธ๊ธฐ ์๋ ์ต์ ์ ๋๋ค.
์ด์ :
- ํฅ์๋ ์ฝ๋ ํ์ง: ๊ฐ๋ฐ ํ๋ก์ธ์ค ์ด๊ธฐ์ ์ ์ฌ์ ์ธ ์ค๋ฅ ๋ฐ ๋ฒ๊ทธ๋ฅผ ์๋ณํฉ๋๋ค.
- ์ฝ๋ ์ผ๊ด์ฑ: ํ๋ก์ ํธ ์ ๋ฐ์ ๊ฑธ์ณ ์ฝ๋ฉ ์คํ์ผ ์ง์นจ์ ์ ์ฉํฉ๋๋ค.
- ๋๋ฒ๊น ์๊ฐ ๋จ์ถ: ์ฃผ์ ๋ฌธ์ ๊ฐ ๋๊ธฐ ์ ์ ์ค๋ฅ๋ฅผ ํฌ์ฐฉํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
- ํ์ : ํ ๊ฐ์ ์ผ๊ด๋ ์ฝ๋ฉ ํ์ค์ ๋ณด์ฅํฉ๋๋ค.
์์ : ESLint ๊ตฌ์ฑ:
ESLint๋ `.eslintrc.js` ํ์ผ(๋๋ `.eslintrc.json`๊ณผ ๊ฐ์ ๊ธฐํ ์ง์๋๋ ํ์)์ ํตํด ๊ตฌ์ฑ๋ฉ๋๋ค. ์ด ํ์ผ์ ๋ฆฐํฐ์ ๋ํ ๊ท์น ๋ฐ ์ค์ ์ ์ง์ ํฉ๋๋ค. ๊ฐ๋จํ ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
module.exports = {
"env": {
"browser": true,
"es2021": true,
"node": true
},
"extends": [
"eslint:recommended",
"plugin:react/recommended"
],
"parserOptions": {
"ecmaFeatures": {
"jsx": true
},
"ecmaVersion": 12,
"sourceType": "module"
},
"plugins": [
"react"
],
"rules": {
"no-unused-vars": "warn",
"no-console": "warn"
}
};
2. ํฌ๋งทํฐ(Prettier)
ํฌ๋งทํฐ๋ ๋ฏธ๋ฆฌ ์ ์๋ ์คํ์ผ ๊ท์น์ ๋ฐ๋ผ ์ฝ๋๋ฅผ ์๋์ผ๋ก ํฌ๋งทํฉ๋๋ค. ํ๋ก์ ํธ ์ ๋ฐ์ ๊ฑธ์ณ ์ผ๊ด๋ ์ฝ๋ ํฌ๋งทํ ์ ๋ณด์ฅํ์ฌ ์๊ฐ๊ณผ ๋ ธ๋ ฅ์ ์ ์ฝํฉ๋๋ค. Prettier๋ ๋ค์ํ ๊ตฌ์ฑ ์ต์ ๊ณผ IDE ๋ฐ ๋น๋ ๋๊ตฌ์์ ํตํฉ์ ์ง์ํ๋ ๊ฐ์ฅ ์ธ๊ธฐ ์๋ JavaScript ํฌ๋งทํฐ์ ๋๋ค.
์ด์ :
- ์ผ๊ด๋ ์ฝ๋ ํฌ๋งทํ : ์ผ๊ด๋ ๊ฐ๊ฒฉ, ๋ค์ฌ์ฐ๊ธฐ ๋ฐ ์ค ๋ฐ๊ฟ์ ์ ์ฉํฉ๋๋ค.
- ์ฝ๋ ๊ฒํ ์๊ฐ ๋จ์ถ: ์ฝ๋๋ฅผ ๋ ์ฝ๊ฒ ์ฝ๊ณ ์ดํดํ ์ ์์ต๋๋ค.
- ์๋ํ๋ ํฌ๋งทํ : ์๋ ํฌ๋งทํ ์ ํ์์ฑ์ ์ ๊ฑฐํฉ๋๋ค.
- ํฅ์๋ ํ์ : ํ ๊ฐ์ ์ผ๊ด๋ ์ฝ๋ ํฌ๋งทํ ์ ๋ณด์ฅํฉ๋๋ค.
์์ : Prettier ๊ตฌ์ฑ:
Prettier๋ `.prettierrc.js` ํ์ผ(๋๋ `.prettierrc.json`๊ณผ ๊ฐ์ ๊ธฐํ ์ง์๋๋ ํ์)์ ํตํด ๊ตฌ์ฑ๋ฉ๋๋ค. ๊ธฐ๋ณธ ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
module.exports = {
semi: false,
singleQuote: true,
trailingComma: 'all',
printWidth: 100
};
3. ๋๋ฒ๊ฑฐ(Chrome DevTools, Node.js ๋๋ฒ๊ฑฐ)
๋๋ฒ๊ฑฐ๋ฅผ ์ฌ์ฉํ๋ฉด ์ฝ๋๋ฅผ ๋จ๊ณ๋ณ๋ก ์คํํ๊ณ , ์ค๋จ์ ์ ์ค์ ํ๊ณ , ๋ณ์๋ฅผ ๊ฒ์ฌํ์ฌ ๋ฌธ์ ๋ฅผ ์๋ณํ๊ณ ์์ ํ ์ ์์ต๋๋ค. Chrome DevTools๋ Chrome ๋ธ๋ผ์ฐ์ ์ ๋ด์ฅ๋ ๊ฐ๋ ฅํ ๋๋ฒ๊ฑฐ์ด๊ณ Node.js ๋๋ฒ๊ฑฐ๋ Node.js ์ ํ๋ฆฌ์ผ์ด์ ์ ๋๋ฒ๊น ํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
์ด์ :
- ํจ์จ์ ์ธ ๋ฒ๊ทธ ์๋ณ: ์ฝ๋์์ ๋ฒ๊ทธ๋ฅผ ๋น ๋ฅด๊ฒ ์ฐพ์ ์์ ํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
- ์ฝ๋ ์ดํด: ์ฝ๋๋ฅผ ๋จ๊ณ๋ณ๋ก ์คํํ๊ณ ์คํ ํ๋ฆ์ ์ดํดํ ์ ์์ต๋๋ค.
- ์ค์๊ฐ ๊ฒ์ฌ: ๋ณ์ ๋ฐ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ค์๊ฐ์ผ๋ก ๊ฒ์ฌํ ์ ์์ต๋๋ค.
- ์ฑ๋ฅ ๋ถ์: ์ฝ๋์์ ์ฑ๋ฅ ๋ณ๋ชฉ ํ์์ ์๋ณํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
์์ : Chrome DevTools ์ฌ์ฉ:
์น ํ์ด์ง๋ฅผ ๋ง์ฐ์ค ์ค๋ฅธ์ชฝ ๋ฒํผ์ผ๋ก ํด๋ฆญํ๊ณ "๊ฒ์ฌ"๋ฅผ ์ ํํ๊ฑฐ๋ F12 ํค๋ฅผ ๋๋ฌ Chrome DevTools์ ์ก์ธ์คํ ์ ์์ต๋๋ค. DevTools๋ ์ค๋จ์ ์ ์ค์ ํ๊ณ , ๋ณ์๋ฅผ ๊ฒ์ฌํ๊ณ , ๋คํธ์ํฌ ํธ๋ํฝ์ ๋ถ์ํ๋ ๊ธฐ๋ฅ์ ํฌํจํ์ฌ ๊ด๋ฒ์ํ ๋๋ฒ๊น ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
4. ํ ์คํ ํ๋ ์์ํฌ(Jest, Mocha, Jasmine)
ํ ์คํ ํ๋ ์์ํฌ๋ JavaScript ์ฝ๋์ ๋ํ ๋จ์ ํ ์คํธ๋ฅผ ์์ฑํ๊ณ ์คํํ๋ ๊ตฌ์กฐํ๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค. Jest๋ Facebook์์ ๊ฐ๋ฐํ ์ธ๊ธฐ ์๋ ํ ์คํ ํ๋ ์์ํฌ์ด๊ณ Mocha ๋ฐ Jasmine์ ๋๋ฆฌ ์ฌ์ฉ๋๋ ๋ค๋ฅธ ์ต์ ์ ๋๋ค.
์ด์ :
- ํฅ์๋ ์ฝ๋ ํ์ง: ์ฝ๋๊ฐ ์์๋๋ก ์๋ํ๋์ง ํ์ธํฉ๋๋ค.
- ๋ฒ๊ทธ ์ ๊ฐ์: ๊ฐ๋ฐ ํ๋ก์ธ์ค ์ด๊ธฐ์ ๋ฒ๊ทธ๋ฅผ ํฌ์ฐฉํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
- ํ๊ท ๋ฐฉ์ง: ์๋ก์ด ๋ณ๊ฒฝ ์ฌํญ์ด ๊ธฐ์กด ๊ธฐ๋ฅ์ ์์์ํค์ง ์๋๋ก ํฉ๋๋ค.
- ๋ฌธ์ํ: ์ฝ๋ ๋์์ ๋ํ ์ค์๊ฐ ๋ฌธ์๋ฅผ ์ ๊ณตํฉ๋๋ค.
์์ : Jest ํ ์คํธ ์ผ์ด์ค:
// sum.js
function sum(a, b) {
return a + b;
}
module.exports = sum;
// sum.test.js
const sum = require('./sum');
test('adds 1 + 2 to equal 3', () => {
expect(sum(1, 2)).toBe(3);
});
5. ํจํค์ง ๊ด๋ฆฌ์(npm, Yarn, pnpm)
ํจํค์ง ๊ด๋ฆฌ์๋ JavaScript ํ๋ก์ ํธ์์ ์ข ์์ฑ์ ์ค์น, ๊ด๋ฆฌ ๋ฐ ์ ๋ฐ์ดํธํ๋ ํ๋ก์ธ์ค๋ฅผ ๋จ์ํํฉ๋๋ค. npm(Node Package Manager)์ Node.js์ ๊ธฐ๋ณธ ํจํค์ง ๊ด๋ฆฌ์์ด๊ณ Yarn ๋ฐ pnpm์ ํฅ์๋ ์ฑ๋ฅ๊ณผ ๋ณด์์ ์ ๊ณตํ๋ ๋์ฒด ์ต์ ์ ๋๋ค.
์ด์ :
- ์ข ์์ฑ ๊ด๋ฆฌ: ์ข ์์ฑ์ ์ค์นํ๊ณ ๊ด๋ฆฌํ๋ ํ๋ก์ธ์ค๋ฅผ ๋จ์ํํฉ๋๋ค.
- ๋ฒ์ ์ ์ด: ์ข ์์ฑ์ ์ฌ๋ฐ๋ฅธ ๋ฒ์ ์ ์ฌ์ฉํ๊ณ ์๋์ง ํ์ธํฉ๋๋ค.
- ์ฌํ์ฑ: ๋ค๋ฅธ ์์คํ ์์ ํ๋ก์ ํธ ํ๊ฒฝ์ ์ฝ๊ฒ ๋ค์ ๋ง๋ค ์ ์์ต๋๋ค.
- ๋ณด์: ์ข ์์ฑ์์ ๋ณด์ ์ทจ์ฝ์ ์ ์๋ณํ๊ณ ์ํํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
์์ : npm์ผ๋ก ํจํค์ง ์ค์น:
npm์ ์ฌ์ฉํ์ฌ ํจํค์ง๋ฅผ ์ค์นํ๋ ค๋ฉด `npm install` ๋ช ๋ น์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด `lodash` ํจํค์ง๋ฅผ ์ค์นํ๋ ค๋ฉด ๋ค์ ๋ช ๋ น์ ์คํํฉ๋๋ค.
npm install lodash
ํฅ์๋ ์์ฐ์ฑ์ ์ํ ์ ๋ต
์ฌ๋ฐ๋ฅธ ๋๊ตฌ๋ฅผ ์ ํํ๋ ๊ฒ ์ธ์๋ ํจ๊ณผ์ ์ธ ์ ๋ต์ ๊ตฌํํ๋ฉด JavaScript ๊ฐ๋ฐ ์์ฐ์ฑ์ ๋์ฑ ๋์ผ ์ ์์ต๋๋ค. ๋ช ๊ฐ์ง ์ ์ฆ๋ ๊ธฐ์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
1. ํค๋ณด๋ ๋จ์ถํค ๋ง์คํฐ
ํค๋ณด๋ ๋จ์ถํค๋ฅผ ๋ฐฐ์ฐ๊ณ ํ์ฉํ๋ฉด ์ํฌํ๋ก์ฐ ์๋๋ฅผ ํฌ๊ฒ ๋์ผ ์ ์์ต๋๋ค. ๋๋ถ๋ถ์ IDE๋ ์ฝ๋ ์์ฑ, ๋๋ฒ๊น ๋ฐ ๋ฆฌํฉํ ๋ง๊ณผ ๊ฐ์ ์ผ๋ฐ์ ์ธ ์์ ์ ๋ํ ํฌ๊ด์ ์ธ ํค๋ณด๋ ๋จ์ถํค ์ธํธ๋ฅผ ์ ๊ณตํฉ๋๋ค. ๋ง์ฐ์ค ์์กด๋๋ฅผ ์ค์ด๊ณ ํจ์จ์ฑ์ ๋์ด๋ ค๋ฉด ์๊ฐ์ ๋ด์ด ์ด๋ฌํ ๋จ์ถํค๋ฅผ ๋ฐฐ์ฐ๊ณ ๋ง์คํฐํ์ญ์์ค.
2. ๋ฐ๋ณต์ ์ธ ์์ ์๋ํ
์ํฌํ๋ก์ฐ์์ ๋ฐ๋ณต์ ์ธ ์์ ์ ์๋ณํ๊ณ ์๋ํํฉ๋๋ค. ์ฌ๊ธฐ์๋ ์ปดํ์ผ, ๋ฒ๋ค๋ง ๋ฐ ์ฝ๋ ๋ฐฐํฌ์ ๊ฐ์ ์์ ์ ์๋ํํ๊ธฐ ์ํด ๋น๋ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ์ผ๋ฐ์ ์ธ ์ฝ๋ ๊ตฌ์กฐ๋ฅผ ์์ฑํ๊ธฐ ์ํด ์ฝ๋ ์กฐ๊ฐ์ ์ฌ์ฉํ๋ ๊ฒ์ด ํฌํจ๋ ์ ์์ต๋๋ค. ์๋ํ๋ ์๊ฐ์ ์ ์ฝํ๊ณ ๊ฐ๋ฐ์ ๋ ๋ณต์กํ๊ณ ์ฐฝ์์ ์ธ ์ธก๋ฉด์ ์ง์คํ ์ ์๋๋ก ํด์ค๋๋ค.
3. ์ฝ๋ ์กฐ๊ฐ ํ์ฉ
์ฝ๋ ์กฐ๊ฐ์ ํ๋ก์ ํธ์ ๋น ๋ฅด๊ฒ ์ฝ์ ํ ์ ์๋ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ์ฝ๋ ๋ธ๋ก์ ๋๋ค. ๋๋ถ๋ถ์ IDE๋ ์ฝ๋ ์กฐ๊ฐ์ ์ง์ํ๋ฏ๋ก ์ฌ์ฉ์ ์ ์ ์กฐ๊ฐ์ ๋ง๋ค๊ณ ๊ด๋ฆฌํ ์ ์์ต๋๋ค. ์๊ฐ๊ณผ ์ค๋ฅ๋ฅผ ์ค์ด๋ ค๋ฉด ๋ฃจํ, ์กฐ๊ฑด๋ฌธ ๋ฐ ํจ์ ์ ์์ ๊ฐ์ ์ผ๋ฐ์ ์ธ ์ฝ๋ ๊ตฌ์กฐ์ ์ฝ๋ ์กฐ๊ฐ์ ์ฌ์ฉํ์ญ์์ค.
4. ๋ผ์ด๋ธ ํ ํ๋ฆฟ ํ์ฉ
๋ผ์ด๋ธ ํ ํ๋ฆฟ์ ์ฝ๋ ์กฐ๊ฐ๊ณผ ์ ์ฌํ์ง๋ง ๋ณ์ ๋์ฒด ๋ฐ ์๋ ์ฝ๋ ์์ฑ๊ณผ ๊ฐ์ ๋ ๊ณ ๊ธ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ์ฌ์ฉ์ ์ ๋ ฅ์ ๊ธฐ๋ฐ์ผ๋ก ๋ณต์กํ ์ฝ๋ ๊ตฌ์กฐ๋ฅผ ์์ฑํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค. ํนํ WebStorm์ ํ๋ฅญํ ๋ผ์ด๋ธ ํ ํ๋ฆฟ ์ง์์ ์ ๊ณตํฉ๋๋ค.
5. ์์ ๊ด๋ฆฌ ๋๊ตฌ ์ฌ์ฉ
์์ ๊ด๋ฆฌ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์์ ์ ๊ตฌ์ฑํ๊ณ ์ฐ์ ์์๋ฅผ ์ง์ ํฉ๋๋ค. Jira, Trello ๋ฐ Asana์ ๊ฐ์ ๋๊ตฌ๋ ์งํ ์ํฉ์ ์ถ์ ํ๊ณ , ๋ง๊ฐ์ผ์ ๊ด๋ฆฌํ๊ณ , ๋ค๋ฅธ ๊ฐ๋ฐ์์ ํ์ ํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค. ํจ๊ณผ์ ์ธ ์์ ๊ด๋ฆฌ๋ ์ง์ค๋ ฅ๊ณผ ์์ฐ์ฑ์ ์ ์งํ๋ ๋ฐ ๋งค์ฐ ์ค์ํฉ๋๋ค.
6. ๋ฝ๋ชจ๋๋ก ๊ธฐ๋ฒ ์ค์ฒ
๋ฝ๋ชจ๋๋ก ๊ธฐ๋ฒ์ ์ผ๋ฐ์ ์ผ๋ก 25๋ถ ๊ฐ๊ฒฉ์ผ๋ก ์ง์ค์ ์ผ๋ก ์์ ํ๊ณ ์งง์ ํด์์ ์ทจํ๋ ์๊ฐ ๊ด๋ฆฌ ๋ฐฉ๋ฒ์ ๋๋ค. ์ด ๊ธฐ๋ฒ์ ์ง์ค๋ ฅ์ ์ ์งํ๊ณ ๋ฒ์์์ ํผํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค. ๋ฐ์คํฌํฑ ๋ฐ ๋ชจ๋ฐ์ผ ์ฅ์น ๋ชจ๋์์ ์ฌ์ฉํ ์ ์๋ ๋ง์ ๋ฝ๋ชจ๋๋ก ํ์ด๋จธ ์ฑ์ด ์์ต๋๋ค.
7. ๋ฐฉํด ์์ ์ต์ํ
๊ฐ๋ฐ ์ธ์ ์ค์ ๋ฐฉํด ์์๋ฅผ ์ต์ํํฉ๋๋ค. ์๋ฆผ์ ๋๊ณ ๋ถํ์ํ ํญ์ ๋ซ๊ณ ์กฐ์ฉํ ์์ ๊ณต๊ฐ์ ์ฐพ์ผ์ญ์์ค. ์ง์ค๋ ํ๊ฒฝ์ ์์ฐ์ฑ๊ณผ ์ง์ค๋ ฅ์ ์ ์งํ๋ ๋ฐ ํ์์ ์ ๋๋ค.
8. ์ ๊ธฐ์ ์ธ ํด์
๋ฒ์์์ ํผํ๊ณ ์ง์ค๋ ฅ์ ์ ์งํ๊ธฐ ์ํด ์ ๊ธฐ์ ์ธ ํด์์ ์ทจํ์ญ์์ค. ์ปดํจํฐ์์ ๋ช ๋ถ ๋์ ๋จ์ด์ ธ ์์ผ๋ฉด ๋จธ๋ฆฌ๋ฅผ ์ํ๊ณ ์๋ก์ด ์๋์ง๋ก ์์ ์ ๋ณต๊ทํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค. ์งง์ ์ฐ์ฑ ์ด๋ ์คํธ๋ ์นญ ์ด๋์ ํด์ ์๊ฐ์ ํตํฉํ๋ ๊ฒ์ ๊ณ ๋ คํ์ญ์์ค.
9. ์ง์์ ์ธ ํ์ต
JavaScript ์ํ๊ณ๋ ๋์์์ด ์งํํ๊ณ ์์ผ๋ฏ๋ก ์ต์ ํธ๋ ๋์ ๊ธฐ์ ์ ์ต์ ์ํ๋ก ์ ์งํ๋ ๊ฒ์ด ํ์์ ์ ๋๋ค. ์๋ก์ด ํ๋ ์์ํฌ, ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ ๋๊ตฌ๋ฅผ ๋ฐฐ์ฐ๋ ๋ฐ ์๊ฐ์ ํ ์ ํ์ฌ ๊ธฐ์ ๊ณผ ์์ฐ์ฑ์ ํฅ์์ํค์ญ์์ค. ์จ๋ผ์ธ ๊ฐ์ข, ํํ ๋ฆฌ์ผ ๋ฐ ์ปจํผ๋ฐ์ค๋ ์ง์์ ์ธ ํ์ต์ ์ํ ํ๋ฅญํ ๋ฆฌ์์ค์ ๋๋ค.
10. ์ฝ๋ ๊ฒํ
์ฝ๋ ๊ฒํ ์ ์ฐธ์ฌํ์ฌ ์ฝ๋ ํ์ง์ ๊ฐ์ ํ๊ณ ํ๊ณผ ์ง์์ ๊ณต์ ํ์ญ์์ค. ์ฝ๋ ๊ฒํ ๋ ์ ์ฌ์ ์ธ ์ค๋ฅ๋ฅผ ์๋ณํ๊ณ , ์ฝ๋ ๊ฐ๋ ์ฑ์ ๊ฐ์ ํ๊ณ , ์ฝ๋ฉ ํ์ค์ ์ ์ฉํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค. ๋ํ ๋ค๋ฅธ ๊ฐ๋ฐ์๋ก๋ถํฐ ๋ฐฐ์ฐ๊ณ ์์ ์ ๊ธฐ์ ์ ํฅ์์ํฌ ์ ์๋ ๊ธฐํ๋ฅผ ์ ๊ณตํฉ๋๋ค.
๊ฒฐ๋ก
์ฌ๋ฐ๋ฅธ JavaScript ๊ฐ๋ฐ ๋๊ตฌ๋ฅผ ์ ํํ๊ณ ํจ๊ณผ์ ์ธ ์ ๋ต์ ๊ตฌํํ๋ ๊ฒ์ ์์ฐ์ฑ์ ๊ทน๋ํํ๊ณ ๊ณ ํ์ง ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋๋ ๋ฐ ๋งค์ฐ ์ค์ํฉ๋๋ค. IDE, ํ์ ํ๋ฌ๊ทธ์ธ ๋ฐ ์ ์ฆ๋ ๊ธฐ์ ์ ํ์ ํ์ฉํ์ฌ ์ํฌํ๋ก์ฐ๋ฅผ ๊ฐ์ํํ๊ณ ์ค๋ฅ๋ฅผ ์ค์ด๋ฉฐ ๊ฐ๋ฐ ๋ชฉํ๋ฅผ ๋ณด๋ค ํจ์จ์ ์ผ๋ก ๋ฌ์ฑํ ์ ์์ต๋๋ค. ๋ค์ํ ๋๊ตฌ์ ์ ๋ต์ ์คํํ์ฌ ์์ ์๊ฒ ๊ฐ์ฅ ์ ํฉํ ๊ฒ์ ์ฐพ๊ณ ๋์์์ด ์งํํ๋ JavaScript ๊ฐ๋ฐ ์ธ๊ณ์์ ๊ธฐ์ ๊ณผ ์์ฐ์ฑ์ ํฅ์์ํค๊ธฐ ์ํด ๋ ธ๋ ฅํ์ญ์์ค. ์๋ฒฝํ ์ค์ ์ ๊ฐ๋ฐ์๋ง๋ค ๋ค๋ฅด๋ฏ๋ก *์์ ์* ์ํฌํ๋ก์ฐ๋ฅผ ๊ทน๋ํํ๋ ๊ฒ์ ์ฐพ์ผ์ญ์์ค.
์ด ๊ฐ์ด๋๋ JavaScript ๊ฐ๋ฐ ๋๊ตฌ์ ์์ฐ์ฑ ํฅ์์ ์ํ ์ ๋ต์ ๋ํ ํฌ๊ด์ ์ธ ๊ฐ์๋ฅผ ์ ๊ณตํ์ต๋๋ค. ์ด๋ฌํ ์์น์ ๊ตฌํํ๋ฉด JavaScript ๊ฐ๋ฐ ์ํฌํ๋ก์ฐ๋ฅผ ํฌ๊ฒ ๊ฐ์ ํ๊ณ ๋ชฉํ๋ฅผ ๋ณด๋ค ํจ์จ์ ์ผ๋ก ๋ฌ์ฑํ ์ ์์ต๋๋ค. ํ์ด์ ๋น๋๋ค!