๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • ์žฅ์›์ต ๊ธฐ์ˆ ๋ธ”๋กœ๊ทธ

๐Ÿ“บ Front End62

[React-redux] ๋Š˜ ๊ทธ๋ ‡๋“ฏ Todo List ๋ฅผ ๋งŒ๋“ค์–ด๋ณด๋ฉฐ ๋ฐฐ์šฐ๋Š” ๋ฆฌ์•กํŠธ ๋ฆฌ๋•์Šค ์˜ค๋Š˜์€ React ์—์„œ Redux ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค. ๊ทธ๋Ÿฌ๊ธฐ ์œ„ํ•ด์„œ๋Š” ์šฐ์„  2๊ฐ€์ง€ ๊ธฐ์ˆ ์ด ์„ ํ–‰๋˜์–ด์•ผ ํ•œ๋‹ค. React์™€ React-Hooks Redux ์˜ ๊ธฐ๋ณธ Concept ์œ„ ๋‚ด์šฉ๋“ค์„ ๋ชจ๋ฅธ๋‹ค๋ฉด ์กฐ๊ธˆ ํž˜๋“ค์–ด์งˆ ์ˆ˜ ์žˆ์œผ๋‹ˆ ์œ„ ๋งํฌ์—์„œ ํ™•์ธํ•˜๋Š” ๊ฒƒ๋„ ์ข‹์€ ๋ฐฉ๋ฒ•์ธ ๊ฒƒ ๊ฐ™๋‹ค. ๋ชฉ์ฐจ redux์™€ react-redux์˜ ์ฐจ์ด redux ์˜ ๊ธฐ๋ณธ ๊ฐœ๋… ๊ตฌ์„ฑ ์š”์†Œ Provider useDispatch() useSelector() react-redux ๋กœ todo list ๋งŒ๋“ค๊ธฐ ํ”„๋กœ์ ํŠธ ๋งŒ๋“ค๊ธฐ ์˜์กด์„ฑ ์ถ”๊ฐ€ styled-components react-redux UI ์ž‘์—…ํ•˜๊ธฐ ํ™ˆ ํ™”๋ฉด ๋งŒ๋“ค๊ธฐ ๋ฆฌ๋•์Šค ์ž‘์—…ํ•˜๊ธฐ action type ๋งŒ๋“ค๊ธฐ action creator ๋งŒ๋“ค๊ธฐ reducer ๋งŒ๋“ค๊ธฐ s.. 2021. 6. 10.
[Javascript] Fetch API๋กœ ๊ตฌํ˜„ํ•˜๋Š” Ajax ๋น„๋™๊ธฐ ํ†ต์‹  ajax XMLHttpRequest ๊ฐ์ฒด๋ฅผ ์ด์šฉํ•ด์„œ ์›น ์„œ๋ฒ„์™€ ๋น„๋™๊ธฐ๋กœ ํ†ต์‹ ํ•˜๊ณ , DOM ์„ ์ด์šฉํ•ด์„œ ์›น ํŽ˜์ด์ง€๋ฅผ ๋™์ ์œผ๋กœ ๋ฐ”๊ฟ”์ฃผ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ๋ฒ• Asynchronouse JavaScript XML ํ˜„์žฌ XML์„ ์‚ฌ์šฉํ•˜๋Š”๊ฑด ๋“œ๋ฌผ๊ณ  JSON์„ ์‚ฌ์šฉ ํŽ˜์ด์ง€ ์ƒˆ๋กœ๊ณ ์นจ ์—†์ด ํŠน์ • ๋ฐ์ดํ„ฐ๋งŒ ๋ฆฌ๋กœ๋“œ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›๊ณ  ์ž‘์—…์„ ์ˆ˜ํ–‰ ajax ๊ตฌํ˜„ํ•˜๊ธฐ ajax๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๊ธฐ์ˆ ์—๋Š” ์—ฌ๋Ÿฌ ๊ธฐ์ˆ ์ด ์กด์žฌํ•œ๋‹ค. ๊ทธ ์ค‘์— ๋Œ€ํ‘œ์ ์ธ 3๊ฐ€์ง€์—์„œ Fetch API์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž. XMLHttpRequest Fetch API JQuery Fetch API Fetch API๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ XMLHttpRequest ๋ณด๋‹ค ๋” ๊ฐ•๋ ฅํ•˜๊ณ  ์œ ์—ฐํ•˜๋‹ค. ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜์ธ XMLHttpRequest๊ณผ๋Š” ๋‹ฌ๋ฆฌ Fetch API๋Š” Promise ๊ธฐ.. 2021. 2. 26.
[Javascript] ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ HTML Element์˜ ์ด๋ฒคํŠธ๋ฅผ ๋‹ค๋ฃจ๋Š” ๋ฐฉ๋ฒ• ์ด๋ฒˆ ์‹œ๊ฐ„์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ HTML ์š”์†Œ์˜ ์ด๋ฒคํŠธ๋ฅผ ๋‹ค๋ฃจ๋Š” ๋ฐฉ๋ฒ•๊ณผ Todolist๋ฅผ ๋งŒ๋“ค์–ด๋ณด๋ฉฐ ํ•™์Šตํ•˜๋Š” ์‹œ๊ฐ„์„ ๊ฐ–๋„๋ก ํ•˜๊ฒ ๋‹ค. ํ•™์Šต ์ˆœ์„œ ์ด๋ฒคํŠธ ๊ฐ์ฒด๋ž€? ์ด๋ฒคํŠธ ๋“ฑ๋ก, ์‚ญ์ œํ•˜๊ธฐ addEventListener() removeEventListner() ์ง€๊ธˆ๊นŒ์ง€ ๋ฐฐ์šด ๋‚ด์šฉ์œผ๋กœ Todo ๋ฆฌ์ŠคํŠธ ๋งŒ๋“ค์–ด๋ณด๊ธฐ ์ด๋ฒคํŠธ ๋“ฑ๋ก, ์‚ญ์ œํ•˜๊ธฐ ์šฐ๋ฆฌ๋Š” ์ง€๋‚œ ์‹œ๊ฐ„ ๊นŒ์ง€ HTML Element๋ฅผ ๋“ฑ๋ก, ์ˆ˜์ •, ์‚ญ์ œํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ํ•™์Šตํ•˜์˜€๋‹ค. ์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” ์šฐ๋ฆฌ๊ฐ€ ์ง€๋‚œ๋ฒˆ์— ๋งŒ๋“  Element์— ์ด๋ฒคํŠธ๋“ค ๋“ฑ๋ก์‹œ์ผœ๋ณด๋Š” ์ผ์„ ํ•  ๊ฒƒ์ด๋‹ค. ์ด๋ฒคํŠธ ๋“ฑ๋กํ•˜๊ธฐ ์ด๋ฒคํŠธ๋ฅผ ๋“ฑ๋กํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” addEventListener() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. target.addEventListener(type, listener, useCapture); targe.. 2021. 2. 20.
[Javascript] ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ HTML DOM์„ ๋‹ค๋ฃจ๋Š” ๋ฐฉ๋ฒ• ์˜ค๋Š˜์€ JS ์—์„œ HTML DOM ๊ฐ์ฒด๋ฅผ ๊ฐ€์ ธ์™€ ์กฐ์ž‘ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณผ ๊ฒƒ์ด๋‹ค. ์˜ค๋Š˜ ๋ฐฐ์šธ ๋‚ด์šฉ๋“ค์ด ๋ชจ๋“  ์ƒํ™ฉ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๊ณ  ๋Œ€์ถฉ JS ์—์„œ๋„ ์ด๋ ‡๊ฒŒ ํ•  ์ˆ˜ ์žˆ๊ตฌ๋‚˜ ํ•˜๋Š” ์ƒ๊ฐ์ด ๋ชฉ์ ์ด๋‹ค. ๋” ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋งŽ์ด ์žˆ์œผ๋‹ˆ ์ด๋ฒˆ ๊ธ€์„ ๋ณด๊ณ  ๋ฐฉํ–ฅ์„ ์žก์•„๊ฐ€๊ธธ ๋ฐ”๋ž€๋‹ค. ํ•™์Šต ์ˆœ์„œ ์—˜๋ฆฌ๋จผํŠธ ๊ฐ€์ ธ์˜ค๊ธฐ getElementById() getElementByName() getElementByClassName() getElementByTagName() ์—˜๋ฆฌ๋จผํŠธ์— ์›ํ•˜๋Š” ํ…์ŠคํŠธ ์ถ”๊ฐ€ํ•˜๊ธฐ innerHTML innerText ์—˜๋ฆฌ๋จผํŠธ ์ƒ์„ฑ, ์‚ญ์ œ, ์ˆ˜์ •ํ•˜๊ธฐ createElement() appendChild() removeChild() ์—˜๋ฆฌ๋จผํŠธ ๊ฐ€์ ธ์˜ค๊ธฐ HTML ์š”์†Œ (Elements)๋ฅผ ์ œ์–ดํ•˜๋ ค๋ฉด ์šฐ์„  HTML .. 2021. 2. 20.
[Javascript] ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ JSON ์„ ๋‹ค๋ฃจ๋Š” ๋ฐฉ๋ฒ• JSON Json ์€ JavaScript Object Notation ์ด๋ผ๋Š” ์˜๋ฏธ์˜ ์ถ•์•ฝ์–ด๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๊ฑฐ๋‚˜ ์ €์žฅํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ๋Ÿ‰ ๋ฐ์ดํ„ฐ ํ˜•์‹์ด๋‹ค. ๋ณดํ†ต JSON์„ REST API ํ†ต์‹ ํ•  ๋•Œ ์ฃผ๊ณ ๋ฐ›๋Š” Request, Response Body ์— ์‚ฌ์šฉํ•œ๋‹ค. ์ฆ‰ ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ๊ฐ„์˜ ๊ต๋ฅ˜์—์„œ ๋งŽ์ด ์‚ฌ์šฉ๋œ๋‹ค. ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„์—๊ฒŒ ์ฒ˜๋ฆฌํ•ด์•ผํ•  ๋‚ด์šฉ์„ JSON ๋ฐ์ดํ„ฐ๋กœ ๋ณ€ํ™˜ํ•˜๊ณ  ์ „์†กํ•œ๋‹ค. ๊ทธ๋Ÿผ ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ ์˜จ JSON ๋ฐ์ดํ„ฐ๋ฅผ ์„œ๋ฒ„์˜ ์ŠคํŽ™์— ๋งž๊ฒŒ ์žฌ๋ณ€ํ™˜ํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ ๋ง ํ•˜๋Š” ์„œ๋ฒ„์˜ ์„œํŽ™์ด๋ž€ Java๋กœ ๊ตฌ์„ฑ๋œ ์„œ๋ฒ„์ธ์ง€, Python์œผ๋กœ ๊ตฌ์„ฑ๋œ ์„œ๋ฒ„์ธ์ง€๋ฅผ ๋œปํ•œ๋‹ค. ์›๋ž˜ JSON์ด๋ผ๋Š” ๊ฒƒ์€ JavaScript์—์„œ ํƒ„์ƒํ•œ ํ˜•์‹์ด๋ผ Js์˜ ๊ฐ์ฒด์™€ ๋งค์šฐ ๋น„์Šทํ•˜๋‹ค. Javascript Object VS JS.. 2021. 2. 20.
[Next.js] Next.js ํ”„๋กœ์ ํŠธ์—์„œ Storybook์œผ๋กœ TDD ํ•˜๊ธฐ (Feat. Atomic Design Pattern) Storybook์ด๋ž€? Storybook์€ UI ๊ตฌ์„ฑ ์š”์†Œ(์ปดํฌ๋„ŒํŠธ)๋ฅผ ๊ฐœ๋ฐœํ•˜๊ธฐ์œ„ํ•œ ์˜คํ”ˆ ์†Œ์Šค ๋„๊ตฌ์ด๋‹ค. React๋‚˜ Vue๋ฅผ ๋น„๋กฏํ•œ ์ปดํฌ๋„ŒํŠธ ๊ธฐ๋ฐ˜ UI ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์ด ๋งŽ์•„์ง„ ํ˜„๋Œ€์˜ ์›น Front๊ฐœ๋ฐœ ์ƒํƒœ๊ณ„์—์„œ๋Š” ์ปดํฌ๋„ŒํŠธ ํ•˜๋‚˜ ํ•˜๋‚˜์˜ ์—ญํ• ์ด ๋งค์šฐ ์ค‘์š”ํ•ด์กŒ๋‹ค. ์—ฌ๊ธฐ์„œ ์ปดํฌ๋„ŒํŠธ๋Š” ์™ธ๋ถ€์— ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š๊ฒŒ Isolated ๋˜์–ด์•ผ ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๊ธฐ ์œ„ํ•ด์„œ Atomic Design Pattern์ด๋ผ๋Š” ๊ฒƒ์ด ๋“ฑ์žฅํ•˜์˜€๊ณ  ๊ทธ์— ๋”ฐ๋ผ์„œ UI ์ž์ฒด์˜ ๋ Œ๋”๋ง์—๋„ ํ…Œ์ŠคํŠธ๋ฅผ ์‹ ๊ฒฝ์“ธ ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค. Storybook์€ ์‚ฌ์‹ค ํ…Œ์ŠคํŠธ์—๋งŒ ๊ตญํ•œ๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์•„๋‹ˆ๊ณ  ๊ฐœ๋ฐœ๊ณผ ์ดํ•ด๊ด€๊ณ„์ž๋“ค ์‚ฌ์ด์—์„œ์˜ ์†Œํ†ต๊ณผ Docs ๋ฐ Props Test๋ฅผ ์ง„ํ–‰ํ•ด์ฃผ๋Š” ์ปดํฌ๋„ŒํŠธ ๊ธฐ๋ฐ˜ ์˜คํ”ˆ ์†Œ์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด Storybook์„ ํ†ตํ•ด์„œ TDD๋ฅผ ์ง„.. 2021. 1. 18.