[JavaScript] Babel๊ณผ Webpack์„ ์ด์šฉํ•œ ES6+/ES.NEXT ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ๊ตฌ์ถ•

ํฌ๋กฌ, ์‚ฌํŒŒ๋ฆฌ, ํŒŒ์ด์–ดํญ์Šค, ์—ฃ์ง€ ๊ฐ™์€ ์—๋ฒ„๊ทธ๋ฆฐ ๋ธŒ๋ผ์šฐ์ €์˜ ES6 ์ง€์›์œจ์€ ์•ฝ 98%๋กœ ๊ฑฐ์˜ ๋Œ€๋ถ€๋ถ„ ES6 ์‚ฌ์–‘์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ IE 11์˜ ES6 ์ง€์›์œจ์€ ์•ฝ 11%์ด๊ณ . ES6 ์ด์ƒ์˜ ๋ฒ„์ „(ES6+)๊ณผ ์ œ์•ˆ ๋‹จ๊ณ„์— ์žˆ๋Š” ES ์ œ์•ˆ ์‚ฌ์–‘(ES.NEXT)์€ ๋ธŒ๋ผ์šฐ์ €์— ๋”ฐ๋ผ ์ง€์›์œจ์ด ๋‹ค๋ฅธ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ES6+์™€ ES.NEXT์˜ ์ตœ์‹  ESCMAScript ์‚ฌ์–‘์„ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ ค๋ฉด ์ตœ์‹  ์‚ฌ์–‘์œผ๋กœ ์ž‘์„ฑ๋œ ์ฝ”๋“œ๋ฅผ ๊ฒฝ์šฐ์— ๋”ฐ๋ผ IE๋ฅผ ํฌํ•จํ•œ ๊ตฌํ˜• ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋ฌธ์ œ ์—†์ด ๋™์ž‘์‹œํ‚ค๊ธฐ ์œ„ํ•œ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•˜๋Š” ๊ฒƒ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ๋Œ€๋ถ€๋ถ„์˜ ํ”„๋กœ์ ํŠธ๊ฐ€ ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ES6 ๋ชจ๋“ˆ(ESM)์™ธ์˜ ๋ณ„๋„์˜ ๋ชจ๋“ˆ ๋กœ๋”๋„ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. IE๋ฅผ ํฌํ•จํ•œ ๊ตฌํ˜• ๋ธŒ๋ผ์šฐ์ €๋Š” ESM์„ ์ง€์›X ESM์„ ์‚ฌ์šฉ..

[JavaScript] ๋ชจ๋“ˆ

๋ชจ๋“ˆ์˜ ์ผ๋ฐ˜์  ์˜๋ฏธ ๋ชจ๋“ˆ(module)์ด๋ž€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์„ฑํ•˜๋Š” ๊ฐœ๋ณ„์  ์š”์†Œ๋กœ์„œ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ ์กฐ๊ฐ์„ ๋งํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๋ชจ๋“ˆ์€ ๊ธฐ๋Šฅ์„ ๊ธฐ์ค€์œผ๋กœ ํŒŒ์ผ ๋‹จ์œ„๋กœ ๋ถ„๋ฆฌ ๋ชจ๋“ˆ์ด ์„ฑ๋ฆฝํ•˜๋ ค๋ฉด ๋ชจ๋“ˆ์€ ์ž์‹ ๋งŒ์˜ ํŒŒ์ผ ์Šค์ฝ”ํ”„(๋ชจ๋“ˆ ์Šค์ฝ”ํ”„)๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์–ด์•ผ ํ•จ ๋ชจ๋“ˆ์˜ ์ž์‚ฐ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์บก์Šํ™”๋˜์–ด ๋น„๊ณต๊ฐœ ์ƒํƒœ๋กœ ๊ฐœ๋ณ„์  ์กด์žฌ๋กœ์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ๋ถ„๋ฆฌ๋˜์–ด ์กด์žฌ ๊ณต๊ฐœ๊ฐ€ ํ•„์š”ํ•œ ์ž์‚ฐ์— ํ•œ์ •ํ•˜์—ฌ export๋ฅผ ํ†ตํ•ด ๋ช…์‹œ์ ์œผ๋กœ ์„ ํƒ์  ๊ณต๊ฐœ๊ฐ€ ๊ฐ€๋Šฅ ๋ชจ๋“ˆ ์‚ฌ์šฉ์ž๋Š” ๋ชจ๋“ˆ์ด ๊ณต๊ฐœํ•œ ์ž์‚ฐ ์ค‘ ์ผ๋ถ€ ๋˜๋Š” ์ „์ฒด๋ฅผ ์„ ํƒํ•ด import๋กœ ์ž์‹ ์˜ ์Šค์ฝ”ํ”„ ๋‚ด๋กœ ๋ถˆ๋Ÿฌ๋“ค์—ฌ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅ ์ด์ฒ˜๋Ÿผ ๋ชจ๋“ˆ์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ๋ถ„๋ฆฌ๋˜์–ด ๊ธฐ๋Šฅ๋ณ„๋กœ ๋ถ„๋ฆฌ๋œ ๊ฐœ๋ณ„์  ํŒŒ์ผ๋กœ ์กด์žฌํ•˜๋‹ค๊ฐ€ ํ•„์š”์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ๋ชจ๋“ˆ์— ์˜ํ•ด ์žฌ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ชจ๋“ˆ์€ ์ฝ”๋“œ์˜ ๋‹จ์œ„๋ฅผ ๋ช…ํ™•ํžˆ ๋ถ„๋ฆฌํ•˜..

