JavaScript ๊ธฐ์ ๊ฐ์
๊ฐ์
HTML์ด ์น ํ์ด์ง์ ๊ตฌ์กฐ์ ์ฝํ ์ธ ๋ฅผ, CSS๊ฐ ํ์๊ณผ ๋ชจ์์ ๊ฒฐ์ ํ๋ค๋ฉด, JavaScript๋ ์ํธ์์ฉ์ฑ์ ์ถ๊ฐํ์ฌ ํ๋ถํ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ญ๋๋ค.
๊ทธ๋ฌ๋, ์น ๋ธ๋ผ์ฐ์ ๋งฅ๋ฝ์์ ํฌ๊ด์ ์ผ๋ก ์ฐ์ด๋ ์ฉ์ด๋ก์์ "JavaScript"๋ ์ฌ์ค ๋งค์ฐ ๋ค๋ฅธ ์์ ์ฌ๋ฟ์ ํฌํจํ๋ ๊ฒ์ ๋๋ค. ๊ทธ ์ค ํ๋๋ ํต์ฌ ์ธ์ด(ECMAScript)๊ณ , ๋ค๋ฅธ ํ๋๋ DOM(Document Object Model)์ ํฌํจํ Web API์ ๋๋ค.
ํต์ฌ ์ธ์ด, JavaScript(ECMAScript)
JavaScript์ ํต์ฌ ์ธ์ด๋ ECMA TC39 ์์ํ๊ฐ ECMAScript๋ผ๋ ์ธ์ด๋ก ํ์คํํ์ต๋๋ค. "ECMAScript"๋ ์ธ์ด ํ์ค์ ๋ํ๋ด๋ ์ฉ์ด์ด์ง๋ง, "ECMAScript"์ "JavaScript"๋ ๊ฐ์ ์๋ฏธ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
ํต์ฌ ์ธ์ด๋ Node.js ๋ฑ ๋น๋ธ๋ผ์ฐ์ ํ๊ฒฝ์์๋ ์ฌ์ฉ๋ฉ๋๋ค.
ECMAScript ๋ฒ์์ ํฌํจ๋๋ ๊ฒ์ ๋ฌด์์ธ๊ฐ์?
๋ฌด์๋ณด๋ค๋, ECMAScript๋ ๋ค์์ ์ ์ํฉ๋๋ค.
- ์ธ์ด ๊ตฌ๋ฌธ (๊ตฌ๋ฌธ ๋ถ์ ๊ท์น, ํค์๋, ํ๋ฆ ์ ์ด, ๊ฐ์ฒด ๋ฆฌํฐ๋ด ์ด๊ธฐํ ๋ฑ)
- ์ค๋ฅ ์ฒ๋ฆฌ ์๋ฆฌ (
throw
,try...catch
, ์ฌ์ฉ์ ์ ์Error
ํ์ ๋ฑ) - ์๋ฃํ (๋ถ๋ฆฌ์ธ, ์ซ์, ๋ฌธ์์ด, ํจ์, ๊ฐ์ฒด, ...)
- ํ๋กํ ํ์ ๊ธฐ๋ฐ ์์ ์๋ฆฌ
- ๋ด์ฅ ๊ฐ์ฒด ๋ฐ ํจ์ (
JSON
,Math
,Array.prototype
๋ฉ์๋,Object
๋ด์ฑ๊ฒ์ฌ ๋ฉ์๋ ๋ฑ) - ์๊ฒฉ ๋ชจ๋
- ๋ชจ๋ ์์คํ
- ๊ธฐ๋ณธ ๋ฉ๋ชจ๋ฆฌ ๋ชจ๋ธ
ํ์คํ ๊ณผ์
ECMAScript ํ๋ค์ ๋งค๋ ECMA ์ดํ์์ ํ์ค์ผ๋ก ์น์ธ๋๊ณ ๊ฒ์๋ฉ๋๋ค. ๋ชจ๋ ๊ฐ๋ฐ์ ์ ์, ๊ณต์ ๋ช ์ธ์ ๋ฌธ์ ๋ฐ ํ์ ๋ ธํธ๋ฅผ ํธ์คํ ํ๋ Ecma TC39 GitHub ์กฐ์ง์ ๊ณต๊ฐ๋ฉ๋๋ค.
ECMAScript 6ํ(ES6์ด๋ผ๊ณ ํจ) ์ด์ ์๋, ๋ช ์ธ๊ฐ ๋ช ๋ ์ ํ ๋ฒ์ฉ ๊ฒ์๋์์ผ๋ฉฐ, ์ผ๋ฐ์ ์ผ๋ก ๋ฉ์ด์ ๋ฒ์ ๋ฒํธ๋ก(ES3, ES5 ๋ฑ)๋ก ์ฐธ์กฐ๋ฉ๋๋ค. ES6 ์ดํ์๋ ๋ช ์ธ์ ์ด๋ฆ์ด ๊ฒ์ ์ฐ๋์ธ ES2017, ES2018 ๋ฑ์ผ๋ก ์ง์ ๋ฉ๋๋ค. ES6๋ ES2015์ ๋์์ด์ ๋๋ค. "ESNext"๋ ์์ฑ ๋น์์ ๋ค์ ๋ฒ์ ์ ๋ํ๋ด๋ ๋์ ์ธ ์ด๋ฆ์ ๋๋ค. ์ ์์ ๋ฐ๋ผ, ๋ช ์ธ๊ฐ ์์ง ํ์ ๋์ง ์์๊ธฐ ๋๋ฌธ์, ESNext ๊ธฐ๋ฅ์ ์ ์์ด๋ผ๊ณ ๋ถ๋ฅด๋ ๊ฒ์ด ๋ ์ ํํฉ๋๋ค.
ECMA-262์ ํ์ฌ ์์ํ ์น์ธ ์ค๋ ์ท์ PDF ํ์ ๋ฐ HTML ํ์์์ ์ฐพ์ ์ ์์ต๋๋ค. ECMA-262 ๋ฐ ECMA-402 ๋ฒ์ ์ ๋ช ์ธ ํธ์ง์๋ค์ด ์ต์ ์ํ๋ก ์ ์งํฉ๋๋ค. TC39 ์น์ฌ์ดํธ๋ ์ต์ ECMA-262 ๋ฐ ECMA-402 ๋ฒ์ ์ ํธ์คํ ํฉ๋๋ค.
์๋ก์ด ๋ฌธ๋ฒ ๋ฐ API ๋์ , ๊ธฐ์กด ๋์ ์์ ๋ฑ ์๋ก์ด ์ธ์ด ๊ธฐ๋ฅ์ ์ ์ ํ์์ผ๋ก ๋ ผ์๋ฉ๋๋ค. ๊ฐ ์ ์์ 4๋จ๊ณ ํ๋ก์ธ์ค๋ฅผ ๊ฑฐ์น๋ฉฐ, ์ผ๋ฐ์ ์ผ๋ก 3๋จ๊ณ ๋๋ 4๋จ๊ณ์์ JavavScript ์์ง์ ์ํด ๊ตฌํ๋๋ฏ๋ก ๊ณต๊ฐ์ ์ผ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
ECMAScript ๊ธฐ๋ก์ ๋ํ ์์ธํ ๋ด์ฉ์ Wikipedia ECMAScript ํญ๋ชฉ์ ์ฐธ์กฐํ์ธ์.
๊ตญ์ ํ API
ECMAScript ๊ตญ์ ํ API ๋ช
์ธ์ Ecma TC39์์ ํ์คํ๋ ๊ฒ๊ณผ ๊ฐ์ด ECMAScript ์ธ์ด ๋ช
์ธ์ ์ถ๊ฐ๋ ๊ฒ์
๋๋ค. ๊ตญ์ ํ API๋ JavaScript ์ ํ๋ฆฌ์ผ์ด์
์ ์ํ ์ฝ๋ ์ด์
(๋ฌธ์์ด ๋น๊ต), ์ซ์ ํ์ ๋ฐ ๋ ์ง ๋ฐ ์๊ฐ ํ์์ ์ ๊ณตํ์ฌ, ์ ํ๋ฆฌ์ผ์ด์
์ด ์ธ์ด๋ฅผ ์ ํํ๊ณ ํ์์ ๋ง๊ฒ ๊ธฐ๋ฅ์ ์ ์ฉํ ์ ์๋ ๋ฐฉ๋ฒ์
๋๋ค. ์ด๊ธฐ ํ์ค์์ 2012๋
12์์ ํต๊ณผํ์ผ๋ฉฐ ๋ธ๋ผ์ฐ์ ๊ตฌํ ์ํ๋ Intl
๊ฐ์ฒด ๋ฌธ์์์ ์ถ์ ์ค์
๋๋ค. ์ต๊ทผ์๋ ๊ตญ์ ํ ๋ช
์ธ๋ ๋งค๋
๋น์คํ๊ณ ์์ผ๋ฉฐ ๋ธ๋ผ์ฐ์ ๊ตฌํ๋ ๊ณ์ํ์ฌ ๊ฐ์ ์ค์
๋๋ค.
๊ด๋ จ๋ ์ฐธ๊ณ ์๋ฃ
ECMAScript ์ธ์ด ๋ช ์ธ ๋ฐ ECMAScript ๊ตญ์ ํ API ๋ช ์ธ ๋ฐ ๊ด๋ จ ๋ฆฌ์์ค์ ์ฐธ์ฌํ๊ฑฐ๋ ํ์ฌ ์์ ์ ์ถ์ ํ ์ ์๋ ๋ค์ํ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
DOM API
WebIDL
WebIDL ๋ช ์ธ๋ DOM ๊ธฐ์ ๊ณผ ECMAScript ์ฌ์ด๋ฅผ ์ฐ๊ฒฐํ๋ ์ญํ ์ ํฉ๋๋ค.
DOM์ ํต์ฌ
DOM(Document Object Model)์ HTML, XHTML, XML ๋ฌธ์์ ๊ฐ์ฒด๋ฅผ ๋ํ๋ด๊ณ ์ํธ์์ฉํ๊ธฐ ์ํ, ์ธ์ด์ ์ ์ฝ๋์ง ์๋ ํฌ๋ก์ค ํ๋ซํผ ํ์ฝ์ ๋๋ค. DOM ํธ๋ฆฌ์ ๊ฐ์ฒด๋ ํด๋น ๊ฐ์ฒด์ ๋ฉ์๋๋ฅผ ์ฌ์ฉํด ์กฐ์ํ ์ ์์ต๋๋ค. W3C๋ HTML์ XML ๋ฌธ์๋ฅผ ๊ฐ์ฒด๋ก ์ถ์ํํ๋ Core Document Object Model์ ํ์คํํ๊ณ , ์ถ์ํ๋ฅผ ์กฐ์ํ๊ธฐ ์ํ ์๋ฆฌ๋ ์ ์ํฉ๋๋ค. DOM์ ์ ์๋ ๋ด์ฉ ์ค ์ผ๋ถ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ๋ฌธ์ ๊ตฌ์กฐ, ํธ๋ฆฌ ๋ชจ๋ธ, DOM core์ DOM Event Architecture:
Node
,Element
,DocumentFragment
,Document
,DOMImplementation
,Event
,EventTarget
, โฆ - ๋ ์๊ฒฉํ DOM Event Architecture ์ ์, DOM events์ ์ํ๋ ํน์ ์ด๋ฒคํธ.
- DOM Traversal, DOM Range ๋ฑ
ECMAScript์ ๊ด์ ์์, DOM ๋ช ์ธ์ ์ ์๋ ๊ฐ์ฒด๋ "ํธ์คํธ ๊ฐ์ฒด"๋ผ๊ณ ๋ถ๋ฆ ๋๋ค.
HTML DOM
์น ๋งํฌ์
์ธ์ด์ธ HTML์ DOM ์ฝ์ด์ ์ ์๋ ์ถ์ํ ๊ฐ๋
์ ์๋ฆฌ๋จผํธ์ ์๋ฏธ๋ฅผ ๋ํ ๋ ์ด์ด๋ผ๊ณ ํ ์ ์์ต๋๋ค. HTML DOM์ HTML ์์์ className
๊ฐ์ ์์ฑ๊ณผ document.body
๊ฐ์ API๋ ํฌํจํฉ๋๋ค.
HTML ๋ช
์ธ๋ ๋ฌธ์์ ์ ์ฝ๋ ์ ์ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์์๊ฐ ์๋ ๋ฆฌ์คํธ๋ฅผ ๋ํ๋ด๋ <ul>
์์์ ๋ชจ๋ ์์๋ค์ ๋ฆฌ์คํธ ์์๋ฅผ ๋ํ๋ด๋ <li>
์์์ฌ์ผ ํฉ๋๋ค. ๋ํ ํ์ค์ ์ ์๋์ง ์์ ์์์ ์์ฑ์ ์ฌ์ฉํ๋ ๊ฒ๋ ๊ธ์ง๋ฉ๋๋ค.
Document
๊ฐ์ฒด, Window
๊ฐ์ฒด๋ ๋ค๋ฅธ DOM ์์๋ค์ ์ฐพ์๋ณด์๋์? DOM ๋ฌธ์์ ์ฝ์ด๋ณด์ธ์
์์๋๋งํ ๋ค๋ฅธ API
setTimeout
๊ณผsetInterval
ํจ์๋ HTML ํ์ค์Window
์ธํฐํ์ด์ค์ ์ฒ์์ผ๋ก ์ ์๋์์ต๋๋ค.- XMLHttpRequest๋ ๋น๋๊ธฐ์ HTTP ์์ฒญ์ ๋ณด๋ผ ์ ์๊ฒ ํด์ฃผ๋ API์ ๋๋ค.
- Fetch API๋ ๋คํธ์ํฌ ์์ฒญ์ ๋ํด ๋ณด๋ค ์ธ์ฒด๊ณตํ์ ์ธ ์ถ์ํ๋ฅผ ์ ๊ณตํฉ๋๋ค.
- CSS Object Model๋ CSS ๊ท์น์ ๊ฐ์ฒด์ฒ๋ผ ๋ค๋ฃฐ ์ ์๋๋ก ์ถ์ํํฉ๋๋ค.
- WebWorkers๋ ๋ณ๋ ฌ ์ฒ๋ฆฌ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํ๋ API์ ๋๋ค.
- WebSockets๋ ์๋ฐฉํฅ ์ ์์ค ํต์ ์ ๊ฐ๋ฅํ๊ฒ ํ๋ API์ ๋๋ค.
- Canvas 2D Context๋
<canvas>
์์์ ๊ทธ๋ฆด ์ ์๊ฒ ํด์ฃผ๋ API์ ๋๋ค. - WebAssembly ์ธํฐํ์ด์ค๋ JavaScript ์ฝ๋์ WebAssembly ๋ชจ๋ ๊ฐ์ ํต์ ์ ์ํ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
๋น ๋ธ๋ผ์ฐ์ ํ๊ฒฝ(์: Node.js)์๋ DOM API๊ฐ ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง์๋ฐ, ๋ฌธ์์ ์ํธ ์์ฉํ์ง ์๊ธฐ ๋๋ฌธ์
๋๋ค. fetch()
๋ฐ setTimeout()
๊ณผ ๊ฐ์ ๋ง์ ์น API๋ฅผ ๊ตฌํํฉ๋๋ค.
JavaScript ๊ตฌํ์ฒด
๋ธ๋ผ์ฐ์ ํ๊ฒฝ๊ณผ ๊ทธ ๋๋จธ์์ ์ฌ์ฉ๋๋ ์ธ ๊ฐ์ง ์ฃผ์ JavaScript ๊ตฌํ์ฒด๊ฐ ์์ต๋๋ค.
- Firefox์์ ์ฌ์ฉ๋๋ Mozilla์ SpiderMonkey๋ Netscape์ Brendan Eich๊ฐ ๋ง๋ ์ต์ด์ ever JavaScript ์์ง์ด์์ต๋๋ค.
- Google์ V8, Google Chrome, Opera, Edge, Node.js, Deno, Electron ๋ฑ์ด ์์ต๋๋ค.
- Apple Safari์ ๊ฐ์ WebKit ๋ธ๋ผ์ฐ์ ์์ ์ฌ์ฉ๋๋ Apple์ JavaScriptCore(SquirrelFish/Nitro๋ผ๊ณ ๋ ํจ) ๋ฐ Bun.
์์ ๊ตฌํ์ฒด ์ธ์๋ ๋ค์๊ณผ ๊ฐ์ ์ธ๊ธฐ ์๋ ๋ค๋ฅธ JavaScript ์์ง์ด ์์ต๋๋ค.
- Carakan, ์ด์ ๋ฒ์ ์ Opera์์ ์ฌ์ฉ๋์์ต๋๋ค.
- Internet Explorer์์ ์ฌ์ฉ๋๋ Microsoft์ Chakra ์์ง(์ํ๊ถ ๋ฌธ์ ๋ฅผ ํผํ๊ธฐ ์ํด ๊ตฌํํ๋ ์ธ์ด๋ฅผ ๊ณต์์ ์ผ๋ก "JScript"๋ผ๊ณ ํฉ๋๋ค). ์ด์ ๋ฒ์ ์ Edge๋ ํผ๋์ค๋ฝ๊ฒ๋ Chakra๋ผ๊ณ ๋ ํ๋ ์๋ก์ด JavaScript ์์ง์ ์ฌ์ฉํ์ต๋๋ค.
- LibJS, SerenityOS์ ๋ธ๋ผ์ฐ์ ๊ตฌํ์ ์ฌ์ฉ๋ฉ๋๋ค.
- Mozilla์ Rhino ์์ง, Java๋ก ์์ฑ๋ JavaScript ๊ตฌํ์ผ๋ก ์ฃผ๋ก Norris Boyd(์ญ์ Netscape)๊ฐ ๋ง๋ค์์ต๋๋ค.
๋น ๋ธ๋ผ์ฐ์ ์ฉ์ผ๋ก ํน๋ณํ ์ ์๋ ์ผ๋ถ ์์ง์ด ์์ต๋๋ค.
- Engine262, JavaScript๋ก ์์ฑ๋ JavaScript ์์ง์ ๋๋ค. JavaScript ๊ฐ๋ฐ์๊ฐ ์๋ก์ด ์ธ์ด ๊ธฐ๋ฅ์ ํ์ํ๊ณ ๋ช ์ธ์์ ๋ฒ๊ทธ๋ฅผ ์ฐพ์ ์ ์๋๋ก ๋ง๋ค์ด์ก์ต๋๋ค.
- IoT์ ๊ฐ์ ์๋ฒ ๋๋ ์์คํ ์์ ์ฌ์ฉ๋๋ Moddable XS.
- QuickJS, ์๊ณ ์ฝ์ ๊ฐ๋ฅํ JavaScript ์์ง์ ๋๋ค.
- Meta์ Hermes ์์ง์ React Native์ ์ต์ ํ๋ ์์ง์ ๋๋ค.
- Oracle์ GraalJS, Oracle Labs์์ GraalVM์ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌ์ถํ ๊ณ ์ฑ๋ฅ ๊ตฌํ์ฒด์ ๋๋ค.
JavaScript ์์ง์ ์์ฉ ํ๋ก๊ทธ๋จ ๊ฐ๋ฐ์๊ฐ JavaScript๋ฅผ ์ํํธ์จ์ด์ ํตํฉํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ๊ณต์ฉ API๋ฅผ ๋ ธ์ถํฉ๋๋ค. ์ง๊ธ๊น์ง JavaScript์ ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ํธ์คํธ ํ๊ฒฝ์ ์น ๋ธ๋ผ์ฐ์ ์ ๋๋ค. ์น ๋ธ๋ผ์ฐ์ ๋ ์ผ๋ฐ์ ์ผ๋ก ๊ณต์ฉ API๋ฅผ ์ฌ์ฉํ์ฌ DOM์ JavaScript์ ๋ฐ์ํ๋ ํธ์คํธ ๊ฐ์ฒด๋ฅผ ์์ฑํฉ๋๋ค.
JavaScript์ ๋ ๋ค๋ฅธ ์ผ๋ฐ์ ์ธ ์์ฉ ํ๋ก๊ทธ๋จ์ (์น) ์๋ฒ ์ธก ์คํฌ๋ฆฝํ ์ธ์ด์ ๋๋ค. JavaScript ์น ์๋ฒ๋ HTTP ์์ฒญ ๋ฐ ์๋ต ๊ฐ์ฒด๋ฅผ ๋ํ๋ด๋ ํธ์คํธ ๊ฐ์ฒด๋ฅผ ๋ ธ์ถํ ๋ค์ JavaScript ํ๋ก๊ทธ๋จ์์ ์กฐ์ํ์ฌ ์น ํ์ด์ง๋ฅผ ๋์ ์ผ๋ก ์์ฑ ํ ์ ์์ต๋๋ค. Node.js๊ฐ ์ด์ ๋ํ ์ธ๊ธฐ ์๋ ์์ ๋๋ค.
์
JavaScript ์์ ์ฌ์ฉํ๋ฉด ์น ํ์ด์ง๋ฅผ ๋ค์ ๋ก๋ํ์ง ์๊ณ ๋ JavaScript ์ฝ๋ ์กฐ๊ฐ์ ๋น ๋ฅด๊ฒ ํ ์คํธ ํ ์ ์์ต๋๋ค. ์ฝ๋ ๊ฐ๋ฐ ๋ฐ ๋๋ฒ๊น ์ ๋งค์ฐ ์ ์ฉํฉ๋๋ค.
๋ ๋ฆฝํ JavaScript ์
๋ค์ JavaScript ์์ Perl ๋๋ Python๊ณผ ๊ฐ์ ๋ ๋ฆฝ ์คํํ ํ๊ฒฝ์ ๋๋ค.
๋ธ๋ผ์ฐ์ ๊ธฐ๋ฐ JavaScript ์
๋ค์ JavaScript ์์ ๋ธ๋ผ์ฐ์ ์ JavaScript ์์ง์ ํตํด ์ฝ๋๋ฅผ ์คํํฉ๋๋ค.
- Firefox์๋ ์ฌ๋ฌ ์ค ํธ์ง์ ์ง์ํ๋ ๋ด์ฅ JavaScript ์ฝ์์ด ์์ต๋๋ค.
- Babel REPL - ๋ฏธ๋์ JavaScript ์คํ์ ์ํ ๋ธ๋ผ์ฐ์ ๊ธฐ๋ฐ REPL์ ๋๋ค.
- TypeScript ํ๋ ์ด๊ทธ๋ผ์ด๋ โ ์๋ก์ด JavaScript ๊ธฐ๋ฅ(tsc ์ปดํ์ผ๋ฌ๋ฅผ ํตํด)๊ณผ TypeScript ๋ฌธ๋ฒ์ ์คํํ๊ธฐ ์ํ ๋ธ๋ผ์ฐ์ ๊ธฐ๋ฐ ํ๋ ์ด๊ทธ๋ผ์ด๋์ ๋๋ค.
๋๊ตฌ ๋ฐ ๋ฆฌ์์ค
JavaScript ์ฝ๋ ์์ฑ ๋ฐ ๋๋ฒ๊น ์ ์ ์ฉํ ๋๊ตฌ์ ๋๋ค.
- Firefox ๊ฐ๋ฐ์ ๋๊ตฌ
- JavaScript ๋ฐฐ์ฐ๊ธฐ
-
์น ๊ฐ๋ฐ์ ์ง๋ง์์ ์ํ ํ์ํ ๋ฆฌ์์ค โ ์๋ํ๋ ํ๊ฐ ์๋ด์ ๋ฐ๋ผ ์งง์ ๊ฐ์์ ๋ํํ ํ ์คํธ๋ฅผ ํตํด ๋ํํ ํ๊ฒฝ์์ JavaScript๋ฅผ ํ์ตํฉ๋๋ค. ์ฒ์ 40๊ฐ ๋ ์จ์ ๋ฌด๋ฃ์ด๋ฉฐ ์์ก์ ์ผํ์ฑ ๊ฒฐ์ ๋ก ์ ์ฒด ๊ณผ์ ์ ์๊ฐํ ์ ์์ต๋๋ค.
- TogetherJS
-
ํ์ ์ด ์ฌ์์ง๋๋ค. ์ฌ์ดํธ์ TogetherJS๋ฅผ ์ถ๊ฐํ๋ฉด ์ฌ์ฉ์๊ฐ ์น์ฌ์ดํธ์์ ์ค์๊ฐ์ผ๋ก ์๋ก ๋์ธ ์ ์์ต๋๋ค!
- Stack Overflow
-
"JavaScript"๋ก ํ๊ทธ๊ฐ ์ง์ ๋ ์คํ ์ค๋ฒํ๋ก ์ง๋ฌธ์ ๋๋ค.
- JSFiddle
-
JavaScript, CSS ๋ฐ HTML์ ํธ์งํ๊ณ ์ค์๊ฐ ๊ฒฐ๊ณผ๋ฅผ ์ป์ต๋๋ค. ์ธ๋ถ ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ๊ณ ์จ๋ผ์ธ์์ ํ๊ณผ ํ์ ํ์ญ์์ค.
- Plunker
-
Plunker๋ ์น ๊ฐ๋ฐ ์์ด๋์ด๋ฅผ ๋ง๋ค๊ณ ํ์ ํ๊ณ ๊ณต์ ํ ์ ์๋ ์จ๋ผ์ธ ์ปค๋ฎค๋ํฐ์ ๋๋ค. JavaScript, CSS ๋ฐ HTML ํ์ผ์ ํธ์งํ๊ณ ์ค์๊ฐ ๊ฒฐ๊ณผ ๋ฐ ํ์ผ ๊ตฌ์กฐ๋ฅผ ์ป์ผ์ญ์์ค.
- JSBin
-
JS Bin์ ์คํ ์์ค ํ์ ์น ๊ฐ๋ฐ ๋๋ฒ๊น ๋๊ตฌ์ ๋๋ค.
- Codepen
-
Codepen์ ๋ผ์ด๋ธ ๊ฒฐ๊ณผ ๋์ดํฐ๋ก ์ฌ์ฉ๋๋ ๋ ๋ค๋ฅธ ํ์ ์น ๊ฐ๋ฐ ๋๊ตฌ์ ๋๋ค.
- StackBlitz
-
StackBlitz๋ React, Angular ๋ฑ์ ์ฌ์ฉํ์ฌ ์ ์ฒด ์คํ ์ ํ๋ฆฌ์ผ์ด์ ์ ํธ์คํ ํ๊ณ ๋ฐฐํฌํ ์ ์๋ ๋ ๋ค๋ฅธ ์จ๋ผ์ธ ๋์ดํฐ/๋๋ฒ๊น ๋๊ตฌ์ ๋๋ค.
- RunJS
-
RunJS๋ ๋ ธ๋ ๋ฐ ๋ธ๋ผ์ฐ์ API ๋ชจ๋์ ๋ํ ์ค์๊ฐ ๊ฒฐ๊ณผ์ ์ก์ธ์ค๋ฅผ ์ ๊ณตํ๋ ๋ฐ์คํฌํ ํ๋ ์ด๊ทธ๋ผ์ด๋/์คํฌ๋์นํจ๋ ๋๊ตฌ์ ๋๋ค.