์ƒ์„ธ ์ปจํ…์ธ 

๋ณธ๋ฌธ ์ œ๋ชฉ

[Node.js] 2์žฅ ์•Œ์•„๋‘์–ด์•ผ ํ•  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ

22-23/22-23 Node.js

by Kimpeep 2022. 9. 19. 19:00

๋ณธ๋ฌธ

728x90

๐Ÿ” 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


Node.js 

Editor : PeeP 

728x90

๊ด€๋ จ๊ธ€ ๋”๋ณด๊ธฐ