๐ธ02์ฅ. ์๋ฐ์คํฌ๋ฆฝํธ๋?
โ
2.1 ์๋ฐ์คํฌ๋ฆฝํธ์ ํ์
1995๋
, ์น ๋ธ๋ผ์ฐ์ ์์ฅ ์ ์ ์จ 90%๋ฅผ ๊ฐ์ง๊ณ ์๋ ๋ท์ค์ผ์ดํ ์ปค๋ฎค๋์ผ์ด์
์ฆ๊ฐ ์นํ์ด์ง์ ๋ณด์กฐ์ ์ธ ๊ธฐ๋ฅ์ ์ํํ๊ธฐ ์ํด ๋ธ๋ผ์ฐ์ ์์ ๋์ํ๋ ๊ฒฝ๋ ํ๋ก๊ทธ๋๋ฐ์ธ์ด
๋ฅผ ๋์
ํ๊ธฐ๋ก ๊ฒฐ์ ํ ๋ธ๋ ๋ ์์ดํฌ๊ฐ ๊ฐ๋ฐํ์๋ค.
โ
2.2 ์๋ฐ์คํฌ๋ฆฝํธ์ ํ์คํ
1996๋
8์ ๋ง์ดํฌ๋ก์ํํธ๋ ์๋ฐ์คํฌ๋ฆฝํธ ํ์๋ฒ์ "JScript"๋ฅผ ์ต์คํ๋ก๋ฌ 3.0์ ํ์ฌํ๋๋ฐ, JScript์ ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ํธํ์ด ์๋ฒฝํ ๋์ง ์์ ํฌ๋ก์ค ๋ธ๋ผ์ฐ์ง ์ด์
๊ฐ ๋ฐ์ํ๋ค.
๋น์๋ฆฌ ํ์คํ ๊ธฐ๊ตฌ์ธ ECMA ์ธํฐ๋ค์
๋์ ์๋ฐ์คํฌ๋ฆฝํธ ํ์คํ
๋ฅผ ์์ฒญํ๊ณ , ์ํ๊ถ ๋ฌธ์ ๋ก ECMAScript
๋ก ๋ช
๋ช
๋์๋ค.
ํนํ, 2015๋
์ ๊ณต๊ฐ๋ ECMAScript 6(ECMAScript 2015, ES6)
๋ let/const ํค์๋, ํ์ดํ ํจ์, ํด๋์ค, ๋ชจ๋ ๋ฑ๊ณผ ๊ฐ์ด ๋ฒ์ฉ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก์ ๊ฐ์ถฐ์ผ ํ ๊ธฐ๋ฅ๋ค์ ๋๊ฑฐ ๋์
ํ๋ ํฐ ๋ณํ๊ฐ ์์๋ค.
*๏ผ ํฌ๋ก์ค ๋ธ๋ผ์ฐ์ง ์ด์
: ๋ธ๋ผ์ฐ์ ์ ๋ฐ๋ผ ์น ํ์ด์ง๊ฐ ์ ์์ ์ผ๋ก ๋์ํ์ง ์๋ ์ํ*
์ฃผ์ ECMAScript ๋ฒ์ ๋ณ ํน์ง
ES1
1997
์ดํ
โฆ
โฆ
...
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.entriesm Object.getOwnPropertyDescriptors)
โฆ
โฆ
...
ES11
2020
โฆ
โ
2.3 ์๋ฐ์คํฌ๋ฆฝํธ ์ฑ์ฅ์ ์ญ์ฌ
๐ง์ด๊ธฐ์ ์๋ฐ์คํฌ๋ฆฝํธ
- ์น ํ์ด์ง์ ๋ณด์กฐ์ ๊ธฐ๋ฅ์ ์ํํ๊ธฐ ์ํด ํ์ ์ ์ธ ์ฉ๋๋ก๋ง ์ฌ์ฉ
๋๋ถ๋ถ์ ๋ก์ง์ ์ฃผ๋ก ์น ์๋ฒ์์ ์คํ
๋ธ๋ผ์ฐ์ ๋ ์๋ฒ๋ก๋ถํฐ ์ ๋ฌ๋ฐ์ HTML๊ณผ CSS๋ฅผ ๋จ์ํ
๋ ๋๋ง
ํ๋ ์์ค
@๋ ๋๋ง
: HTML, CSS, Javascript๋ก ์์ฑ๋ ๋ฌธ์๋ฅผ ํด์ํด์ ๋ธ๋ผ์ฐ์ ์ ์๊ฐ์ ์ผ๋ก ์ถ๋ ฅํ๋ ๊ฒ*
๐งAjax(Asynchronous Javascript and XML)
- ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ด์ฉํด ์๋ฒ์ ๋ธ๋ผ์ฐ์ ๊ฐ ๋น๋๊ธฐ(Asynchronous)๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ตํํ ์ ์๋ ํต์ ๊ธฐ๋ฅ
- XMLHttpRequest ๋ผ๋ ์ด๋ฆ์ผ๋ก ๋ฑ์ฅ
์ด์ ์ ์นํ์ด์ง ์์ ํ HTML ์ฝ๋(html ํ๊ทธ๋ก ์์ํ๊ณ ๋๋๋ ์ฝ๋)๋ฅผ ์๋ฒ๋ก๋ถํฐ ์ ์ก๋ฐ์ ์น ํ์ด์ง ์ ์ฒด๋ฅผ ๋ ๋๋ง ํ๋ ๋ฐฉ์์ผ๋ก ๋์ํ์๋ค.
ํ๋ฉด ์ ํ โ ์๋ฒ๋ก๋ถํฐ ์๋ก์ด HTML์ ์ ์ก๋ฐ์ ์นํ์ด์ง ์ ์ฒด๋ฅผ ๋ฆฌ๋ ๋๋ง
๋ณ๊ฒฝํ ํ์ ์๋ ๋ถ๋ถ๊น์ง ๋ฆฌ๋ ๋๋ง โ ๋ถํ์ํ ๋ฐ์ดํฐ ํต์ ๋ฐ์ โ ์ฑ๋ฅ ๋ฉด์์๋ ๋ถ๋ฆฌ โ
ํ๋ฉด์ด ์๊ฐ์ ์ผ๋ก ๊น๋นก์ด๋ ํ์์ด ๋ฐ์
Ajax์ ๋ฑ์ฅ ์ดํ ์นํ์ด์ง ๋ณ๊ฒฝํ ํ์๊ฐ ์๋ ๋ถ๋ถ์ ๋ค์ ๋ ๋๋ง ํ์ง ์๊ณ , ์๋ฒ๋ก๋ถํฐ ํ์ํ ๋ฐ์ดํฐ๋ง ์ ์ก๋ฐ์ ๋ณ๊ฒฝํด์ผ ํ๋ ๋ถ๋ถ๋ง
ํ์ ์ ์ผ๋ก ๋ ๋๋งํ๋ ๋ฐฉ์
์ด ๊ฐ๋ฅํด์ก๋ค.์น ๋ธ๋ผ์ฐ์ ์์๋ ๋ฐ์คํฌํฑ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ์ ์ฌํ ๋น ๋ฅธ ์ฑ๋ฅ๊ณผ ๋ถ๋๋ฌ์ด ํ๋ฉด ์ ํ์ด ๊ฐ๋ฅํด์ก๋ค.
๐งJQuery
- DOM(Document Object Model)์ ๋์ฑ ์ฝ๊ฒ ์ ์ดํ ์ ์๊ณ , ํฌ๋ก์ค ๋ธ๋ผ์ฐ์ง ์ด์๋ ์ด๋ ์ ๋ ํด๊ฒฐํด์ค ์๋ฐ์คํฌ๋ฆฝํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
๐งV8 ์๋ฐ์คํฌ๋ฆฝํธ ์์ง
- V8์ ๋ฑ์ฅ์ผ๋ก, ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ๋ฐ์คํฌํฑ ์ ํ๋ฆฌ์ผ์ด์
๊ณผ ์ ์ฌํ ์ฌ์ฉ์ ๊ฒฝํ(UX)์ ์ ๊ณตํ ์ ์๋ ์น ์ ํ๋ฆฌ์ผ์ด์
ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ์ ์ฐฉ๋์์
๐งNode.js
- V8 ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ผ๋ก ๋น๋๋ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฐํ์ ํ๊ฒฝ
- ๋ธ๋ผ์ฐ์ ์ด์ธ์ ํ๊ฒฝ์์๋ ๋์ํ ์ ์๋๋ก ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ๋ธ๋ผ์ฐ์ ์์ ๋
๋ฆฝ์ํจ ์๋ฐ์คํฌ๋ฆฝํธ ์คํ ํ๊ฒฝ
Node.js๋ ๋ค์ํ ํ๋ซํผ์ ์ ์ฉํ ์ ์์ง๋ง, ์๋ฒ ์ฌ์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ์ฃผ๋ก ์ฌ์ฉ๋๊ณ , ๋ชจ๋, ํ์ผ์์คํ , HTTP ๋ฑ ๋นํธ์ธ(built-in, ๋ด์ฅ) API๋ฅผ ์ ๊ณตํ๋ค.
ํ๋ก ํธ์๋์ ๋ฐฑ์๋ ์์ญ์์ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ ์ ์๋ค๋ ๋ํ์ฑ์ ๋ณ๋์ ์ธ์ด๋ฅผ ํ์ตํ๊ธฐ ์ํ ์๊ฐ์ ๋ ์ ์๊ณ ,
๋น๋๊ธฐ I/O
๋ฅผ ์ง์ํ๋ฉฐ,๋จ์ผ ์ค๋ ๋ ์ด๋ฒคํธ ๋ฃจํ
๊ธฐ๋ฐ์ผ๋ก ๋์ํจ์ผ๋ก์จ ์์ฒญ ์ฒ๋ฆฌ ์ฑ๋ฅ์ด ์ข๋ค.๋ฐ๋ผ์, ๋ฐ์ดํฐ๋ฅผ ์ค์๊ฐ์ผ๋ก ์ฒ๋ฆฌํ๊ธฐ ์ํด I/O๊ฐ ๋น๋ฒํ ๋ฐ์ํ๋ SPA(Single Page Application)์ ์ ํฉํ๋ค.
๋ํ, ํฌ๋ก์ค ํ๋ซํผ์ ์ํ ๊ฐ์ฅ ์ค์ํ ์ธ์ด๋ก ์ฃผ๋ชฉ๋ฐ๊ณ ์๋ค.
๐งSPA ํ๋ ์์ํฌ
- ๋ณ๊ฒฝ์ด ์ ์ฐํ๋ฉด์ ํ์ฅํ๊ธฐ ์ฌ์ด ์ ํ๋ฆฌ์ผ์ด์
์ํคํ
์ณ ๊ตฌ์ถ์ ์ด๋ ต๊ฒ ํ๊ณ , ํ์ฐ์ ์ผ๋ก ํ๋ ์์ํฌ๊ฐ ๋ฑ์ฅํ๊ฒ ๋๋๋ฐ,
- ์ด๋ฌํ ์๊ตฌ์ ๋ฐ๋ง์ถฐ CBD(Component based development) ๋ฐฉ๋ฒ๋ก ์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ SPA๊ฐ ๋์คํ๋์์
โ
2.4 ์๋ฐ์คํฌ๋ฆฝํธ์ ECMAScript
ECMAScript๋,
์๋ฐ์คํฌ๋ฆฝํธ ํ์ค์ผ๋ก, ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๊ฐ, ํ์
, ๊ฐ์ฒด์ ํ๋กํผํฐ, ํจ์, ํ์ค ๋นํธ์ธ ๊ฐ์ฒด ๋ฑ ํต์ฌ ๋ฌธ๋ฒ์ ๊ท์ ํ ๊ฒ
์๋ฐ์คํฌ๋ฆฝํธ = ํ๋ก๊ทธ๋๋ฐ ์ธ์ด
๊ธฐ๋ณธ ๋ผ๋๋ ECMAScript๋ฅผ ์ค์ํ๊ณ , ์ถ๊ฐ๋ก ๋ธ๋ผ์ฐ์ ๊ฐ ๋ณ๋๋ก ์ง์ํ๋ ํด๋ผ์ด์ธํธ ์ฌ์ด๋ Web API(DOM, BOM, Canvas, XMLHttpRequest, fetch, requestAnimationFrame, SVG, Web Storage, Web Component, Web Worker ๋ฑ)๋ฅผ ์์ฐ๋ฅด๋ ๊ฐ๋
โ
2.5 ์๋ฐ์คํฌ๋ฆฝํธ์ ํน์ง
์๋ฐ์คํฌ๋ฆฝํธ๋ ๋ช
๋ นํ(imperative), ํจ์ํ(functional), ํ๋กํ ํ์
๊ธฐ๋ฐ(prototype-based)๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์ง์ํ๋ **๋ฉํฐ ํจ๋ฌ๋ค์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด**๋ค.
์๋ฐ์คํฌ๋ฆฝํธ๋ ์น ๋ธ๋ผ์ฐ์ ์์ ๋์ํ๋ ์ ์ผํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ค.
๊ฐ๋ฐ์๊ฐ ๋ณ๋์ ์ปดํ์ผ ์์ ์ ์ํํ์ง ์๋ ์ธํฐํ๋ฆฌํฐ ์ธ์ด์ด๋ค.
๋ช ๋ นํ, ํจ์ํ, ํ๋กํ ํ์ ๊ธฐ๋ฐ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์ง์ํ๋ ๋ฉํฐ ํจ๋ฌ๋ค์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ค.
ํด๋์ค ๊ธฐ๋ฐ ๊ฐ์ฒด์งํฅ ์ธ์ด๋ณด๋ค ํจ์จ์ ์ด๋ฉด์ ๊ฐ๋ ฅํ ํ๋กํ ํ์ ๊ธฐ๋ฐ์ ๊ฐ์ฒด์งํฅ ์ธ์ด๋ค.
Last updated