[JavaScript] ์ œ๋„ˆ๋ ˆ์ดํ„ฐ์™€ async/await

์ œ๋„ˆ๋ ˆ์ดํ„ฐ๋ž€? ES6์—์„œ ๋„์ž…๋œ ์ œ๋„ˆ๋ ˆ์ดํ„ฐ(generator)๋Š” ์ฝ”๋“œ ๋ธ”๋ก์˜ ์‹คํ–‰์„ ์ผ์‹œ ์ค‘์ง€ํ–ˆ๋‹ค๊ฐ€ ํ•„์š”ํ•œ ์‹œ์ ์— ์žฌ๊ฐœํ•  ์ˆ˜ ์žˆ๋Š” ํŠน์ˆ˜ํ•œ ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค. ์ œ๋„ˆ๋ ˆ์ดํ„ฐ์™€ ์ผ๋ฐ˜ ํ•จ์ˆ˜์˜ ์ฐจ์ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. 1. ์ œ๋„ˆ๋ ˆ์ดํ„ฐ ํ•จ์ˆ˜๋Š” ํ•จ์ˆ˜ ํ˜ธ์ถœ์ž์—๊ฒŒ ํ•จ์ˆ˜ ์‹คํ–‰์˜ ์ œ์–ด๊ถŒ์„ ์–‘๋„ํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ ์ดํ›„ ํ•จ์ˆ˜ ์‹คํ–‰์„ ์ œ์–ดํ•  ์ˆ˜ ์—†๋Š” ์ผ๋ฐ˜ ํ•จ์ˆ˜์™€ ๋‹ฌ๋ฆฌ ์ œ๋„ˆ๋ ˆ์ดํ„ฐ๋Š” ํ•จ์ˆ˜ ํ˜ธ์ถœ์ž๊ฐ€ ํ•จ์ˆ˜ ์‹คํ–‰์„ ์ผ์‹œ ์ค‘์ง€์‹œํ‚ค๊ฑฐ๋‚˜ ์žฌ๊ฐœ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 2. ์ œ๋„ˆ๋ ˆ์ดํ„ฐ ํ•จ์ˆ˜๋Š” ํ•จ์ˆ˜ ํ˜ธ์ถœ์ž์™€ ํ•จ์ˆ˜์˜ ์ƒํƒœ๋ฅผ ์ฃผ๊ณ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค. ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š” ๋™์•ˆ ํ•จ์ˆ˜ ์™ธ๋ถ€์—์„œ ํ•จ์ˆ˜ ๋‚ด๋ถ€๋กœ ๊ฐ’์„ ์ „๋‹ฌํ•˜์—ฌ ํ•จ์ˆ˜์˜ ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋Š” ์ผ๋ฐ˜ ํ•จ์ˆ˜์™€ ๋‹ฌ๋ฆฌ ์ œ๋„ˆ๋ ˆ์ดํ„ฐ ํ•จ์ˆ˜๋Š” ํ•จ์ˆ˜ ํ˜ธ์ถœ์ž์™€ ์–‘๋ฐฉํ–ฅ์œผ๋กœ ํ•จ์ˆ˜์˜ ์ƒํƒœ๋ฅผ ์ฃผ๊ณ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 3. ์ œ๋„ˆ๋ ˆ์ดํ„ฐ ํ•จ..

[JavaScript] ํ”„๋กœ๋ฏธ์Šค(Promise)

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ํ•˜๋‚˜์˜ ํŒจํ„ด์œผ๋กœ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ „ํ†ต์ ์ธ ์ฝœ๋ฐฑ ํŒจํ„ด์€ ์ฝœ๋ฐฑ ์ง€์˜ฅ(Callback Hell)๋กœ ์ธํ•ด ๊ฐ€๋…์„ฑ์ด ๋‚˜์˜๊ณ  ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ์ค‘ ๋ฐœ์ƒํ•œ ์—๋Ÿฌ์˜ ์ฒ˜๋ฆฌ๊ฐ€ ๊ณค๋ž€ํ•˜๋ฉฐ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋ฅผ ํ•œ๋ฒˆ์— ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ๋„ ํ•œ๊ณ„๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ES6์—์„œ๋Š” ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ๋˜ ๋‹ค๋ฅธ ํŒจํ„ด์œผ๋กœ ํ”„๋กœ๋ฏธ์Šค(Promise)๋ฅผ ๋„์ž…ํ–ˆ์œผ๋ฉฐ ์ด๋Š” ์ „ํ†ต์ ์ธ ์ฝœ๋ฐฑ ํŒจํ„ด์ด ๊ฐ€์ง„ ๋‹จ์ ์„ ๋ณด์™„ํ•˜๋ฉฐ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ์‹œ์ ์„ ๋ช…ํ™•ํ•˜๊ฒŒ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ์ฝœ๋ฐฑ ํŒจํ„ด์˜ ๋‹จ์  ์ฝœ๋ฐฑ ์ง€์˜ฅ(Callbak Hell) ๋น„๋™๊ธฐ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ํ•จ์ˆ˜ ๋‚ด๋ถ€์˜ ๋น„๋™๊ธฐ๋กœ ๋™์ž‘ํ•˜๋Š” ์ฝ”๋“œ๊ฐ€ ์™„๋ฃŒ๋˜์ง€ ์•Š์•˜๋‹ค ํ•ด๋„ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ์ฆ‰์‹œ ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค. ๋น„๋™๊ธฐ ํ•จ์ˆ˜๋Š” ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ์™ธ๋ถ€์— ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์—†..

[JavaScript] REST API

REST API(REpresentational State Transfer)๋ž€? REST๋Š” HTTP๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์˜ ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ์‹์„ ๊ทœ์ •ํ•œ ์•„ํ‚คํ…์ฒ˜๊ณ , REST API๋Š” REST๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์„œ๋น„์Šค API๋ฅผ ๊ตฌํ˜„ํ•œ ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. *๋กœ์ด ํ•„๋”ฉ์ด ์ž์‹ ์˜ 2000๋…„ ๋…ผ๋ฌธ์—์„œ ๋ฐœํ‘œ ๋‹น์‹œ ์›น HTTP๋ฅผ ์ œ๋Œ€๋กœ ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•˜๊ณ  ์žˆ๋Š” ์ƒํ™ฉ์„ ๋ณด๊ณ  ์†Œ๊ฐœํ•จ HTTP์˜ ์žฅ์ ์„ ์ตœ๋Œ€ํ•œ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์•„ํ‚คํ…์ฒ˜ HTTP ํ”„๋กœํ† ์ฝœ์„ ์˜๋„์— ๋งž๊ฒŒ ๋””์ž์ธํ•˜๋„๋ก ์œ ๋„ํ•จ REST์˜ ๊ธฐ๋ณธ ์›์น™์„ ์„ฑ์‹คํžˆ ์ง€ํ‚จ ์„œ๋น„์Šค ๋””์ž์ธ์„ "RESTful"์ด๋ผ๊ณ  ํ‘œํ˜„ *๋กœ์ด ํ•„๋”ฉ : ์•„ํŒŒ์น˜ HTTP ์„œ๋ฒ„ ํ”„๋กœ์ ํŠธ์˜ ๊ณต๋™ ์„ค๋ฆฝ์ž๋กœ HTTP/1.0๊ณผ 1.1์˜ ์ŠคํŽ™ ์ž‘์„ฑ์— ์ฐธ์—ฌํ•จ REST API์˜ ๊ตฌ์„ฑ REST API๋Š” ์ž์›(reso..

[JavaScript] Ajax

Ajax๋ž€? Ajax(Asynchronous JavaScript and XML)๋ž€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์„œ๋ฒ„์—๊ฒŒ ๋น„๋™๊ธฐ ๋ฐฉ์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•˜๊ณ , ์„œ๋ฒ„๊ฐ€ ์‘๋‹ตํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์‹ ํ•˜์—ฌ ์›นํŽ˜์ด์ง€๋ฅผ ๋™์ ์œผ๋กœ ๊ฐฑ์‹ ํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์„ ๋งํ•ฉ๋‹ˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ œ๊ณตํ•˜๋Š” Web API์ธ XMLHttpRequest ๊ฐ์ฒด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ XMLHttpRequest๋Š” HTTP ๋น„๋™๊ธฐ ํ†ต์‹ ์„ ์œ„ํ•œ ๋ฉ”์„œ๋“œ์™€ ํ”„๋กœํผํ‹ฐ๋ฅผ ์ œ๊ณต ์ด์ „์˜ ์›นํŽ˜์ด์ง€๋Š” ์™„์ „ํ•œ HTML์„ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์ „์†ก๋ฐ›์•„ ์›นํŽ˜์ด์ง€ ์ „์ฒด๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค์‹œ ๋ Œ๋”๋ง ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ, ๋ณ€๊ฒฝํ•  ํ•„์š”๊ฐ€ ์—†๋Š” ๋ถ€๋ถ„๊นŒ์ง€ ๋‹ค์‹œ ๋ Œ๋”๋ง๋˜๋Š” ๋‹จ์ ์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ Ajax์˜ ๋“ฑ์žฅ์€ ์ด์ „์˜ ์ „ํ†ต์ ์ธ ํŒจ๋Ÿฌ๋‹ค์ž„์„ ํš๊ธฐ์ ์œผ๋กœ ์ „ํ™˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์›นํŽ˜์ด์ง€์˜ ๋ณ€๊ฒฝ์— ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋งŒ..

[JavaScript] ํƒ€์ด๋จธ

ํ˜ธ์ถœ ์Šค์ผ€์ค„๋ง ํ•จ์ˆ˜๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์ฆ‰์‹œ ํ˜ธ์ถœํ•˜์ง€ ์•Š๊ณ  ์ผ์ • ์‹œ๊ฐ„์ด ๊ฒฝ๊ณผ๋œ ์ดํ›„์— ํ˜ธ์ถœ๋˜๋„๋ก ํ•จ์ˆ˜ ํ˜ธ์ถœ์„ ์˜ˆ์•ฝํ•˜๋ ค๋ฉด ํƒ€์ด๋จธ ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ˜ธ์ถœ ์Šค์ผ€์ค„๋ง์ด๋ผ ํ•ฉ๋‹ˆ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ํƒ€์ด๋จธ๋ฅผ ์ƒ์„ฑ/์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ๋Š” ํƒ€์ด๋จธ ํ•จ์ˆ˜๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ECMAScrip ์‚ฌ์–‘์— ์ •์˜๋œ ๋นŒํŠธ์ธ ํ•จ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ฉฐ ๋ธŒ๋ผ์šฐ์ €/Node.js ํ™˜๊ฒฝ์—์„œ ์ „์—ญ ๊ฐ์ฒด์˜ ๋ฉ”์„œ๋“œ๋กœ์„œ ์ œ๊ณตํ•˜๋Š” ํ˜ธ์ŠคํŠธ ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค. ํƒ€์ด๋จธ๋ฅผ ์ƒ์„ฑํ•˜๋Š” setTimeout๊ณผ setInterval ํƒ€์ด๋จธ ํ•จ์ˆ˜๋Š” ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. ํƒ€์ด๋จธ ํ•จ์ˆ˜ setTimeout / clearTimout setTimeout ํ•จ์ˆ˜๋Š” ๋‘๋ฒˆ์งธ ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋ฐ›์€ ์‹œ๊ฐ„(ms, 1/1000์ดˆ)์œผ๋กœ ๋‹จ ํ•œ ๋ฒˆ ๋™์ž‘ํ•˜๋Š” ํƒ€์ด๋จธ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ดํ›„ ํƒ€์ด๋จธ๊ฐ€ ๋งŒ๋ฃŒ๋˜๋ฉด ์ฒซ ๋ฒˆ์งธ ์ธ..