์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- ์๊ณ ๋ฆฌ์ฆ
- ์๋ฐ์คํฌ๋ฆฝํธ์ ํน์ง
- array.reduce()
- ์์ค๋ฆ~
- ์๋ฐ์คํฌ๋ฆฝํธ
- ์๋ฆ๋๋ ์๊ณ ๋ฆฌ์ฆ
- Promise.all()
- for๋ฌธ
- ์๋ฐ์คํฌ๋ฆฝํธ์ ECMAScript
- .map()
- ํ๋ก๊ทธ๋๋จธ์ค
- Math.min
- .split()
- ์๋ฐ์คํฌ๋ฆฝํธ์ ํ์๋ฐฐ๊ฒฝ
- ์ผํญ์ฐ์ฐ์
- ES6 ๋ธ๋ผ์ฐ์ ์ง์ ํํฉ
- Ajax๋?
- ๋ฐฐ์ด ์ต์๊ฐ
- a && b
- ๊ตฌ๋ฌธ๊ณผ ์๋ฏธ
- ์ด๋ ค์ด๋ฐใ ใ
- ๊ฐ์ฐ์ค์ ๊ณต์
- ํ๋ ฌ...
- ํ๋ก๊ทธ๋๋จธ์ค ๊ณต์ ์ฐ์ฑ
- ํ๋ก๊ทธ๋๋ฐ์ด๋
- async-await
- for๋ฐ๋ณต๋ฌธ
- !x.includes()
- JavaScript
- arr.push()
- Today
- Total
Ming's develop story
2์ฅ ์๋ฐ์คํฌ๋ฆฝํธ๋? ๋ณธ๋ฌธ
2.1 ์๋ฐ์คํฌ๋ฆฝํธ์ ํ์
1995๋ , ์ฝ 90%์ ์์ฅ ์ ์ ์จ๋ก ์น ๋ธ๋ผ์ฐ์ ์์ฅ์ ์ง๋ฐฐํ๊ณ ์๋ ๋ท์ค์ผ์ดํ ์ปค๋ฎค๋์ผ์ด์ ์ฆ๋ ์นํ์ด์ง์ ๋ณด์กฐ์ ์ธ ๊ธฐ๋ฅ์ ์ํํ๊ธฐ ์ํด ๋ธ๋ผ์ฐ์ ์์ ๋์ํ๋ ๊ฒฝ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ๋์ ํ๊ธฐ๋ก ๊ฒฐ์ ํ๋ค. ๊ทธ๋์ ํ์ํ ๊ฒ์ด ๋ฐ๋ก ๋ธ๋ ๋ ์์ดํฌ๊ฐ ๊ฐ๋ฐํ ์๋ฐ์คํฌ๋ฆฝํธ๋ค.
์๋ฐ์คํฌ๋ฆฝํธ๋ 1996๋ 3์, ๋ท์ค์ผ์ดํ ์ปค๋ฎค๋์ผ์ด์ ์ฆ์ ์น ๋ธ๋ผ์ฐ์ ์ธ ๋ท์ค์ผ์ดํ ๋ด๋น๊ฒ์ดํฐ2์ ํ์ฌ๋์๊ณ "๋ชจ์นด"๋ก ๋ช ๋ช ๋์๋ค. ๊ทธ๋ฌ๋ค ๊ทธํด 9์ "๋ผ์ด๋ธ์คํฌ๋ฆฝํธ"๋ก ์ด๋ฆ์ด ๋ฐ๋์๋ค๊ฐ 12์์ "์๋ฐ์คํฌ๋ฆฝํธ"๋ผ๋ ์ด๋ฆ์ผ๋ก ์ต์ข ๋ช ๋ช ๋์๋ค.
์ด๋ ๊ฒ ํ์ํ ์๋ฐ์คํฌ๋ฆฝํธ๋ ํ์ฌ ๋ชจ๋ ๋ธ๋ผ์ฐ์ ์ ํ์ค ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ์๋ฆฌ ์ก์๋ค. ๊ทธ๋ฌ๋ ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ์ํํ๊ฒ ์ฑ์ฅํ๋ ๊ฒ์ ์๋๋ค. ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ํ์ํ ๋ค ์ผ๋ง ์ง๋์ง ์์ ์๋ฐ์คํฌ๋ฆฝํธ์ ํ์ ๋ฒ์ ์ธ JScript๊ฐ ์ถ์๋์ด ์๋ฐ์คํฌ๋ฆฝํธ๋ ์๊ธฐ๋ฅผ ๋ง๋๋ค.
2.2 ์๋ฐ์คํฌ๋ฆฝํธ์ ํ์คํ
1996๋ 8์, ๋ง์ดํฌ๋ก์ํํธ๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ํ์ ๋ฒ์ ์ธ "JScript"๋ฅผ ์ธํฐ๋ท ์ต์คํ๋ก๋ฌ3.0์ ํ์ฌํ๋ค. ๊ทธ๋ฐ๋ฐ ๋ฌธ์ ๋ ๋๋ค ํ์คํ๋์ง ๋ชปํ๊ณ ์ ๋นํ ํธํ๋์๋ค๋ ๊ฒ์ด๋ค. ์ฆ, ๋ท์ค์ผ์ดํ ์ปค๋ฎค๋์ผ์ด์ ์ฆ์ ๋ง์ดํฌ๋ก์ํํธ๋ ์์ฌ ๋ธ๋ผ์ฐ์ ์ ์์ฅ ์ ์ ์จ์ ๋์ด๊ธฐ ์ํด ์์ฌ ๋ธ๋ผ์ฐ์ ์์๋ง ๋์ํ๋ ๊ธฐ๋ฅ์ ๊ฒฝ์์ ์ผ๋ก ์ถ๊ฐํ๊ธฐ ์์ํ๋ค๋ ๊ฒ์ด๋ค.
์ด๋ก ์ธํด ๋ธ๋ผ์ฐ์ ์ ๋ฐ๋ผ ์นํ์ด์ง๊ฐ ์ ์์ ์ผ๋ก ๋์ํ์ง ์๋ ํฌ๋ก์ค ๋ธ๋ผ์ฐ์ง ์ด์๊ฐ ๋ฐ์ํ๊ณ , ๋ชจ๋ ๋ธ๋ผ์ฐ์ ์์ ์ ์๋ํ๋ ์นํ์ด์ง๋ฅผ ๊ฐ๋ฐํ๊ธฐ๊ฐ ๋ฌด์ฒ ์ด๋ ค์์ก๋ค.
๋ชจ๋ ๋ธ๋ผ์ฐ์ ์์ ์ ์์ ์ผ๋ก ๋์ํ๋ ํ์คํ๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ํ์์ฑ์ด ๋๋๋๊ธฐ ์์ํ๊ณ , ๋ท์ค์ผ์ดํ ์ปค๋ฎค๋์ผ์ด์ ์ฆ๋ ์ปดํจํฐ ์์คํ ์ ํ์ค์ ๊ด๋ฆฌํ๋ ๋น์๋ฆฌ ํ์คํ ๊ธฐ๊ตฌ์ธ ECMA ์ธํฐ๋ด์ ๋์ ์๋ฐ์คํฌ๋ฆฝํธ์ ํ์คํ๋ฅผ ์์ฒญํ๋ค.
์ดํ 1997๋ 7์ ํ์คํ๋ ์๋ฐ์คํฌ๋ฆฝํธ ์ดํ ์ฌ์์ด ์์ฑ๋์๊ณ , ์ํ๊ถ ๋ฌธ์ ๋ก ์๋ฐ์คํฌ๋ฆฝํธ๋ ECMAScript๋ก ๋ช ๋ช ๋์๋ค.
๋ฒ์ ๋ณ ํน์ง์ ๋ค์๊ณผ ๊ฐ๋ค.
๋ฒ์ | ์ถ์ ์ฐ๋ | ํน์ง |
ES1 | 1997 | ์ดํ |
ES2 | 1998 | ISO/IEC 16262 ๊ตญ์ ํ์ค๊ณผ ๋์ผํ ๊ท๊ฒฉ์ ์ ์ฉ |
ES3 | 1999 | ์ ๊ท ํํ์, try ... catch |
ES5 | 2009 | HTML5์ ํจ๊ป ์ถํํ ํ์ค์, JSON, strict mode, ์ ๊ทผ์ ํ๋กํผํฐ, ํ๋กํผํฐ ์ดํธ๋ฆฌ๋ทฐํธ ์ ์ด, ํฅ์๋ ๋ฐฐ์ด ์กฐ์ ๊ธฐ๋ฅ(forEach, map, filter, reduce, some, every) |
ES6(ECMAScript 2015) | 2015 | let/const, ํด๋์ค, ํ์ดํ ํจ์, ํ ํ๋ฆฟ ๋ฆฌํฐ๋ด, ๋์คํธ๋ญ์ฒ๋ง ํ ๋น, ์คํ๋ ๋ ๋ฌธ๋ฒ, rest ํ๋ผ๋ฏธํฐ, ์ฌ๋ฒ, ํ๋ก๋ฏธ์ค, Map/Set, ์ดํฐ๋ฌ๋ธ, for ... of, ์ ๋๋ ์ดํฐ, Proxy, ๋ชจ๋ import/export |
ES7(ECMAScript 2016) | 2016 | ์ง์(**) ์ฐ์ฐ์, Array.prototype.includes, String.prototype.includes |
ES8(ECMAScript 2017) | 2017 | async/await, Object ์ ์ ๋ฉ์๋(Object.values, Object.entries, Object.getOwnPropertyDescriptors) |
ES9(ECMAScript 2018) | 2018 | Object rest/spread ํ๋กํผํฐ, Promise.prototype.finally, async generator, for await ... of |
ES10(ECMAScript 2019) | 2019 | Object.fromEntries, Array.prototype.flat, Array.prototype.flatMap, optional catch binding |
ES11(ECMAScript 2020) | 2020 | String.prototype.matchAll, BigInt, globalThis, Promise.allSettled, null ๋ณํฉ ์ฐ์ฐ์, ์ต์ ๋ ์ฒด์ด๋ ์ฐ์ฐ์, for ... in enumeration order |
2.3 ์๋ฐ์คํฌ๋ฆฝํธ ์ฑ์ฅ์ ์ญ์ฌ
์ด์ฐฝ๊ธฐ ์๋ฐ์คํฌ๋ฆฝํธ๋ ์นํ์ด์ง์ ๋ณด์กฐ์ ์ธ ๊ธฐ๋ฅ์ ์ํํ๊ธฐ ์ํด ํ์ ์ ์ธ ์ฉ๋๋ก ์ฌ์ฉ๋์๋ค. ์ด ์๊ธฐ์ ๋๋ถ๋ถ์ ๋ก์ง์ ์ฃผ๋ก ์น ์๋ฒ์์ ์คํ๋์๊ณ , ๋ธ๋ผ์ฐ์ ๋ ์๋ฒ๋ก๋ถํฐ ์ ๋ฌ๋ฐ์ HTML๊ณผ CSS๋ฅผ ๋จ์ํ ๋ ๋๋ง*ํ๋ ์์ค์ด์๋ค.
๋ ๋๋ง์ด๋ HTML, CSS, ์๋ฐ์คํฌ๋ฆฝํธ๋ก ์์ฑ๋ ๋ฌธ์๋ฅผ ํด์ํด์ ๋ธ๋ผ์ฐ์ ์ ์๊ฐ์ ์ผ๋ก ์ถ๋ ฅํ๋ ๊ฒ์ ๋งํ๋ค. ๋๋ก๋ ์๋ฒ์์ ๋ฐ์ดํฐ๋ฅผ HTML๋ก ๋ณํํด์ ๋ธ๋ผ์ฐ์ ์๊ฒ ์ ๋ฌํ๋ ๊ณผ์ (SSR; Server Side Rendering)์ ๊ฐ๋ฆฌํค๊ธฐ๋ ํ๋ค. ๋์ค์ ๋ธ๋ผ์ฐ์ ์ ๋ ๋๋ง ๊ณผ์ ์ ๋ํด ์์ธํ ํฌ์คํ ํด๋ณผ๊ฒ์ด๋ค. |
2.3.1 Ajax
1999๋ , ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ด์ฉํด ์๋ฒ์ ๋ธ๋ผ์ฐ์ ๊ฐ ๋น๋๊ธฐ(asynchronous)๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ตํํ ์ ์๋ ํต์ ๊ธฐ๋ฅ์ธ Ajax(Asynchronous JavaScript and XML)๊ฐ XMLHttpRequest๋ผ๋ ์ด๋ฆ์ผ๋ก ๋ฑ์ฅํ๋ค.
์ด์ ์ ์นํ์ด์ง๋ html ํ๊ทธ๋ก ์์ํด์ html ํ๊ทธ๋ก ๋๋๋ ์์ ํ HTML ์ฝ๋๋ฅผ ์๋ฒ๋ก๋ถํฐ ์ ์ก๋ฐ์ ์นํ์ด์ง ์ ์ฒด๋ฅผ ๋ ๋๋งํ๋ ๋ฐฉ์์ผ๋ก ๋์ํ๋ค. ๋ฐ๋ผ์ ํ๋ฉด์ด ์ ํ๋๋ฉด ์๋ฒ๋ก๋ถํฐ ์๋ก์ด HTML์ ์ ์ก ๋ฐ์ ์นํ์ด์ง ์ ์ฒด๋ฅผ ์ฒ์๋ถํฐ ๋ค์ ๋ ๋๋งํ๋ค.
์ด๋ฌํ ๋ฐฉ์์ ๋ณ๊ฒฝํ ํ์๊ฐ ์๋ ๋ถ๋ถ๊น์ง ํฌํจ๋ HTML ์ฝ๋๋ฅผ ์๋ฒ๋ก๋ถํฐ ๋ค์ ์ ์ก๋ฐ๊ธฐ ๋๋ฌธ์ ๋ถํ์ํ ๋ฐ์ดํฐ ํต์ ์ด ๋ฐ์ํ๊ณ , ๋ณ๊ฒฝํ ํ์๊ฐ ์๋ ๋ถ๋ถ๊น์ง ์ฒ์๋ถํฐ ๋ค์ ๋ ๋๋งํด์ผ ํ๊ธฐ ๋๋ฌธ์ ์ฑ๋ฅ ๋ฉด์์๋ ๋ถ๋ฆฌํ๋ค. ์ด๋ก ์ธํด ํ๋ฉด์ด ์ ํ๋๋ฉฐ ์๊ฐ์ ์ผ๋ก ๊น๋ฐ์ด๋ ํ์์ด ๋ฐ์ํ๊ณ , ์ด๋ ์นํ์ด์ง์ ์ด์ฉ ์ ์๋ ํ๊ณ๋ก ๋ฐ์๋ค์ฌ์ก๋ค.
Ajax์ ๋ฑ์ฅ์ผ๋ก ์นํ์ด์ง์์ ๋ณ๊ฒฝํ ํ์๊ฐ ์๋ ๋ถ๋ถ์ ๋ค์ ๋ ๋๋งํ์ง ์๊ณ , ์๋ฒ๋ก๋ถํฐ ํ์ํ ๋ฐ์ดํฐ๋ง ์ ์ก๋ฐ์ ๋ณ๊ฒฝํด์ผ ํ๋ ๋ถ๋ถ๋ง ํ์ ์ ์ผ๋ก ๋ ๋๋งํ๋ ๋ฐฉ์์ด ๊ฐ๋ฅํด์ก๋ค. ์ด๋ก์จ ์น ๋ธ๋ผ์ฐ์ ์์๋ ๋ฐ์คํฌํฑ ์ดํ๋ฆฌ์ผ์ด์ ๊ณผ ์ ์ฌํ ๋น ๋ฅธ ์ฑ๋ฅ๊ณผ ๋ถ๋๋ฌ์ด ํ๋ฉด ์ ํ์ด ๊ฐ๋ฅํด์ก๋ค.
2.3.1 jQuery
2006๋ , jQuery์ ๋ฑ์ฅ์ผ๋ก ๋ค์ ๋ฒ๊ฑฐ๋กญ๊ณ ๋ ผ๋์ด ์๋ DOM(Document Object Model)์ ๋์ฑ ์ฝ๊ฒ ์ ์ดํ ์ ์๊ฒ ๋์๊ณ ํฌ๋ก์ค ๋ธ๋ผ์ฐ์ง ์ด์๋ ์ด๋ ์ ๋ ํด๊ฒฐ๋์๋ค. jQuery๋ ๋์ ์ฌ์ฉ์ ์ธต์ ์์๊ฐ์ ํ๋ณดํ๋ค. ์ด๋ก ์ธํด ๋ฐฐ์ฐ๊ธฐ๊ฐ ๋ค์ ๊น๋ค๋ก์ด ์๋ฐ์คํฌ๋ฆฝํธ๋ณด๋ค ๋ฐฐ์ฐ๊ธฐ ์ฝ๊ณ ์ง๊ด์ ์ธ jQuery๋ฅผ ๋ ์ ํธํ๋ ๊ฐ๋ฐ์๊ฐ ์์ฐ๋๊ธฐ๋ ํ๋ค.
2.3.1 V8 ์๋ฐ์คํฌ๋ฆฝํธ ์์ง
์๋ฐ์คํฌ๋ฆฝํธ๋ก ์น ์ดํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๋ ค๋ ์๋๊ฐ ๋๋ฉด์ ๋์ฑ ๋น ๋ฅด๊ฒ ๋์ํ๋ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ํ์์ฑ์ด ๋๋๋์๋ค. 2008๋ ๋ฑ์ฅํ ๊ตฌ๊ธ์ V8 ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ์ด๋ฌํ ์๊ตฌ์ ๋ถํฉํ๋ ๋น ๋ฅธ ์ฑ๋ฅ์ ๋ณด์ฌ์ฃผ์๋ค.
์ด๋ก์จ ์๋ฐ์คํฌ๋ฆฝํธ๋ ๋ฐ์คํฌํฑ ์ดํ๋ฆฌ์ผ์ด์ ๊ณผ ์ ์ฌํ ์ฌ์ฉ์ ๊ฒฝํ(UX; user experience)์ ์ ๊ณตํ ์ ์๋ ์น ์ดํ๋ฆฌ์ผ์ด์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ์ ์ฐฉํ๊ฒ ๋์๋ค.
๋ํ ์๋ฐ์คํฌ๋ฆฝํธ์ ๋ฐ์ ์ผ๋ก ๊ณผ๊ฑฐ ์น ์๋ฒ์์ ์ํ๋๋ ๋ก์ง๋ค์ด ๋๊ฑฐ ํด๋ผ์ด์ธํธ(๋ธ๋ผ์ฐ์ )๋ก ์ด๋ํ๊ณ , ์ด๋ ์น ์ดํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์์ ํ๋ก ํธ์๋ ์์ญ์ด ์ฃผ๋ชฉ๋ฐ๋ ๊ณ๊ธฐ๋ก ์์ฉํ๋ค.
2.3.1 Node.js
2009๋ , ๋ผ์ด์ธ ๋ฌ์ด ๋ฐํํ Node.js๋ ๊ตฌ๊ธ V8 ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ผ๋ก ๋น๋๋ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฐํ์ ํ๊ฒฝ์ด๋ค.
๋ธ๋ผ์ฐ์ ์ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์์๋ง ๋์ํ๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ๋ธ๋ผ์ฐ์ ์ด์ธ์ ํ๊ฒฝ์์๋ ๋์ํ ์ ์๋๋ก ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ๋ธ๋ผ์ฐ์ ์์ ๋ ๋ฆฝ์ํจ ์๋ฐ์คํฌ๋ฆฝํธ ์คํ ํ๊ฒฝ์ด๋ค. Node.js๋ ๋ค์ํ ํ๋ซํผ์ ์ ์ฉํ ์ ์์ง๋ง ์๋ฒ ์ฌ์ด๋ ์ดํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ์ฃผ๋ก ์ฌ์ฉ๋๋ฉฐ, ์ด์ ํ์ํ ๋ชจ๋, ํ์ผ ์์คํ , HTTP ๋ฑ ๋นํธ์ธ(๋ด์ฅ)API๋ฅผ ์ ๊ณตํ๋ค.
Node.js ํ๊ฒฝ์์ ๋์ํ๋ ์ดํ๋ฆฌ์ผ์ด์ ์ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํด ๊ฐ๋ฐํ๋ค.
Node.js๋ ๋น๋๊ธฐ I/O๋ฅผ ์ง์ํ๋ฉฐ ๋จ์ผ ์ค๋ ๋ ์ด๋ฒคํธ ๋ฃจํ ๊ธฐ๋ฐ์ผ๋ก ๋์ํจ์ผ๋ก์จ ์์ฒญ ์ฒ๋ฆฌ ์ฑ๋ฅ์ด ์ข๋ค. ๋ฐ๋ผ์ SPA(Single Page Application)์ ์ ํฉํ์ง๋ง CPU ์ฌ์ฉ๋ฅ ์ด ๋์ ์ดํ๋ฆฌ์ผ์ด์ ์๋ ๊ถ์ฅํ์ง ์๋๋ค.
์ด๋ก์จ ๋ธ๋ผ์ฐ์ ์์๋ง ๋์ํ๋ ๋ฐ์ชฝ์ง๋ฆฌ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ์ทจ๊ธ์ ๋ฐ๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ ์ด์ ํ๋ก ํธ์๋ ์์ญ์ ๋ฌผ๋ก ๋ฐฑ์๋ ์์ญ๊น์ง ์์ฐ๋ฅด๋ ์น ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ํ์ค์ผ๋ก ์๋ฆฌ ์ก์๋ค.
๋ํ ํฌ๋ก์ค ํ๋ซํผ์ ์ํ ๊ฐ์ฅ ์ค์ํ ์ธ์ด๋ก ์ฃผ๋ชฉ๋ฐ๊ณ ์๋ค.
2.3.1 SPA ํ๋ ์์ํฌ
๋ชจ๋ ์น ์ดํ๋ฆฌ์ผ์ด์ ์ ๋ฐ์คํฌํฑ ์ดํ๋ฆฌ์ผ์ด์ ๊ณผ ๋น๊ตํด๋ ์์์๋ ์ฑ๋ฅ๊ณผ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ๋ ๊ฒ์ด ํ์๊ฐ ๋์๊ณ , ๋๋ถ์ด ๊ฐ๋ฐ ๊ท๋ชจ์ ๋ณต์ก๋๋ ์์นํ๋ค.
์ด์ ์ ๊ฐ๋ฐ ๋ฐฉ์์ผ๋ก๋ ๋ณต์กํด์ง ๊ฐ๋ฐ ๊ณผ์ ์ ์ํํ๊ธฐ ์ด๋ ค์์ก๊ณ , ์ด๋ฌํ ํ์์ ๋ฐ๋ผ ๋ง์ ํจํด๊ณผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ถํํด ๊ฐ๋ฐ์ ๋ง์ ๋์์ ์ฃผ์์ง๋ง ๋ณ๊ฒฝ์ ์ ์ฐํ๋ฉด์ ํ์ฅํ๊ธฐ ์ฌ์ด ์ดํ๋ฆฌ์ผ์ด์ ์ํคํ ์ฒ์ ๊ตฌ์ถ์ ์ด๋ ต๊ฒ ํ๊ณ , ํ์ฐ์ ์ผ๋ก ํ๋ ์์ํฌ๊ฐ ๋ฑ์ฅํ๊ฒ ๋์๋ค.
์ด๋ฌํ ์๊ตฌ์ ๋ฐ๋ง์ถฐ CBD(Component based development)๋ฐฉ๋ฒ๋ก ์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ SPA๊ฐ ๋์คํ๋๋ฉด์ Angular, React, Vue.js, Svelte ๋ฑ ๋ค์ํ SPA ํ๋ ์์ํฌ/๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ด ์๊ฒจ๋ฌ๋ค.
2.4 ์๋ฐ์คํฌ๋ฆฝํธ์ ECMAScript
ECMAScript๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ํ์ค ์ฌ์์ธ ECMA-262๋ฅผ ๋งํ๋ฉฐ, ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๊ฐ, ํ์ , ๊ฐ์ฒด์ ํ๋กํผํฐ, ํจ์, ํ์ค ๋นํธ์ธ ๊ฐ์ฒด ๋ฑ ํต์ฌ ๋ฌธ๋ฒ์ ๊ท์ ํ๋ค.
์๋ฐ์คํฌ๋ฆฝํธ๋ ์ผ๋ฐ์ ์ผ๋ก ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก์ ๊ธฐ๋ณธ ๋ผ๋๋ฅผ ์ด๋ฃจ๋ ECMAScript์ ๋ธ๋ผ์ฐ์ ๊ฐ ๋ณ๋ ์ง์ํ๋ ํด๋ผ์ด์ธํธ ์ฌ์ด๋ Web API, ์ฆ DOM, BOM, Canvas, XMLHttpRequest, fetch, requestAnimationFrame, SVG, Web Storage, Web Component, Web Worker ๋ฑ์ ํฌํจํ๋ ๊ฐ๋ ์ด๋ค.
2.5 ์๋ฐ์คํฌ๋ฆฝํธ์ ํน์ง
์๋ฐ์คํฌ๋ฆฝํธ๋ HTML, CSS์ ํจ๊ป ์น์ ๊ตฌ์ฑํ๋ ์์ ์ค ํ๋๋ก ์น ๋ธ๋ผ์ฐ์ ์์ ๋์ํ๋ ์ ์ผํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ค. ๋ค๋ฅธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋ง์ฐฌ๊ฐ์ง๋ก ์๋ฐ์คํฌ๋ฆฝํธ๋ ๊ธฐ์กด์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ ๋ง์ ์ํฅ์ ๋ฐ์๋ค. ๊ธฐ๋ณธ ๋ฌธ๋ฒ์ C, ์๋ฐ์ ์ ์ฌํ๊ณ ์ ํ์์๋ ํ๋กํ ํ์ ๊ธฐ๋ฐ ์์์, ์คํด์์๋ ์ผ๊ธ ํจ์์ ๊ฐ๋ ์ ์ฐจ์ฉํ๋ค.
์๋ฐ์คํฌ๋ฆฝํธ๋ ๊ฐ๋ฐ์๊ฐ ๋ณ๋์ ์ปดํ์ผ ์์ ์ ์ํํ์ง ์๋ ์ธํฐํ๋ฆฌํฐ ์ธ์ด๋ค. ๋๋ถ๋ถ์ ๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง(V8, SpiderMonkey, JavaScriptCore, Chakra ๋ฑ)์ ์ธํฐํ๋ฆฌํฐ์ ์ปดํ์ผ๋ฌ์ ์ฅ์ ์ ๊ฒฐํฉํด ๋น๊ต์ ์ฒ๋ฆฌ ์๋๊ฐ ๋๋ฆฐ ์ธํฐํ๋ฆฌํฐ์ ๋จ์ ์ ํด๊ฒฐํ๋ค.
์ปดํ์ผ๋ฌ ์ธ์ด | ์ธํฐํ๋ฆฌํฐ ์ธ์ด |
์ฝ๋๊ฐ ์คํ๋๊ธฐ ์ ๋จ๊ณ์ธ ์ปดํ์ผ ํ์์ ์์ค์ฝ๋ ์ ์ฒด๋ฅผ ํ๋ฒ์ ๋จธ์ ์ฝ๋๋ก ๋ณํํ ํ ์คํํ๋ค. | ์ฝ๋๊ฐ ์คํ๋๋ ๋จ๊ณ์ธ ๋ฐํ์์ ๋ฌธ ๋จ์๋ก ํ ์ค์ฉ ์ค๊ฐ ์ฝ๋์ธ ๋ฐ์ดํธ์ฝ๋๋ก ๋ณํํ ํ ์คํํ๋ค. |
์คํ ํ์ผ์ ์์ฑํ๋ค. | ์คํ ํ์ผ์ ์์ฑํ์ง ์๋๋ค. |
์ปดํ์ผ ๋จ๊ณ์ ์คํ ๋จ๊ณ๊ฐ ๋ถ๋ฆฌ๋์ด ์๋ค. ๋ช ์์ ์ธ ์ปดํ์ผ ๋จ๊ณ๋ฅผ ๊ฑฐ์น๊ณ , ๋ช ์์ ์ผ๋ก ์คํ ํ์ผ์ ์คํํ๋ค. | ์ธํฐํ๋ฆฌํธ ๋จ๊ณ์ ์คํ ๋จ๊ณ๊ฐ ๋ถ๋ฆฌ๋์ด ์์ง ์๋ค. ์ธํฐํ๋ฆฌํฐ๋ ํ ์ค์ฉ ๋ฐ์ดํธ์ฝ๋๋ก ๋ณํํ๊ณ ์ฆ์ ์คํํ๋ค. |
์คํ์ ์์ ์ปดํ์ผ์ ๋จ ํ๋ฒ ์ํ๋๋ค. | ์ฝ๋๊ฐ ์คํ๋ ๋๋ง๋ค ์ธํฐํ๋ฆฌํฐ ๊ณผ์ ์ด ๋ฐ๋ณต ์ํ๋๋ค. |
์ปดํ์ผ๊ณผ ์คํ ๋จ๊ณ๊ฐ ๋ถ๋ฆฌ๋์ด ์์ผ๋ฏ๋ก ์ฝ๋ ์คํ ์๋๊ฐ ๋น ๋ฅด๋ค. | ์ธํฐํ๋ฆฌํธ ๋จ๊ณ์ ์คํ ๋จ๊ณ๊ฐ ๋ถ๋ฆฌ๋์ด ์์ง ์๊ณ ๋ฐ๋ณต ์ํ๋๋ฏ๋ก ์ฝ๋ ์คํ ์๋๊ฐ ๋น๊ต์ ๋๋ฆฌ๋ค. |
ํ์ง๋ง ๋๋ถ๋ถ์ ๋ชจ๋ ๋ธ๋ผ์ฐ์ ์์ ์ฌ์ฉ๋๋ ์ธํฐํ๋ฆฌํฐ๋ ์ ํต์ ์ธ ์ปดํ์ผ๋ฌ ์ธ์ด์ฒ๋ผ ๋ช
์์ ์ธ ์ปดํ์ผ ๋จ๊ณ๋ฅผ ๊ฑฐ์น์ง๋ ์์ง๋ง ๋ณต์กํ ๊ณผ์ ์ ๊ฑฐ์น๋ฉฐ ์ผ๋ถ ์์ค์ฝ๋๋ฅผ ์ปดํ์ผํ๊ณ ์คํํ๋ค. ์ด๋ฅผ ํตํด ์ธํฐํ๋ฆฌํฐ ์ธ์ด์ ์ฅ์ ์ธ ๋์ ๊ธฐ๋ฅ ์ง์์ ์ด๋ฆฌ๋ฉด์ ์คํ ์๋๊ฐ ๋๋ฆฌ๋ค๋ ๋จ์ ์ ๊ทน๋ณตํ๋ค. ๋ฐ๋ผ์ ํ์ฌ๋ ์ปดํ์ผ๋ฌ์ ์ธํฐํ๋ฆฌํฐ์ ๊ธฐ์ ์ ๊ตฌ๋ถ์ด ์ ์ฐจ ๋ชจํธํด์ ธ ๊ฐ๋ ์ถ์ธ๋ค. ํ์ง๋ง ์๋ฐ์คํฌ๋ฆฝํธ๋ ๋ฐํ์์ ์ปดํ์ผ๋๋ฉฐ ์คํ ํ์ผ์ด ์์ฑ๋์ง ์๊ณ ์ธํฐํ๋ฆฌํฐ์ ๋์ ์์ด ์คํํ ์ ์๊ธฐ ๋๋ฌธ์ ์ปดํ์ผ๋ฌ ์ธ์ด๋ผ๊ณ ํ ์๋ ์๋ค. |
์๋ฐ์คํฌ๋ฆฝํธ๋ ๋ช ๋ นํ, ํจ์ํ, ํ๋กํ ํ์ ๊ธฐ๋ฐ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์ง์ํ๋ ๋ฉํฐ ํจ๋ฌ๋ค์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ค.
๋น๋ก ๋ค๋ฅธ ๊ฐ์ฒด์งํฅ ์ธ์ด์์ ์ฐจ์ด์ ์ ๋ํ ๋ ผ์์ด ์๊ธด ํ์ง๋ง ์๋ฐ์คํฌ๋ฆฝํธ๋ ํด๋์ค ๊ธฐ๋ฐ ๊ฐ์ฒด์งํฅ ์ธ์ด๋ณด๋ค ํจ์จ์ ์ด๋ฉด์ ๊ฐ๋ ฅํ ํ๋กํ ํ์ ๊ธฐ๋ฐ์ ๊ฐ์ฒด์งํฅ ์ธ์ด๋ค.
2.6 ES6 ๋ธ๋ผ์ฐ์ ์ง์ ํํฉ
์ธํฐ๋ท ์ต์คํ๋ก๋ฌ๋ฅผ ์ ์ธํ ๋๋ถ๋ถ์ ๋ชจ๋ ๋ธ๋ผ์ฐ์ ๋ ES6๋ฅผ ์ง์(96~99%)ํ์ง๋ง 100% ์ง์ํ๊ณ ์์ง๋ ์๋ค.
๋ฐ๋ผ์ ๋ธ๋ผ์ฐ์ ์์ ์์ง ์ง์ํ์ง ์๋ ์ต์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๊ฑฐ๋ ์ธํฐ๋ท ์ต์คํ๋ก๋ฌ๋ ๊ตฌํ ๋ธ๋ผ์ฐ์ ๋ฅผ ๊ณ ๋ คํด์ผ ํ๋ ์ํฉ์ด๋ผ๋ฉด ๋ฐ๋ฒจ(Babel)๊ณผ ๊ฐ์ ํธ๋์คํ์ผ๋ฌ๋ฅผ ์ฌ์ฉํด ES6 ์ด์์ ์ฌ์์ผ๋ก ๊ตฌํํ ์์ค์ฝ๋๋ฅผ ES5 ์ดํ์ ์ฌ์์ผ๋ก ๋ค์ด๊ทธ๋ ์ด๋ํ ํ์๊ฐ ์๋ค.
๋์ค์ "Babel๊ณผ Webpack์ ์ด์ฉํ ES6+/ES.NEXT ๊ฐ๋ฐ ํ๊ฒฝ ๊ตฌ์ถ"์ ๋ํด ํฌ์คํ ํ ์์ ์ด๋ค.
'D E V E L O P ๐ป > Javascript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
1์ฅ ํ๋ก๊ทธ๋๋ฐ (0) | 2022.02.16 |
---|---|
์๋ฐ์คํฌ๋ฆฝํธ ์ ๊ท์ ํํ ๊ธฐ๋ณธ (0) | 2021.12.08 |