๊ฐœ๋ฐœ/FRONTEND

CommonJS (CJS)์—ญ์‚ฌ์  ๋ฐฐ๊ฒฝ: CommonJS๋Š” Node.js ํ™˜๊ฒฝ์—์„œ ๋ชจ๋“ˆ์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๋„์ž…๋œ ๋ชจ๋“ˆ ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค.๋ชจ๋“ˆ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•:๋ชจ๋“ˆ ๊ฐ€์ ธ์˜ค๊ธฐ: require() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด ๋‹ค๋ฅธ ๋ชจ๋“ˆ์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.const math = require('./math');๋ชจ๋“ˆ ๋‚ด๋ณด๋‚ด๊ธฐ: module.exports๋ฅผ ์‚ฌ์šฉํ•ด ๋ชจ๋“ˆ์˜ ๊ธฐ๋Šฅ์„ ๋‚ด๋ณด๋ƒ…๋‹ˆ๋‹ค.module.exports = { add: (a, b) => a + b, subtract: (a, b) => a - b,};๋™๊ธฐ์  ๋กœ๋”ฉ: CommonJS๋Š” ๋™๊ธฐ์ ์œผ๋กœ ๋ชจ๋“ˆ์„ ๋กœ๋”ฉํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋ชจ๋“ˆ์„ ๊ฐ€์ ธ์˜ค๋Š” ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๋ฉด ํ•ด๋‹น ๋ชจ๋“ˆ์„ ์ฆ‰์‹œ ๋ถˆ๋Ÿฌ์˜ค๊ณ  ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.Node.js ํ™˜๊ฒฝ์—์„œ ๋„๋ฆฌ ์‚ฌ์šฉ๋จ: Node.js๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ CommonJS๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.ECMA..
๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋งŒ๋“  ๊ณ„๊ธฐNext App Router๋ฅผ ์ด์šฉํ•ด์„œ ์ฒ˜์Œ ํŒ€ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ–ˆ๋Š”๋ฐ ๊ธฐ์ˆ ์Šคํƒ์— ๊ด€ํ•ด์„œ ํŒ€์›๋“ค๊ณผ ๋…ผ์˜๋ฅผ ํ•˜๋˜ ์ค‘ ์ด์ „ React๋กœ๋งŒ ์ž‘์—…์„ ํ–ˆ์„ ๋•Œ์™€ ๊ฐ™์ด Axios๋ฅผ ํ™œ์šฉํ•˜๋ ค ํ–ˆ๋Š”๋ฐ Next App Router์—์„œ ์ ์šฉํ•˜๋ ค๊ณ  ๋ณด๋‹ˆ ๋ฌธ์ œ์ ์ด ์žˆ์—ˆ๋‹ค. ๋ฐ”๋กœ Next App Router๋Š” ์ž์ฒด์ ์œผ๋กœ fetch๋ฅผ ํ™•์žฅ์—์„œ ์“ฐ๊ณ  ์žˆ๋Š”๋ฐ ๊ทธ ์˜ˆ์‹œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.const data = await fetch('~~', { next: {revalidate: 300}})์œ„์™€ ๊ฐ™์€ Next ์บ์‹ฑ์›๋ฆฌ๊ฐ€ ๊ถ๊ธˆํ•˜๋‹ค๋ฉด ์ด์ „์— ์“ด ๊ธ€์ธ ์บ์‹ฑ์›๋ฆฌ ๋ธ”๋กœ๊ทธ๋ฅผ ์ฐธ์กฐํ•˜๋ฉด ์ข‹๋‹ค.์ผ๋‹จ ๊ทธ๋•Œ๋Š” ํ”„๋กœ์ ํŠธ ๊ตฌํ˜„์ด ์šฐ์„ ์ด์˜€๊ธฐ์— ํŒ€์› ๋ชจ๋‘ fetch๋ฅผ ์“ฐ๊ธฐ๋กœ ํ–ˆ๋‹ค.ํ”„๋กœ์ ํŠธ๋ฅผ ๊ตฌํ˜„ํ•˜๋ฉด์„œ fetch๋ฅผ ์‚ฌ์šฉํ•˜๋‹ค๋ณด๋‹ˆ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ถˆํŽธํ•จ..
์š”๊ตฌ ์‚ฌํ•ญ๊ฐœ์ธ ์„ค์ • ํŽ˜์ด์ง€๋ฅผ ๋‹ด๋‹นํ•˜๊ณ  ์žˆ๋Š”๋ฐ ๋ชจ๋ฐ”์ผ ์ƒํ™ฉ์—์„œ ๋ชจ๋‹ฌ์„ Drawerํ˜•์‹์œผ๋กœ ๋ฐ”๊พธ๋Š”๊ฒŒ ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค๊ณ  ํŒ€์›๋“ค๊ณผ ํšŒ์˜๋ฅผ ํ†ตํ•ด ๊ฒฐ๋ก ์ด ๋‚ฌ์—ˆ๋‹ค. ํ˜„์žฌ์ƒํ™ฉ์˜ ๋ชจ๋ฐ”์ผ ๋ชจ๋‹ฌ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์•˜๋‹ค  ์œ„์˜ ์‚ฌ์ง„๊ณผ ๊ฐ™์€ ๋ชจ๋‹ฌ์ด ์—ฌ๋Ÿฌ๊ฐœ ์žˆ๋Š”๋ฐ ๊ธฐ์กด์—๋Š” ๋งˆ๊ฐ๊ธฐ๊ฐ„์ด ์žˆ์–ด์„œ ๊ตฌํ˜„ํ•˜๋Š”๋ฐ๋งŒ ์ง‘์ค‘ํ•˜๋Š” ๋‚˜๋จธ์ง€ ๊ฐ ๋ชจ๋‹ฌ๋งˆ๋‹ค ๊ฐ๊ฐ์˜ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์žˆ์—ˆ๋‹ค ์ด๋Ÿฌํ•œ ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•˜๋‹ˆ๊นŒ ๋ฌธ์ œ์ ์ด ๋ชจ๋ฐ”์ผ ํ™”๋ฉด์—์„œ Drawer ๋ชจ๋‹ฌ์„ ๊ตฌํ˜„ํ•˜๋ ค๊ณ  ํ•˜๋ฉด ๊ฐ๊ฐ์˜ ์ปดํฌ๋„ŒํŠธ๋ณ„๋กœ Drawer ํ˜•์‹์˜ ๋ชจ๋‹ฌ์„ ๊ตฌํ˜„ํ•ด์•ผํ–ˆ๋‹ค.์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ์œ„ํ•ด ์—ฌ๋Ÿฌ ๋ ˆํผ๋Ÿฐ์Šค๋ฅผ ์ฐพ๋˜์ค‘ ๋Œ€ํ‘œ์ ์ธ ํŒจํ„ด 2๊ฐ€์ง€๋ฅผ ์ฐพ์•˜๋‹ค ๋ฐ”๋กœ ์ปดํŒŒ์šด๋“œํŒจํ„ด๊ณผ render props ํŒจํ„ด์ด๋‹ค. ๋จผ์ € ๊ฐ„๋‹จํžˆ ์„ค๋ช…์„ ์–˜๊ธฐํ•˜๊ณ  ํ•ด๊ฒฐ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด๋„๋ก ํ•˜์ž.Render Prop ํŒจํ„ดRender Prop ํŒจํ„ด์ด๋ž€๋ Œ๋” ํ”„๋กญ..
S3๋ฅผ ํ”„๋ก ํŠธ์—์„œ ๊ด€๋ฆฌํ•˜๋Š” ์ด์œ nextjs๋ฅผ ํ™œ์šฉํ•ด์„œ S3๋ฒ„ํ‚ท์—๋‹ค๊ฐ€ ์ด๋ฏธ์ง€๋ฅผ ํ”„๋ก ํŠธ์—์„œ ์ง์ ‘ ๊ด€๋ฆฌํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.S3๋ฅผ ํ”„๋ก ํŠธ์—์„œ ๊ด€๋ฆฌํ•˜๋ฉด ์ข€๋” ๋น ๋ฅธ ์‘๋‹ต์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. ๊ทธ ์ด์œ ๋Š” ๋ฌด์—‡์ผ๊นŒ ์ƒ๊ฐํ•ด๋ณด์ž๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.- ํด๋ผ์ด์–ธํŠธ์—์„œ ๋ฐฑ์—”๋“œ๋กœ ์ด๋ฏธ์ง€ ๋ฐ์ดํ„ฐ๋ฅผ ๋˜์ ธ์ฃผ๊ณ  ์„œ๋ฒ„์—์„œ ๊ทธ๊ฑธ ๋ฐ›๊ณ  aws์— ๋„˜๊ฒจ์ฃผ๊ณ  ํด๋ผ์ด์–ธํŠธํ•œํ…Œ ๋งํฌ๋ฅผ ๋„˜๊ฒจ์ค˜์•ผํ•œ๋‹ค. ์„œ๋ฒ„๊ฐ€ ๋ฐ”์˜๋ฉด ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€๊ณตํ•ด์„œ ์ฃผ๋Š” ์‹œ๊ฐ„์ด ๊ธธ๋‹ค๋Š” ๋œป์ด๋‹ค. ์„œ๋ฒ„๊ฐ€ ๋ฐ”์˜๋‹ˆ ๋œ ๋ฐ”์œ ํ”„๋ก ํŠธ์—์„œ ๋Œ€์‹  aws์— ์—…๋กœ๋“œ๋ฅผ ํ•ด์ฃผ๋Š” ๊ฒƒ์ด๋‹ค.- ํด๋ผ์ด์–ธํŠธ์—์„œ Img์—…๋กœ๋“œ๋ฅผ S3๋ฒ„ํ‚ท์— ํ•ด์ฃผ๊ณ  s3 url์„ ์„œ๋ฒ„ํ•œํ…Œ ๋ณด๋‚ด์•ผํ•˜๋Š”๋ฐ ์ด๋•Œ react-query๋ฅผ ์‚ฌ์šฉํ•ด์„œ optimistic UI๋ฅผ ์ ์šฉํ•ด์ฃผ๋ฉด ์ข€ ๋” ๋น ๋ฅด๊ฒŒ ์ ์šฉ๋œ ์ด๋ฏธ์ง€๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.๋‹จ์ ์œผ๋กœ๋Š” ๋ธŒ๋ผ์šฐ์ €์—์„œ ์šฐ๋ฆฌ์˜ ์ฝ”๋“œ๋ฅผ..
๋ชฉํ‘œ์–ดํŠธ๋ž™์…˜ ํ”„๋กœ์ ํŠธ๋Š” ์‹ค ์„œ๋น„์Šค๋ฅผ ์—ผ๋‘ํ•˜์—ฌ ์ง„ํ–‰ํ•œ ํ”„๋กœ์ ํŠธ์˜€๊ธฐ๋•Œ๋ฌธ์—, ๊ทธ์— ๋งž์ถ”์–ด ์œ ์ง€๋ณด์ˆ˜๋ฅผ ์œ„ํ•œ ์„ค๊ณ„๊ฐ€ ํ•„์š”ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋˜, ์ดํ›„ ์„œ๋น„์Šค์˜ ํ™•์žฅ๋„ ๊ณ ๋ คํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.์ด๋ฅผ ๋ชจ๋‘ ๊ณ ๋ คํ•˜์—ฌ ์š”๊ตฌ ์กฐ๊ฑด์„ ์ƒ๊ฐํ•ด๋ณด์ž๋ฉด์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์šฉ์ดํ•ด์•ผํ•œ๋‹ค. (์ค‘๋ณต๋˜๋Š” ๋กœ์ง์€ ์ตœ๋Œ€ํ•œ ํ”ผํ•ด์•ผํ•œ๋‹ค)์ถ”ํ›„ ์„œ๋น„์Šค๋ฅผ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์–ด์•ผํ•œ๋‹ค.์ธ์›์ด ๋ณ€๊ฒฝ๋˜๊ฑฐ๋‚˜ ํ•˜๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์‚ฌํ•ญ์— ๋Œ€๋น„ํ•ด ๋ฌธ์„œํ™”๋ฅผ ์ฒ ์ €ํžˆ ์ง„ํ–‰ํ•ด์•ผํ•œ๋‹ค.ํŒ€์›๋“ค๊ณผ ์–ดํŠธ๋ž™์…˜ ์„œ๋น„์Šค๋ฅผ ์ค€๋น„ํ•˜๋ฉด์„œ ๋‚ด๋ฆฐ ๊ฒฐ๋ก ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์•˜์Šต๋‹ˆ๋‹ค.๋””์ž์ธ ์‹œ์Šคํ…œ์„ ํ†ตํ•ด ๊ณตํ†ต ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ด€๋ฆฌํ•˜์—ฌ ์ค‘๋ณต๋˜๋Š” ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ตœ๋Œ€ํ•œ ํ”ผํ•œ๋‹ค.๋ชจ๋…ธ๋ ˆํฌ ๊ตฌ์กฐ๋ฅผ ๋„์ž…ํ•˜์—ฌ ์ถ”ํ›„ ์„œ๋น„์Šค๋ฅผ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.๋””์ž์ธ ์‹œ์Šคํ…œ์— Storybook์„ ๋„์ž…ํ•˜์—ฌ ์ปดํฌ๋„ŒํŠธ์— ๋Œ€ํ•ด์„œ ๋ฌธ์„œํ™”๋ฅผ ์ง„ํ–‰ํ•˜๊ณ , ๋…ธ์…˜์„ ํ†ตํ•ด ๊ฐœ๋ฐœ ๊ธฐ๋ก์„ ๋‚จ๊ธด๋‹ค.๋ชจ๋…ธ๋ ˆ..
๋ชจ๋…ธ๋ ˆํฌ ๊ตฌ์กฐ์—์„œ ์„ธํŒ…๋œ ESLint ์˜ค๋ฅ˜๊ฐ€ ํ™”๋ฉด์— ๋ณด์ด์ง€ ์•Š๋Š” ๋ฌธ์ œํ˜„์žฌ ์ง„ํ–‰์ค‘์ธ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ๋ชจ๋…ธ๋ ˆํฌ ๊ตฌ์กฐ๋ฅผ ์ฑ„ํƒํ•˜์—ฌ ๊ฐœ๋ฐœ์„ ์ด์–ด๋‚˜๊ฐ€๊ณ  ์žˆ๋Š”๋ฐ, ์ด์ƒํ•˜๊ฒŒ ESlint ์˜ค๋ฅ˜๊ฐ€ ๋ณด์ด์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.๊ทผ๋ฐ ๋˜ ๋‹ค ์•ˆ๋ณด์ด๋Š” ๊ฒƒ๋„ ์•„๋‹ˆ๊ณ , ๋ช‡๊ฐœ๋Š” ๋ณด์ด๊ณ  ๋ช‡๊ฐœ๋Š” ๋ณด์ด์ง€ ์•Š๋Š” ๋ฌธ์ œ๋„ ๋ฐœ์ƒํ–ˆ๊ตฌ์š”.๋˜ ํ™”๋ฉด์—๋Š” ๋‹ค ์•ˆ์žกํžˆ์ง€๋งŒ eslint ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ํ™•์ธํ•˜๋ฉด ๋ณด์ด์ง€ ์•Š๋˜ ์˜ค๋ฅ˜๊ฐ€ ๋‹ค ๋ฐœ๊ฒฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.์ด ๋ถ€๋ถ„์—์„œ ์ €๋Š” eslint ๊ธฐ๋Šฅ์˜ ๋ฌธ์ œ๋ผ๊ธฐ๋ณด๋‹จ IDE๋ฅผ ์˜์‹ฌํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.๊ทผ๋ฐ ๋ณดํ†ต IDE๋ฅผ ์˜์‹ฌํ•˜๊ฒŒ๋˜๋ฉด '๋‚ด IDE ์„ค์ •์˜ ์ž˜๋ชป'์œผ๋กœ ์ดํ•ดํ•˜์ง€, ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค๊นŒ์ง€ ๊ทธ๋Ÿด๊ฑฐ๋ผ๊ณ ๋Š” ์ƒ๊ฐํ•˜์ง€ ์•Š์ž–์•„์š”.์ €๋ฅผ ๋” ํ˜ผ๋ž€์Šค๋Ÿฝ๊ฒŒ ๋งŒ๋“ค์—ˆ๋˜ ๊ฑด, ๋‹ค๋ฅธ ํŒ€์›๋“ค๋„ ESlint ์˜ค๋ฅ˜๊ฐ€ ๋ณด์ด์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋ชจ๋‘ ๊ฐ™์€ ์ฆ์ƒ์ด์—ˆ๋‹ค๋Š” ๊ฒƒ์ด์ฃ .๊ทธ๋ƒฅ ๋ฌด์‹œํ•˜..
๊ตฌํ˜„ ๋ชฉํ‘œ์ €ํฌ๋Š” ์‹ค์ œ๋กœ ์„œ๋น„์Šค๋ฅผ ์šด์˜ํ•˜๋Š” ๊ฒƒ์ด ๋ชฉํ‘œ์˜€๊ธฐ ๋•Œ๋ฌธ์— ์œ ์ € ์ธ์ฆ ๊ด€๋ จ ๋กœ์ง๋“ค์—์„œ๋Š” ๋ณด์•ˆ์ด ๋งค์šฐ ์ค‘์š”ํ–ˆ๊ณ , ๊ทธ์— ๋”ฐ๋ผ ์š”๊ตฌ์‚ฌํ•ญ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์•˜์Šต๋‹ˆ๋‹ค์š”๊ตฌ์‚ฌํ•ญ์ธ์ฆ ๊ด€๋ จ ๋กœ์ง์„ ํด๋ผ์ด์–ธํŠธ์—์„œ ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š์„ ๊ฒƒํด๋ผ์ด์–ธํŠธ์—์„œ ์Šคํฌ๋ฆฝํŠธ๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๊ณณ์— ๊ฐœ์ธ์ •๋ณด๋ฅผ ๋‚จ๊ธฐ์ง€ ์•Š์„ ๊ฒƒ ex) ๋กœ์ปฌ์Šคํ† ๋ฆฌ์ง€, ์„ธ์…˜์Šคํ† ๋ฆฌ์ง€, ์ฟผ๋ฆฌ ํŒŒ๋ผ๋ฏธํ„ฐ, ์ฟ ํ‚ค ๋“ฑ๋กœ๊ทธ์ธ ํ›„ ์ƒˆ๋กœ๊ณ ์นจ์„ ํ•ด๋„ ์ผ์ •์‹œ๊ฐ„๋™์•ˆ์€ ๋กœ๊ทธ์ธ ์ƒํƒœ๊ฐ€ ํ’€๋ฆฌ์ง€ ์•Š์„ ๊ฒƒ๊ตฌ๊ธ€์—์„œ ์ง€์›ํ•˜๋Š” OAuth ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•  ๊ฒƒ ๋˜ํ•œ Next.js ๋ฅผ ์ฐจ์šฉํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„ ์ปดํฌ๋„ŒํŠธ์—์„œ๋„ ๋Œ€์‘์ด ๊ฐ€๋Šฅํ–ˆ์–ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค  ์™œ ๋ธŒ๋ผ์šฐ์ €์— ๊ฐœ์ธ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๋ฉด ์•ˆ๋ ๊นŒ?Redux ๋˜๋Š” Zustand ๊ฐ™์€ ์ „์—ญ์ƒํƒœ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ๋Š” ์ „์—ญ ์ƒํƒœ์˜ ์œ ์ง€๋ฅผ ์œ„ํ•ด ๋ฏธ๋“ค์›จ์–ด์˜ ํ˜•ํƒœ๋กœ persist ๋ฅผ..
Attraction๐Ÿš€
'๊ฐœ๋ฐœ/FRONTEND' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก