๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

javascript/๐Ÿ“– study39

[11์ฃผ์ฐจ ์Šคํ„ฐ๋””]49์žฅ-Babel๊ณผ Webpack ์ด์š”ํ•œ ES6+/ES.NEXT ๊ฐœ๋ฐœํ™˜๊ฒฝ ๊ตฌ์ถ• Babel๊ณผ WebPack์„ ์ด์šฉํ•œ ES6+/ES.NEXT ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ๊ตฌ์ถ• ๋งค๋…„ ์ƒˆ๋กญ๊ฒŒ ๋„์ž…๋˜๋Š” ES6์ด์ƒ์˜ ๋ฒ„์ „(ES6+)๊ณผ ์ œ์•ˆ ๋‹จ๊ณ„์— ์žˆ๋Š” ES ์ œ์•ˆ ์‚ฌ์–‘(ES.NEXT)์€ ๋ธŒ๋ผ์šฐ์ €์— ๋”ฐ๋ผ ์ง€์›์œจ์ด ์ œ๊ฐ๊ฐ ๋”ฐ๋ผ์„œ ์ตœ์‹  ์‚ฌ์–‘์œผ๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ ค๋ฉด ๊ตฌํ˜• ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋ฌธ์ œ ์—†์ด ๋™์ž‘ ์‹œํ‚ค๊ธฐ ์œ„ํ•œ ๊ฐœ๋ฐœํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•˜๋Š” ๊ฒƒ์ด ํ•„์š”ํ•˜๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ํ”„๋กœ์ ํŠธ๊ฐ€ ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ๋ชจ๋“ˆ ๋กœ๋”๋„ ํ•„์š”ํ•˜๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ด์œ ๋กœ ESM ๋ณด๋‹ค ๋ณ„๋„์˜ ๋ชจ๋“ˆ ๋กœ๋”๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์  IE๋ฅผ ํฌํ•จํ•œ ๊ตฌํ˜„ ๋ธŒ๋ผ์šฐ์ €๋Š” ESM์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค. ESM์„ ์‚ฌ์šฉํ•˜๋”๋ผ๋„ ํŠธ๋žœ์Šค ํŒŒ์ผ๋ง์ด๋‚˜ ๋ฒˆ๋“ค๋ง์ด ํ•„์š”ํ•œ ๊ฒƒ์€ ๋ณ€ํ•จ ์—†์Œ ESM์ด ์•„์ง ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๊ธฐ๋Šฅ(bare import ๋“ฑ..)์ด ์กด์žฌ Babel Babel์€ ํŠธ๋žœ์Šค ํŒŒ์ผ๋ง ๋„๊ตฌ.. 2022. 4. 8.
[11์ฃผ์ฐจ ์Šคํ„ฐ๋””]48์žฅ-๋ชจ๋“ˆ ๋ชจ๋“ˆ ๋ชจ๋“ˆ์˜ ์ผ๋ฐ˜์  ์˜๋ฏธ ๋ชจ๋“ˆ(module)์ด๋ž€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์„ฑํ•˜๋Š” ๊ฐœ๋ณ„์  ์š”์†Œ๋กœ์„œ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ ์กฐ๊ฐ์„ ๋งํ•œ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๋ชจ๋“ˆ์€ ๊ธฐ๋Šฅ์„ ๊ธฐ์ค€์œผ๋กœ ํŒŒ์ผ ๋‹จ์œ„๋กœ ๋ถ„๋ฆฌ ์ด๋•Œ ๋ชจ๋“ˆ์ด ์„ฑ๋Ÿฝํ•˜๋ ค๋ฉด ๋ชจ๋“ˆ ์ž์‹ ๋งŒ์˜ ํŒŒ์ผ ์Šค์ฝ”ํ”„(๋ชจ๋“ˆ ์Šค์ฝ”ํ”„)๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์–ด์•ผ ํ•จ ์ž์‹ ๋งŒ์˜ ํŒŒ์ผ ์Šค์ฝ”ํ”„๋ฅผ ๊ฐ–๋Š” ๋ชจ๋“ˆ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋น„๊ณต๊ฐœ ์ƒํƒœ ์ฆ‰, ๋ชจ๋“ˆ๋‚ด๋ถ€์˜ ๋ณ€์ˆ˜, ํ•จ์ˆ˜ ๊ฐ์ฒด ๋“ฑ ๋ชจ๋‘ ์บก์Šํ™” ๋˜์–ด ๋‹ค๋ฅธ ๋ชจ๋“ˆ์—์„œ ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ชจ๋“ˆ์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด๋‚˜ ๋‹ค๋ฅธ ๋ชจ๋“ˆ์— ์˜ํ•ด ์žฌ์‚ฌ์šฉ ๋˜์–ด์•ผ ์˜๋ฏธ๊ฐ€ ์žˆ์Œ, ๋”ฐ๋ผ์„œ ๊ณต๊ฐœ๊ฐ€ ํ•„์š”ํ•œ ์ž์‚ฐ์— ํ•œ์ •ํ•˜์—ฌ ๋ช…์‹œ์ ์œผ๋กœ ์„ ํƒ์  ๊ณต๊ฐœ๊ฐ€ ๊ฐ€๋Šฅ ํ•˜๋‹ค. ์ด๋ฅผ export๋ผ๊ณ  ํ•œ๋‹ค. export๋œ ๋ชจ๋“ˆ์€ ๋‹ค๋ฅธ ๋ชจ๋“ˆ์—์„œ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๊ณ , ์ด๋•Œ ๊ณต๊ฐœ๋œ ๋ชจ๋“ˆ์€ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“ˆ์„ ๋ชจ๋“ˆ ์‚ฌ์šฉ์ž(module consu.. 2022. 4. 8.
[11์ฃผ์ฐจ ์Šคํ„ฐ๋””]47์žฅ-์—๋Ÿฌ ์ฒ˜๋ฆฌ ์—๋Ÿฌ ์ฒ˜๋ฆฌ try ... catch ... finally ์—๋Ÿฌ ์ฒ˜๋ฆฌ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ํฌ๊ฒŒ ๋‘๊ฐ€์ง€ ์˜ˆ์™ธ ์ ์ธ ์ƒํ™ฉ์ด ๋ฐœ์ƒ ์‹œ ๋ฐ˜ํ™˜ ํ•˜๋Š” ๊ฐ’์„ if ๋ฌธ, ๋‹จ์ถ• ํ‰๊ฐ€, ์˜ต์…”๋„ ์ฒด์ด๋‹ ๋“ฑ์œผ๋กœ ์ง์ ‘ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ• ์—๋Ÿฌ ์ฒ˜๋ฆฌ ์ฝ”๋“œ๋ฅผ ๋ฏธ๋ฆฌ ๋“ฑ๋กํ•ด ๋‘๊ณ  ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์—๋Ÿฌ ์ฒ˜๋ฆฌ ์ฝ”๋“œ๋กœ ์ ํ”„ํ•˜๋„๋ก ํ•˜๋Š” ๋ฐฉ๋ฒ• try ... catch ... finally ๋Š” ๋‘๋ฒˆ ์งธ ๋ฐฉ๋ฒ• 3๊ฐœ์˜ ์ฝ”๋“œ ๋ธ”๋ก์œผ๋กœ ๊ตฌ์„ฑ try { // ์‹คํ–‰ ํ•  ์ฝ”๋“œ(์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋Š” ์ฝ”๋“œ) } catch (err) { // err ๋ณ€์ˆ˜๋ช…์€ ๋‹ค๋ฅธ ๊ฑฐ ํ•ด๋„ ๋จ // try ์ฝ”๋“œ ๋ธ”๋ก์—์„œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์ด ์ฝ”๋“œ ๋ธ”๋ก์˜ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰ ๋œ๋‹ค. // err์—๋Š” try ์ฝ”๋“œ ๋ธ”๋ก์—์„œ ๋ฐœ์ƒํ•œ Error ๊ฐ์ฒด๊ฐ€ ์ „๋‹ฌ๋œ๋‹ค. } finally { // ์—๋Ÿฌ ๋ฐœ์ƒ๊ณผ .. 2022. 4. 8.
[11์ฃผ์ฐจ ์Šคํ„ฐ๋””]46์žฅ-์ œ๋„ˆ๋ ˆ์ดํ„ฐ์™€ async / await ์ œ๋„ˆ๋ ˆ์ดํ„ฐ์™€ async/await ์ œ๋„ˆ๋ ˆ์ดํ„ฐ๋ž€? ES6์—์„œ ๋„์ž… ๋œ ์ œ๋„ˆ๋ ˆ์ดํ„ฐ๋Š” ์ฝ”๋“œ ๋ธ”๋ก์˜ ์‹คํ–‰์„ ์ผ์‹œ ์ค‘์ง€ ํ–ˆ๋‹ค๊ฐ€ ํ•„์š”ํ•œ ์‹œ์ ์— ์žฌ๊ฐœํ•  ์ˆ˜ ์žˆ๋Š” ํŠน์ˆ˜ํ•œ ํ•จ์ˆ˜ ์ž…๋‹ˆ๋‹ค. ์ผ๋ฐ˜ ํ•จ์ˆ˜์™€์˜ ์ฐจ์ด ์ œ๋„ˆ๋ ˆ์ดํ„ฐ ํ•จ์ˆ˜๋Š” ํ•จ์ˆ˜ ํ˜ธ์ถœ์ž์—๊ฒŒ ํ•จ์ˆ˜ ์‹คํ–‰์˜ ์ œ์–ด๊ถŒ์„ ์–‘๋„ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋•Œ ํ•จ์ˆ˜์˜ ์ œ์–ด๊ถŒ์„ ํ˜ธ์ถœ์ž์—๊ฒŒ ๋„˜๊ธฐ๋Š” ๊ฒƒ์„ ์–‘๋„(yield)๋ผ๊ณ  ํ•จ ์ œ๋„ˆ๋ ˆ์ดํ„ฐ ํ•จ์ˆ˜๋Š” ํ•จ์ˆ˜ ํ˜ธ์ถœ์ž์™€ ํ•จ์ˆ˜์˜ ์ƒํƒœ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค. ์ œ๋„ˆ๋ ˆ์ดํ„ฐ ํ•จ์ˆ˜๋Š” ํ•จ์ˆ˜ ํ˜ธ์ถœ์ž์—๊ฒŒ ์ƒํƒœ๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๊ณ  ํ•จ์ˆ˜ ํ˜ธ์ถœ์ž๋กœ ๋ถ€ํ„ฐ ์ƒํƒœ๋ฅผ ์ „๋‹ฌ ๋ฐ›์„ ์ˆ˜๋„ ์žˆ๋‹ค. ์ œ๋„ˆ๋ ˆ์ดํ„ฐ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ์ œ๋„ˆ๋ ˆ์ดํ„ฐ ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์ œ๋„ˆ๋ ˆ์ดํ„ฐ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ํ•จ์ˆ˜ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ดํ„ฐ๋Ÿฌ๋ธ”์ด๋ฉด์„œ ๋™์‹œ์— ์ดํ„ฐ๋ ˆ์ดํ„ฐ์ธ ์ œ๋„ˆ๋ ˆ์ดํ„ฐ ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์ œ๋„ˆ๋ ˆ์ดํ„ฐ ํ•จ์ˆ˜์˜ ์ •์˜ ์ œ.. 2022. 4. 8.
[10์ฃผ์ฐจ ์Šคํ„ฐ๋””]45์žฅ-ํ”„๋กœ๋ฏธ์Šค ํ”„๋กœ๋ฏธ์Šค ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ์ฝœ๋ฐฑ ํŒจํ„ด์˜ ๋‹จ์  ํ•จ์ˆ˜ ๋‚ด๋ถ€์— ๋น„๋™๊ธฐ๋กœ ๋™์ž‘ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ํฌํ•จํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ๋น„๋™๊ธฐ ํ•จ์ˆ˜๋ผ๊ณ  ํ•จ ๋น„๋™๊ธฐ ํ•จ์ˆ˜ ๋‚ด๋ถ€์— ๋น„๋™๊ธฐ๋กœ ๋™์ž‘ํ•˜๋Š” ์ฝ”๋“œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ? -> ๋น„๋™๊ธฐ ํ•จ์ˆ˜๊ฐ€ ์ข…๋ฃŒ๋œ ์ดํ›„์— ์™„๋ฃŒ๋จ ์ฆ‰, ๋น„๋™๊ธฐ ํ•จ์ˆ˜ ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ์™ธ๋ถ€๋กœ ๋ฐ˜ํ™˜ํ•˜๊ฑฐ๋‚˜ ์ƒ์œ„ ์Šค์ฝ”ํ”„ ๋ณ€์ˆ˜์— ํ• ๋‹นํ•˜๋ฉด ๊ธฐ๋Œ€ํ•œ ๋Œ€๋กœ ๋™์ž‘๋˜์ง€ ์•Š์Œ // GET ์š”์ฒญ์„ ์œ„ํ•œ ๋น„๋™๊ธฐ ํ•จ์ˆ˜ const get = url => { const xhr = new XMLHttpRequest(); xhr.open('GET', url); xhr.send(); xhr.onload = () => { if (xhr.status === 200) { // โ‘  ์„œ๋ฒ„์˜ ์‘๋‹ต์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. return JSON.parse(xhr.response); } console.. 2022. 4. 2.
[10์ฃผ์ฐจ ์Šคํ„ฐ๋””]44์žฅ-REST API REST API REST(Representation State Transfer)๋Š” HTTP๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์˜ ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ์‹์„ ๊ทœ์ •ํ•œ ์•„ํ‚คํ…์ฒ˜ REST API๋Š” REST๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์„œ๋น„์Šค API๋ฅผ ๊ตฌํ˜„ํ•œ๊ฒƒ์„ ์˜๋ฏธ ์ฆ‰, http๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋„คํŠธ์›Œํฌ ์ƒ์—์„œ ์ž์›์˜ ์ƒํƒœ๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ๊ฒƒ์„ REST๋ผ๊ณ  ํ•œ๋‹ค. REST์˜ ๊ธฐ๋ณธ์›์น™์„ ์„ฑ์‹คํžˆ ์ง€ํ‚จ ์„œ๋น„์Šค ๋””์ž์ธ์„ RESTful ์ด๋ผ๊ณ  ํ‘œํ˜„. REST API์˜ ๊ตฌ์„ฑ REST API๋Š” 3๊ฐ€์ง€ ์š”์†Œ๋กœ ๊ตฌ์„ฑ REST๋Š” ์ž์ฒด ํ‘œํ˜„ ๊ตฌ์กฐ๋กœ ๊ตฌ์„ฑ ๋˜์–ด, REST API ๋งŒ์œผ๋กœ HTTP ์š”์ฒญ์˜ ๋‚ด์šฉ์„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ตฌ์„ฑ ์š”์†Œ ๋‚ด์šฉ ํ‘œํ˜„ ๋ฐฉ๋ฒ• ์ž์›(resource) ์ž์› URL(์—”๋“œํฌ์ธํŠธ) ํ–‰์œ„(verb) ์ž์›์— ๋Œ€ํ•œ ํ–‰์œ„ HTTP ์š”์ฒญ ๋ฉ”์„œ๋“œ ํ‘œํ˜„(repre.. 2022. 4. 2.