[Node.js] 2์ฅ ์์๋์ด์ผ ํ ์๋ฐ์คํฌ๋ฆฝํธ
๐ ES2015+
2015๋ ์ผ์ด๋ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฌธ๋ฒ์ ๋๊ฒฉ๋ณ, ES2015 (a.k.a ES6)์ ๋ฑ์ฅ์ด ์์๋ค.
๐ ์ ES2015+์ธ๊ฐ?
๋ ธ๋ 6 ๋ฒ์ ๋ถํฐ ES2015 ๋ฌธ๋ฒ์ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ,
ํ์ฌ๋ ES2022๊น์ง ๋ฑ์ฅํ ์ํฉ์ด๋ฏ๋ก ES2015+๋ผ ํต์นญํ์ฌ ๋ถ๋ฅธ๋ค.
๐ ๊ผญ ์์๋์ด์ผ ํ๋ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฌธ๋ฒ ๋ชจ์.zip
๐ const, let
var๊ณผ ์ ์ฌํ ๋ณ์ ์ ์ธ ๋ฐฉ๋ฒ์ด๋ค.
๊ทธ๋ฌ๋ var์ ํจ์ ์ค์ฝํ๋ก ๋ธ๋ก์ ๋ฒ์์ ์๊ด์์ด ์ฌ์ฉํ ์ ์์ผ๋, const๋ let๋ ๋ธ๋ก ์ค์ฝํ๋ก ๋ธ๋ก ๋ฐ์์๋ ์ฌ์ฉํ ์ ์๋ค.
๐ ํ ํ๋ฆฟ ๋ฌธ์์ด
๊ธฐ์กด ๋ฌธ์์ด๊ณผ ๋ค๋ฅด๊ฒ ํค๋ณด๋ ์ข์ธก ์๋จ์ ์๋ ๋ฐฑํฑ ๋ฌธ์๋ก ๊ฐ์ผ๋ค. (๋ค๋ง ๋งฅ๋ถ์ ๋ฐฑํฑ ๋์ โฉ๊ฐ ๋์จ๋ค. ์์ํด๋ผ...)
๋ฐฑํฑ ์์ ๋ณ์๋ฅผ ๋ฃ์ ์ ์๋๋ฐ, ${๋ณ์} ํํ๋ก ์ฌ์ฉํ๋ค.
๐ ๊ฐ์ฒด ๋ฆฌํฐ๋ด
๊ฐ์ฒด์ ๋ฉ์๋์ ํจ์๋ฅผ ์ฐ๊ฒฐํ ๋ ์ฝ๋ก (:)๊ณผ function์ ๋ถ์ด์ง ์์๋ ๋๋ค.
๋๋ถ์ด, ์์ฑ๋ช ๊ณผ ๋ณ์๋ช ์ด ๋์ผํ ๊ฒฝ์ฐ์๋ ํ ๋ฒ๋ง ์ฌ์ฉํด๋ ๋๋ค.
๐ ํ์ดํ ํจ์
๊ธฐ์กด์ function @@@() {}๊ณผ ํจ๊ป, const @@@ = () => {}์ผ๋ก ํจ์๋ฅผ ์ ์ํ ์ ์๊ฒ ๋์๋ค.
๋๋ถ์ด ๋ณ์์ ๋์ ์, ๋์ค์ ์ฌ์ฌ์ฉํ ์ ์๊ฒ ๋๋ค.
๊ธฐ์กด๊ณผ์ ์ฐจ์ด์ ์ this ๋ฐ์ธ๋ ํ์์ด๋ฏ๋ก this ์ฌ์ฉ ์์๋ ํ์ดํ ํจ์๋ ํจ์ ์ ์ธ๋ฌธ ์ค ํ๋๋ฅผ ์ ํํ์ฌ ์ฌ์ฉํ๋ฉด ๋๋ค.
๐ ๊ตฌ์กฐ๋ถํด ํ ๋น
๊ฐ์ฒด ๋ฐ ๋ฐฐ์ด์์ ์์ฑ์ด๋ ์์๋ฅผ ๋น ๋ฅด๊ฒ ๊บผ๋ผ ์ ์๊ฒ ๋๋ค.
var getCandy = candyMachine.getCandy
const { getCandy, status: { count } } = candyMachine
// ๋์ ๋์ผํ ์๋ฏธ์ด๋ค. ๋๋๋ค!
์ฝ๋ ์ค ์๋ฅผ ์๋นํ ์ค์ฌ์ฃผ๊ธฐ ๋๋ฌธ์, ์ ์ฉํ๊ฒ ์ฌ์ฉํ ์ ์๊ฒ ๋์๋ค.
๐ ํด๋์ค
ํด๋์ค ๋ฌธ๋ฒ์ ์ถ๊ฐ๋์์ง๋ง, ๋ค๋ฅธ ์ธ์ด์ฒ๋ผ ํด๋์ค ๊ธฐ๋ฐ์ด ์๋ ํ๋กํ ํ์ ๊ธฐ๋ฐ์ผ๋ก ๋์ํ๋ค.
๐ ํ๋ก๋ฏธ์ค
์๋ฐ์คํฌ๋ฆฝํธ ๋ฐ ๋ ธ๋์์๋ ๋น๋๊ธฐ๋ฅผ ์ ํ๋๋ฐ, ํนํ ์ด๋ฒคํธ ๋ฆฌ์ค๋์์ ์ฝ๋ฐฑ ํจ์๋ฅผ ์์ฃผ ์ฌ์ฉํ๋ค. ์ด๋ฅผ ๋์ ํ์ฌ ํ๋ก๋ฏธ์ค ๊ธฐ๋ฐ์ผ๋ก ์ฌ๊ตฌ์ฑ๋ ์ฝ๋๊ฐ ๋น์ ์ ๊ธฐ๋ค๋ฆฌ๊ณ ์๋ค!
ํ๋ก๋ฏธ์ค๋ ์คํ์ ๋ฐ๋ก ํ๋, ๊ฒฐ๊ด๊ฐ์ ๋์ค์ ๋ฐ๋ ๊ฐ์ฒด์ด๋ค. ๋ชจ๋ ์คํ์ด ์๋ฃ๋ ํ, then์ด๋ catch ๋ฉ์๋๋ฅผ ํตํด ๋ฐ๊ฒ ๋๋ค.
ํ๋ก๋ฏธ์ค ์ค ํ๋๋ผ๋ reject๋๋ค๋ฉด catch๋ก ๋์ด๊ฐ๋ค.
๐ async/await
๋ ธ๋ 7.6 ๋ฒ์ ์ดํ๋ถํฐ ์ง์ํ๋ค. ES2017๋ถํฐ ์ถ๊ฐ๋์๋ค!
ํ๋ก๋ฏธ์ค์์ then๊ณผ catch๋ฅผ ๋ฐ๋ณตํด์ ์ฌ์ฉํ ๊ฒ์ ์ด๊ฒจ๋ด๊ธฐ ์ํด, async/await๊ฐ ์๊ฒจ๋ฌ๋ค.
await 000์ด resolve๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฐ ํ, ๋ค์ ๊ฒ์ผ๋ก ๋์ด๊ฐ๋ค. ๋ค๋ง, ์๋ฌ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ถ๋ถ์ด ์๊ธฐ์ try-catch๋ก ๋ก์ง์ ์ก์ ์ฃผ์ด์ผ ํ๋ค.
๐ ํ๋ก ํธ์๋ ์๋ฐ์คํฌ๋ฆฝํธ
๐ AJAX
Asynchronouse Javascript And XML์ ์ค์๋ง๋ก, ๋น๋๊ธฐ์ ์น ์๋น์ค๋ฅผ ๊ฐ๋ฐํ ๋ ์ฌ์ฉํ๋ค.
ํ์ด์ง ์ด๋ ์์ด ์๋ฒ์ ์์ฒญ์ ๋ณด๋ด๊ณ ์๋ต์ ๋ฐ๋ ๊ธฐ์ ์ด๋ค. ํ์ด์ง ์ ํ ์์ด ์๋ก์ด ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ฌ ๊ฒฝ์ฐ, ๋๋ถ๋ถ AJAX ๊ธฐ์ ์ ์ฌ์ฉํ๊ณ ์๋ค๊ณ ์๊ฐํ๋ฉด ๋๋ค.
axios.get / post ๋ฑ์ด ์์๊ฐ ๋ ์ ์๋ค.
๐ FormData
form ํ๊ทธ์ ๋ฐ์ดํฐ๋ฅผ ๋์ ์ผ๋ก ์ ์ดํ ์ ์๋ ๊ธฐ๋ฅ์ผ๋ก, AJAX๊ณผ ํจ๊ป ์ฌ์ฉ๋๋ค.
FormData ์์ฑ์๋ก formData ๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ณ , ๊ฐ์ appendํ๋ค. ์ดํ axios๋ก ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๋ฉด ๋!
๐ URIComponent
AJAX ์์ฒญ์ ๋ณด๋ผ ๋, ์ฃผ์์ ํ๊ธ์ด ๋ค์ด๊ฐ๋ ๊ฒฝ์ฐ๊ฐ ์๋ค. ์ด๋ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ฐ๋ก URIComponsent.
https://000.com/ $ {encodeURIComponent ( 'ํ๊ธ' )} ๋ฑ์ผ๋ก ์ฌ์ฉํ๋ฉด ๋๋ค.
๋ฐ๋ ์ชฝ์์๋ decodeURIComponent('%00%00%00%00')๋ก ๋ฐ์ ์ฒ๋ฆฌํ ์ ์๋ค.
๐ ๋ฐ์ดํฐ ์์ฑ, dataset
ํ๋ก ํธ์๋์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ผ ๋ ๊ฐ์ฅ ๋จผ์ ๊ณ ๋ คํ ๊ฒ์ ๋ณด์์ด๋ค. ๋ณด์๊ณผ ๋ฌด๊ดํ ๊ฒ๋ค์ ์๋ฐ์คํฌ๋ฆฝํธ ๋ณ์์ ์ ์ฅํด๋ ๋์ง๋ง, ๊ณต์์ ์ธ ๋ฐฉ๋ฒ์ ๋ฐ์ดํฐ ์์ฑ(data attribute)์ด๋ค.
์ฅ์ ์ผ๋ก๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ์ฝ๊ฒ ์ ๊ทผํ ์ ์๋ค๋ ์ ์ด ์๋ค. ์์ผ๋ก ์์ฃผ ์ฌ์ฉํ๊ฒ ๋ ์น๊ตฌ์ด๋, ์ ๊ธฐ์ตํด ๋์.
๐ ๊ฐ์ด ๋ณด๋ฉด ์ข์ ์๋ฃ ๋ชจ์.zip
es2015 ์ค๋ช : https://www.w3schools.com/js/js_es6.asp
JavaScript ES6
W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.
www.w3schools.com
๋ ธ๋ ๋ฒ์ ๋ณ ECMAScript ์คํ : https://node.green/
Node.js ES2015/ES6, ES2016 and ES2017 support
node.green