Skip to content

SDC-OASIS/CocoTalk-Frontend

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

CocoTalk-Frontend


โš™ ๊ฐœ์š”

๋ณธ ํ”„๋กœ์ ํŠธ๋Š” Stove Dev Canp 2๊ธฐ OasisํŒ€์˜ ์นด์นด์˜คํ†ก ํด๋ก  ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค.

์นด์นด์˜คํ†ก์˜ ์›น๋ฒ„์ „์ด ์žˆ๋‹ค๋ฉด ์–ด๋–ค ๋ชจ์Šต์ผ์ง€ ๊ณ ๋ฏผํ•˜๋ฉฐ ์„ค๊ณ„ํ•˜๊ณ  ๊ฐœ๋ฐœํ–ˆ์Šต๋‹ˆ๋‹ค.

์Šค๋งˆ์ผ๊ฒŒ์ดํŠธ์˜ ์ธ๊ธฐ ์บ๋ฆญํ„ฐ ๋ชจ์ฝ”์ฝ” ์ปจ์…‰์˜ ๋””์ž์ธ์œผ๋กœ UI๋ฅผ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.

๐ŸŽ‡๋ชฉํ‘œ

โ˜˜ ์—ฌ๋Ÿฌ ์›น๋ฉ”์‹ ์ €๋ฅผ ๋ถ„์„ํ•ด ์žฅ์ ๋งŒ์„ ์ฐจ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์„ฑ ๋†’์€ ํ˜•ํƒœ์˜ UI๋ฅผ ์„ค๊ณ„ํ•˜๊ณ  ํ”„๋กœํ† ํƒ€์ž…์„ ์ œ์ž‘ํ•œ๋‹ค.

โ˜˜ ์•„ํ‚คํ…์ฒ˜์™€ ๋ฐฑ์—”๋“œ ๋กœ์ง ์„ค๊ณ„์— ์ฐธ์—ฌํ•ด ์„œ๋น„์Šค ํ๋ฆ„์„ ์ดํ•ดํ•˜๊ณ  ํ•จ๊ป˜ ๊ธฐ๋Šฅ๊ตฌํ˜„ ๋กœ์ง์„ ๊ณ ๋ฏผํ•œ๋‹ค.

โ˜˜ ๋ฐ์ดํ„ฐ ํ†ต์‹  ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ๋ Œ๋”๋ง ๋กœ์ง์„ ์„ค๊ณ„ํ•œ๋‹ค.

โ˜˜ Vue์˜ ๋ Œ๋”๋ง ๋กœ์ง์„ ์ดํ•ดํ•˜๊ณ  ์ง€์†์ ์ธ ๊ฒ€ํ† ๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์„ฑ์„ ๊ฐœ์„ ํ•œ๋‹ค.

โ˜˜ ๊ฐœ๋ฐœ๊ณผ์ • ์ „๋ฐ˜๊ณผ trouble shooting์„ ์ž˜ ๊ธฐ๋กํ•ด๋‘”๋‹ค.

๐Ÿ› ์‚ฌ์šฉ ๊ธฐ์ˆ 

  • Vue
  • Vuex

๐Ÿ”ง์•„ํ‚คํ…์ณ

โœจํ”„๋กœํ† ํƒ€์ž…

Figma๋กœ ์ œ์ž‘ํ•œ ํ”„๋กœํ† ํƒ€์ž… ๋งํฌ์ž…๋‹ˆ๋‹ค.

https://www.figma.com/file/JfWarDBL2JrtpRMAZv1lhJ/Untitled?node-id=0%3A1


โœ”ํ”„๋กœ์ ํŠธ ์‹คํ–‰๋ฐฉ๋ฒ•

npm ์„ค์น˜

npm install

ํ”„๋กœ์ ํŠธ ์‹คํ–‰

  • cocotalk ํด๋”๋กœ ์ด๋™ํ•ด ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ด์ฃผ์„ธ์š”.
npm run serve

๋กœ๊ทธ์ธ

ํšŒ์›๊ฐ€์ž…์€ ๋ชจ๋ฐ”์ผ์—์„œ๋งŒ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋กœ๊ทธ์ธ์„ ์›ํ•˜์‹œ๋ฉด ์•„๋ž˜ ์ •๋ณด๋ฅผ ์‚ฌ์šฉํ•ด์ฃผ์„ธ์š”.

[์•„์ด๋””] heeeun

[๋น„๋ฐ€๋ฒˆํ˜ธ] 12345678


๐Ÿท ํŽ˜์ด์ง€๋ณ„ ์ฃผ์š” ๊ธฐ๋Šฅ

[๋กœ๊ทธ์ธ ํŽ˜์ด์ง€]

  • ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ
  • ๋„ค๋น„๊ฒŒ์ด์…˜ ๊ฐ€๋“œ

1

[์นœ๊ตฌ๋ชฉ๋ก ํŽ˜์ด์ง€]

  • ์นœ๊ตฌ๋ชฉ๋ก ์กฐํšŒ
  • ์นœ๊ตฌ ์ถ”๊ฐ€
  • ์นœ๊ตฌ ํ”„๋กœํ•„ ์—ด๋žŒ
  • ๋‚ด ํ”„๋กœํ•„ ์—ด๋žŒ

1

  • ํ”„๋กœํ•„ ํŽธ์ง‘

1

[์ฑ„ํŒ…๋ฐฉ ๋ชฉ๋ก ํŽ˜์ด์ง€]

  • ์ฑ„ํŒ…๋ฐฉ ๋ชฉ๋ก ์กฐํšŒ
  • ์‹ ๊ทœ๋ฉ”์„ธ์ง€ ์ˆ˜๋ น์— ๋”ฐ๋ฅธ ์ฑ„ํŒ…๋ฐฉ ๋ชฉ๋ก ์‹ค์‹œ๊ฐ„ ์—…๋ฐ์ดํŠธ
  • ์ฑ„ํŒ…๋ฐฉ๋ณ„ ์ฝ์ง€ ์•Š์€ ๋ฉ”์„ธ์ง€์ˆ˜ ํ™•์ธ

1

  • ์ฑ„ํŒ…๋ฐฉ ์ƒ์„ฑ

1

[์ฑ„ํŒ… ํŽ˜์ด์ง€]

  • 1:1 ์ฑ„ํŒ…
  • ๋‹จ์ฒด ์ฑ„ํŒ…
  • ์นœ๊ตฌ์ถ”๊ฐ€
  • ์ด๋ฏธ์ง€ ์ „์†ก
  • ์ฑ„ํŒ…๋ฐฉ ์„œ๋ž - ์ด๋ฏธ์ง€ ๋ชจ์•„๋ณด๊ธฐ

1

  • ์ฑ„ํŒ…๋ฐฉ ๋‚ด๋ถ€์—์„œ ์ดˆ๋Œ€

1

  • ์ฑ„ํŒ…๋ฐฉ ๋‚˜๊ฐ€๊ธฐ

1

  • ์ฑ„ํŒ…๋ฐฉ ๋‚ด์—ญ ๋ฌดํ•œ์Šคํฌ๋กค๋กœ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ

1

[์—๋Ÿฌ ํŽ˜์ด์ง€]

  • ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์€ ๊ฒฝ๋กœ๋กœ ์ง„์ž…์‹œ ํ•ด๋‹น ํŽ˜์ด์ง€๋กœ ์ด๋™

1


๐Ÿ’ก ๊ฐœ๋ฐœ ๊ณผ์ • ๋ฐ Trouble Shooting

1. Router

๋ฉ”์‹ ์ €์˜ ํŽธ์˜์„ฑ์„ ์œ„ํ•ด ์ „์ฒดํ™”๋ฉด์—์„œ ๋„ค๋ธŒ๋ฐ”๋ฅผ ์ œ์™ธํ•˜๋ฉด ํฌ๊ฒŒ ๋‘ ๋ถ€๋ถ„์œผ๋กœ ๋‚˜๋ˆ„์–ด์ง€๋„๋ก ๊ตฌ์„ฑํ•˜์˜€๋‹ค. "์นœ๊ตฌ๋ชฉ๋ก/์ฑ„ํŒ…๋ฐฉ๋ชฉ๋ก & ์„ ํƒํ•œ ์ฑ„ํŒ…๋ฐฉ(ํ•ด๋‹น ์œ„์น˜๋Š” ์„ค์ •๊ณผ๊ฐ™์€ ์ •๋ณด๋„ ๋‚˜์˜ค๋„๋ก ์‚ฌ์šฉ)"

=> ์ด ๋•Œ, ์ฑ„ํŒ…๋ฐฉ์ด ์—ด๋ ค์ ธ์žˆ๋Š” ์ƒํƒœ๋ผ๋ฉด ์นœ๊ตฌ๋ชฉ๋ก์œผ๋กœ ์ด๋™ํ•˜์˜€์„ ๋•Œ๋„ ํ•ด๋‹น ๋ฐฉ์ด ์œ ์ง€๋˜์–ด์•ผํ•œ๋‹ค. ์ƒˆ๋กœ rendering๋  ๊ฒฝ์šฐ ํ˜„์žฌ ๋ณด๊ณ  ์žˆ๋Š” ํ™”๋ฉด๊ณผ๋„ ๋‹ฌ๋ผ์ง€๊ณ  ๋ถˆํ•„์š”ํ•œ rendering์ด ์ถ”๊ฐ€ ๋œ๋‹ค.

  • ํ™”๋ฉด์˜ ํฐ ๋‘ ๋ถ€๋ถ„์˜ url์ด ์‚ฌ์šฉ์„ฑ์žˆ๊ฒŒ ๋ณ€ํ™”ํ•ด์•ผํ•œ๋‹ค.

    "/friends" : ์นœ๊ตฌ๋ชฉ๋ก / ์ฑ„ํŒ…์‹œ์ž‘ ์ „ ํ™”๋ฉด
    "/chats" : ์ฑ„ํŒ…๋ฐฉ๋ชฉ๋ก / ์ฑ„ํŒ…์‹œ์ž‘ ์ „ ํ™”๋ฉด
    "/friends/chat/{chatId}" : ์นœ๊ตฌ๋ชฉ๋ก / ํŠน์ • ์ฑ„ํŒ…ํ™”๋ฉด 
    "/chats/chat/{chatId}" : ์ฑ„ํŒ…๋ฐฉ๋ชฉ๋ก / ํŠน์ • ์ฑ„ํŒ…ํ™”๋ฉด 
  • ํ™”๋ฉด์˜ ํฐ ๋‘ ๋ถ€๋ถ„์ด ๊ฐ๊ฐ ๋…๋ฆฝ์ ์œผ๋กœ rendering๋˜์–ด์•ผํ•œ๋‹ค. ์ด์ค‘๊ตฌ์กฐ

Named Route

ํŠน์ • ํŽ˜์ด์ง€๋กœ ์ด๋™ํ–ˆ์„ ๋•Œ ๋‹ค์ˆ˜์˜ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋…๋ฆฝ์ ์œผ๋กœ ๊ฐ™์€ ์œ„์น˜์— ๋™์‹œ์— ํ‘œํ˜„๋˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

  • ํ™”๋ฉด์ด ํฌ๊ฒŒ ๋‘ ๋ถ€๋ถ„์œผ๋กœ ๋‚˜๋‰˜์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ ๋ถ€๋ถ„์„ left์™€ right๋กœ ๊ตฌ๋ถ„ํ–ˆ๋‹ค.

App.js

<router-view name="left" />
<router-view name="right" />
  • url์€ ํฌ๊ฒŒ 6๊ฐ€์ง€๋กœ ๋‚˜๋‰˜์–ด์ง„๋‹ค. ์นœ๊ตฌ๋ชฉ๋ก + ์ฑ„ํŒ…๋ฐฉ ์‹œ์ž‘์ „ / ์นœ๊ตฌ๋ชฉ๋ก + ์ฑ„ํŒ…๋ฐฉ์—ด๋ฆผ / ์นœ๊ตฌ๋ชฉ๋ก + ์„ค์ •์—ด๋ฆผ ์ฑ„ํŒ…๋ฐฉ๋ชฉ๋ก + ์ฑ„ํŒ…๋ฐฉ ์‹œ์ž‘์ „/ ์ฑ„ํŒ…๋ฐฉ๋ชฉ๋ก + ์ฑ„ํŒ…๋ฐฉ์—ด๋ฆผ / ์ฑ„ํŒ…๋ฐฉ๋ชฉ๋ก + ์„ค์ •์—ด๋ฆผ ๋”ฐ๋ผ์„œ ๊ฐ url๋ณ€ํ™”์— ๋”ฐ๋ผ ํ™”๋ฉด์˜ ํ•ด๋‹น๊ตฌ์—ญ์— ๋“ค์–ด๊ฐˆ component๋ฅผ ์ง€์ •ํ–ˆ๋‹ค.

โœจroot์™€ params๊ฐ€ ์•„๋‹ˆ๋ผ ํ•ด๋‹น url์˜ ๊ตฌ์—ญ์— ๋งž๋Š” component๋ฅผ ์ง€์ •ํ•ด์„œ์ธ์ง€ url์ด ๋ฐ”๋€Œ์–ด๋„ component๊ฐ€ ๋™์ผํ•˜๋‹ค๋ฉด rendering์ด ์ด๋ฃจ์–ด์ง€์ง€ ์•Š๋Š”๋‹ค! => ์—ด๋ฆฐ ์ฑ„ํŒ…๋ฐฉ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ !

โ€‹

2. Vuex๋ฅผ ์ด์šฉํ•œ ์ƒํƒœ๊ด€๋ฆฌ

Modal ์ƒํƒœ๊ด€๋ฆฌ

[๋„์ž…ํ•˜๊ฒŒ ๋œ ์ด์œ ] ํ˜„์žฌ ์ด์ค‘ ๋ถ„ํ•  ํ™”๋ฉด template์„ ๊ตฌํ˜„ ์ค‘์ธ๋ฐ, ์ด ๊ฒฝ์šฐ ์ตœํ•˜์œ„ ์ปดํฌ๋„ŒํŠธ์—์„œ ํด๋ฆญํ–ˆ์„ ๋•Œ ์ „์ฒดํ™”๋ฉด์— ๊ฝ‰์ฐจ๋Š” ํ˜•ํƒœ์˜ ๋ชจ๋‹ฌ์„ ๊ตฌํ˜„ํ•˜๊ณ  ์‹ถ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด Modal์€ ์ตœ์ƒ์œ„ ๋ถ„ํ•  ์ด์ „ ์ปดํฌ๋„ŒํŠธ์— ์žˆ์–ด์•ผํ•˜๋Š”๋ฐ, ํด๋ฆญ ์ด๋ฒคํŠธ emit์ด ๊ณ„์†ํ•ด์„œ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์€ ๋น„ํšจ์œจ์ ์ด๋‹ค. ๋”ฐ๋ผ์„œ Modal์˜ ์ƒํƒœ๋ฅผ ์ „์—ญ์—์„œ ๊ด€๋ฆฌํ•ด์ฃผ๋Š” ๊ฒƒ์ด ์ข‹์ง€ ์•Š์„๊นŒ ํ•˜๋Š” ์ƒ๊ฐ์„ ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.

์›น์†Œ์ผ“๊ณผ ํ†ต์‹ 

๋ชจ๋“  component์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ์ดํ„ฐ ๊ทธ๋ฆฌ๊ณ  ์‚ฌ์šฉ์ž์˜ ํ”Œ๋กœ์šฐ๋ฅผ ์œ„ํ•ด ํ•„์š”ํ•œ ํ”Œ๋ž˜๊ทธ ๋ฐ์ดํ„ฐ ๋“ฑ์„ ๋ชจ๋‘ vuex์—์„œ ๊ด€๋ฆฌํ•œ๋‹ค. ํŠนํžˆ ๋™์‹œ๋กœ๊ทธ์ธ๊ณผ ๊ฐ™์ด ์‚ฌ์šฉ์ž๊ฐ€ ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ๋™์•ˆ ์œ ์ง€๋˜๋Š” ์†Œ์ผ“ํ†ต์‹ ์ด ํ•„์š”ํ–ˆ๊ณ  ์ด๋ฅผ ๋ชจ๋“  component์—์„œ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š” vuex์—์„œ ์ง„ํ–‰ํ•œ๋‹ค.

[vuex ํ†ต์‹ ]

  • ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋™์•ˆ ์—ฐ๊ฒฐ์ด ์œ ์ง€๋˜๋Š” ์ „์—ญ์†Œ์ผ“ : pub / sub / connection ์„ ๋ชจ๋‘ ์ง„ํ–‰
  • ์นœ๊ตฌ๋ชฉ๋ก, ์œ ์ €์ •๋ณด, ์ฑ„ํŒ…๋ฐฉ๋ชฉ๋ก ๊ด€๋ จ ํ†ต์‹  => ์ƒํƒœ๋„ ์ €์žฅ

[component ๋‚ด๋ถ€ ํ†ต์‹ ]

์ฑ„ํŒ…๋ฐฉ ๋‚ด๋ถ€์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ์ดํ„ฐ๋Š” ๋‹ค๋ฅธ component์—์„œ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์ฑ„ํŒ…๋ฐฉ component ์—์„œ๋งŒ ๋‚ด๋ถ€ ํ†ต์‹ ์ด ์ด๋ฃจ์–ด์ง„๋‹ค.

  • ์ฑ„ํŒ…๋ฐฉ์— ์ž…์žฅํ•˜๋Š” ๊ฒฝ์šฐ connect, ํ‡ด์žฅํ•˜๋Š” ๊ฒฝ์šฐ disconnect ๋œ๋‹ค.
  • ์ฑ„ํŒ…๋ฐฉ ๋ฉ”์„ธ์ง€ ๋‚ด์—ญ์€ ์ €์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค.

3. ๋‹ค์ค‘ ๋กœ๊ทธ์ธ ๊ด€๋ฆฌ

์›น๊ธฐ๊ธฐ 1๋Œ€, ๋ชจ๋ฐ”์ผ ๊ธฐ๊ธฐ 1๋Œ€๋งŒ ๋™์‹œ ๋กœ๊ทธ์ธ์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ์„ค์ •ํ•˜์˜€๋‹ค.

  • ์„œ๋น„์Šค๊ฐ€ ์ง„ํ–‰๋˜๋Š” ๋™์•ˆ ํ•ญ์ƒ connection์„ ์œ ์ง€ํ•˜๋Š” ์†Œ์ผ“์œผ๋กœ ๋‹ค๋ฅธ ๊ธฐ๊ธฐ์— ๋กœ๊ทธ์ธ์ด ๋˜์—ˆ๋‹ค๋Š” ์ •๋ณด๋ฅผ ๋ฐ›์œผ๋ฉด ๋กœ๊ทธ์•„์›ƒ ๋˜๋„๋ก ์„ค์ •ํ•œ๋‹ค.
  • ์ž ์ž๊ธฐ ์ƒํƒœ์˜€๊ฑฐ๋‚˜ PC๊ฐ€ ํ†ต์‹ ์ด ์ด๋ฃจ์–ด์ง€์ง€ ์•Š์•˜๋˜ ๊ฒฝ์šฐ ์„œ๋น„์Šค ์ด์šฉ์„ ์œ„ํ•œ ์š”์ฒญ์„ ๋ณด๋‚ผ๋•Œ fcm Token์„ ๋ณด๋‚ด ๊ฐ€์žฅ ์ตœ๊ทผ ๋กœ๊ทธ์ธํ•œ ๊ธฐ๊ธฐ๊ฐ€ ๋งž๋Š”์ง€ ๋น„๊ตํ•˜๊ณ  ๋‹ค๋ฅธ ๊ฒฝ์šฐ์—๋Š” ๋กœ๊ทธ์•„์›ƒ ๋˜๋„๋ก ์„ค์ •ํ•œ๋‹ค.

๋™์‹œ๋กœ๊ทธ์ธ

4. ์ฑ„ํŒ…๋ฐฉ ๋ชฉ๋ก์˜ ์‹ค์‹œ๊ฐ„ ๋ณ€ํ™”

< template ๊ตฌํ˜„ >

  • ์ฑ„ํŒ…๋ฐฉ ๋ชฉ๋ก์€ ์ตœ์‹  ๋ฉ”์„ธ์ง€๊ฐ€ ์˜จ ์ฑ„ํŒ…๋ฐฉ์ด ์ตœ์ƒ๋‹จ์œผ๋กœ ์ด๋™ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ง€์†์ ์ธ ๋ณ€ํ™”๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ์ด๋ฅผ ๋ณด๋‹ค ์‚ฌ์šฉ์ž๊ฐ€ ํŽธ์•ˆํ•˜๊ฒŒ ๋Š๋‚„ ์ˆ˜ ์žˆ๋„๋ก transition-group์„ ํ™œ์šฉํ•ด ์‚ญ์ œ์™€ ์ถ”๊ฐ€์— ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ๊ตฌํ˜„ํ•˜์˜€๋‹ค.

< script ๊ตฌํ˜„ >

  1. ์ฑ„ํŒ…๋ฐฉ๋ชฉ๋ก์„ ๊ฐฑ์‹ ํ•ด์ค„ ๋งˆ์ง€๋ง‰ ๋ฉ”์„ธ์ง€ ์ •๋ณด๋ฅผ ๋ฐ›๋Š”๋‹ค.

  2. ๋งˆ์ง€๋ง‰ ๋ฉ”์„ธ์ง€๊ฐ€ ๋“ค์–ด์˜ค๋ฉด ์ฑ„ํŒ…๋ฐฉ ๋ชฉ๋ก์—์„œ ํ•ด๋‹น ๋ฐฉ์„ ์ฐพ์•„ ๋ชจ๋“  ์ •๋ณด๋ฅผ ๊ฐฑ์‹ ํ•ด์ค€๋‹ค. ์ด๋•Œ, ํ˜„์žฌ ์ ‘์†์ค‘์ธ ์ฑ„ํŒ…๋ฐฉ์ด ์•„๋‹ˆ๋ผ๋ฉด(์•ž์„œ ์„ค๋ช…ํ•œ vuex์— ์ €์žฅ๋œ roomใ„ดtatusํ™œ์šฉ)" ์•ˆ ์ฝ์€ ๋ฉ”์„ธ์ง€์ˆ˜๋ฅผ +1 ํ•ด์ค€๋‹ค. ์ฑ„ํŒ…๋ฐฉ๋ชฉ๋ก์˜ ์ตœ์ƒ๋‹จ์— ์žˆ๋‹ค๋ฉด ์ •๋ณด๋งŒ ๊ฐฑ์‹ ํ•ด์ฃผ์ง€๋งŒ ๋‹ค๋ฅธ ์œ„์น˜์— ์žˆ๋‹ค๋ฉด ์ตœ์ƒ๋‹จ์œผ๋กœ ์œ„์น˜๋ฅผ ๋ณ€ํ™”์‹œํ‚ค๊ธฐ์œ„ํ•ด ๋ชฉ๋ก์—์„œ ์‚ญ์ œํ›„ ์ตœ์ƒ๋‹จ์œ„์น˜๋กœ ์ด๋™์‹œ์ผœ์ค€๋‹ค.

  3. ๋ฒˆ๋“ค์€ ํšจ๊ณผ์ ์œผ๋กœ ์„œ๋ฒ„์— ๋ฉ”์„ธ์ง€๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ๊ณ ์•ˆํ•œ ๋ฐฉ๋ฒ•์ด๋‹ค. ๋จผ์ €, ๋ฉ”์„ธ์ง€๋ฅผ 300๊ฐœ ๋‹จ์œ„๋กœ ๋ฒˆ๋“ค์— ์ €์žฅํ•˜๊ณ  ์ €์žฅ๋œ ๋ฒˆ๋“ค์˜ ID์™€ ๋ช‡๋ฒˆ์งธ ๋ฉ”์‹œ์ง€์ธ์ง€๋ฅผ์ฑ„ํŒ…๋ฐฉ์ •๋ณด์—์„œ ๊ฐฑ์‹ ํ•œ๋‹ค. ๋ฉ”์„ธ์ง€๊ฐ€ ์ €์žฅ๋œ ์œ„์น˜๋ฅผ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๊ธฐ๋•Œ๋ฌธ์— ์ดํ›„ ์ฑ„ํŒ…๋ฐฉ์— ์ž…์žฅํ•˜์—ฌ ์Šคํฌ๋กค์—…์„ ํ†ตํ•ด ์ผ์ • ๊ฐœ์ˆ˜์˜ ๋ฉ”์„ธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ค๊ธฐ์—๋„ ์šฉ์ดํ•˜๋‹ค.

<์ฑ„ํŒ…๋ฐฉ๋ชฉ๋ก ํ˜•ํƒœ์— ๋Œ€ํ•œ ๊ณ ๋ฏผ>

  • ์ฑ„ํŒ…๋ฐฉ๋ชฉ๋ก์˜ ๊ฐฑ์‹ ์ด ๋นˆ๋ฒˆํ•˜๋‹ˆ ์ถ”๊ฐ€ ์‚ญ์ œ์— ์šฉ์ดํ•œ Map์„ ์‚ฌ์šฉํ•˜๋ คํ–ˆ์œผ๋‚˜ Vue๊ฐ€ Map์ž๋ฃŒํ˜•์˜ ๋ณ€ํ™”๋ฅผ ๊ฐ์ง€ํ•˜๋Š” ๊ฒƒ์— ๋งŽ์€ ์ด์Šˆ๊ฐ€ ์žˆ์—ˆ๋‹ค. $set๊ณผ $delete๋ผ๋Š” ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์ฐพ์•˜์œผ๋‚˜ ์ ์šฉ์ด ์ž˜ ๋˜์ง€ ์•Š์•˜๊ณ  splice, unshift๋“ฑ์˜ ๋ณ€ํ™”๊ฐ์ง€์— ์šฉ์ดํ•œ Array๋ฅผ ์‚ฌ์šฉํ•˜์˜€๋‹ค.

5. ์ฑ„ํŒ…๋ฐฉ ๋‚ด๋ถ€ ํŽ˜์ด์ง•

์ฑ„ํŒ…๋ฐฉ ๋‚ด๋ถ€์—์„œ ์ด์ „ ์ฑ„ํŒ… ํžˆ์Šคํ† ๋ฆฌ๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ์œ„ํ•œ ๋ฌดํ•œ ์Šคํฌ๋กค์„ ๊ตฌํ˜„ํ•˜์˜€๋‹ค.

  • ์ฒ˜์Œ๋ถ€ํ„ฐ ๋ชจ๋“  ์ฑ„ํŒ… ๋‚ด์—ญ์„ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๊ฒƒ์ด์•„๋‹ˆ๋ผ ์ผ์ • ๋‹จ์œ„์˜ ๊ฐœ์ˆ˜๋กœ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ๋•Œ๋ฌธ์— ๋น ๋ฅด๊ฒŒ ๋ Œ๋”๋ง์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ์ฑ„ํŒ…๋ฐฉ ์ตœ์ƒ๋‹จ์— ์Šคํฌ๋กค์ด ์œ„์น˜ํ•˜๋ฉด ์ด์ „ ์ฑ„ํŒ…๋‚ด์—ญ์„ ๋ถˆ๋Ÿฌ์˜ค๋ฉฐ ์Šคํฌ๋กค์€ ๊ธฐ์กด์œ„์น˜์— ๋ฉˆ์ถฐ์žˆ๋„๋ก ๊ตฌํ˜„ํ•ด ์‚ฌ์šฉ์ž๊ฐ€ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌํ˜„ํ•˜์˜€๋‹ค.

6. Template & CSS

์Šค์ฟผํด ๊ตฌํ˜„(SVG)

์นด์นด์˜คํ†ก ํ”„๋กœํ•„๋ชจ์–‘์˜ ์Šค์ฟผํด์„ ๊ตฌํ˜„ํ•˜๊ธฐ์œ„ํ•ด ์‚ฌ์šฉํ•˜์˜€๋Š”๋ฐ, figma์˜ iconify๋ฅผ ์‚ฌ์šฉํ• ๋•Œ์—๋„ code๋Š” span์ด์ง€๋งŒ ๋ธŒ๋ผ์šฐ์ €์ƒ์—์„œ svg๋กœ ์•„์ด์ฝ˜์ด ๊ทธ๋ ค์ง€๋Š” ๊ฒƒ์„ ํ™•์ธํ•˜์˜€๋‹ค. ํ•ด๋‹น ์•„์ด์ฝ˜ ๋ถ€๋ถ„์—์„œ ๋ชจ๋‹ฌ์„ ๋„์šธ๋•Œ ๋ฏธ์„ธํ•œ ๊นœ๋นก์ž„์ด ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์„ ํŒŒ์•…ํ•ด ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ ์ž fontawesome์œผ๋กœ ๋Œ€์ฒดํ•˜์˜€๋‹ค. ๊ทธ๋Ÿฌ๋‹ˆ ๊นœ๋นก์ž„์€ ์ผ์–ด๋‚˜์ง€ ์•Š์•˜๋‹ค.

[์ฐธ๊ณ ] https://velog.io/@roghabo/Squircle-%EC%8A%A4%EC%BF%BC%ED%81%B4


โ›ณํ–ฅํ›„ ๋„์ „ ๊ณผ์ œ

  1. ์˜คํ”„๋ผ์ธ์—์„œ๋„ ์ด์šฉ๋‚ด์—ญ์„ ํ™•์ธํ•˜๋Š” ์„œ๋น„์Šค๋ฅผ ์ง„ํ–‰์‹œ IndexedDB๋ฅผ ์‚ฌ์šฉ
  2. ํ˜„์žฌ ํŒจ๋“œ์™€ PCํ™˜๊ฒฝ์—์„œ์˜ ๋ฐ˜์‘ํ˜•๋งŒ์„ ๊ตฌํ˜„ํ•จ => ๋ชจ๋ฐ”์ผ์›นํ™˜๊ฒฝ์„ ์œ„ํ•œ ๋ฐ˜์‘ํ˜• ์ œ์ž‘
  3. ๋ณด๋‹ค ๋†’์€ ์‚ฌ์šฉ์„ฑ์„ ์œ„ํ•œ ์• ๋‹ˆ๋ฉ”์ด์…˜ ํ™œ์šฉ
  4. ์ด๋ฏธ์ง€ ์ „์†ก๊ณผ ๋ Œ๋”๋ง์„ ํšจ๊ณผ์ ์œผ๋กœ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ์•ˆ ๊ณ ์•ˆ

โœจ ์†Œ๊ฐ

์นด์นด์˜คํ†ก์˜ ์‚ฌ์šฉ ๊ฒฝํ—˜์„ ํ† ๋Œ€๋กœ ๊ฐ™์€ ์„œ๋น„์Šค ์‚ฌ์šฉ ํ”Œ๋กœ์šฐ๋ฅผ ๊ฐ€์ง€๊ณ  ๊ฐ€๋ ค๊ณ  ๋…ธ๋ ฅํ–ˆ๋‹ค. ๊ฐœ์ธ์นดํ†ก๋ฐฉ์—์„œ๋Š” ์„œ๋กœ ๋‚˜๊ฐ„ ๊ฒƒ์„ ์•Œ ์ˆ˜ ์—†๊ฑฐ๋‚˜ ๊ฐœ์ธ ํ†ก๋ฐฉ์—์„œ ์นœ๊ตฌ ์ดˆ๋Œ€์‹œ ์ƒˆ๋กœ์šด ๋‹จ์ฒด ํ†ก๋ฐฉ์ด ์ƒ์„ฑ๋˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ์‚ฌ์šฉ์„ฑ์„ ๊ทธ๋Œ€๋กœ ๊ตฌํ˜„ํ•˜์˜€๋‹ค. ์ด ๊ณผ์ •์—์„œ ์นด์นด์˜คํ†ก ๊ฐœ๋ฐœ์ž๊ฐ€ ์ƒ๊ฐํ•ด ๋‚˜๊ฐ„ ํ๋ฆ„์„ ๋”ฐ๋ผ๊ฐ€๋Š” ๊ฒฝํ—˜์„ ํ•œ ๊ฒƒ ๊ฐ™๋‹ค. ํŒ€์›๋“ค๊ณผ ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ์–ด๋–ค ์‹์œผ๋กœ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ด ๋งž์„์ง€ ๊ณ ๋ฏผํ•˜๊ณ  ์„ค๊ณ„ํ•˜๋ฉด์„œ ๋ฐฐ์šด์ ์ด ๋งŽ์•˜๋‹ค. ๋ฐฑ์—”๋“œ๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„ ์‚ฌ์šฉํ•˜๊ธฐ๋งŒ ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋ฐฑ์—”๋“œ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ‘๊ทผํ•ด ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๊ณผ์ •์„ ์ตœ์†Œํ™”ํ•˜๊ธฐ ์œ„ํ•ด ํ”„๋ก ํŠธ์—”๋“œ์—์„œ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ณตํ•˜๋ฉฐ ๊ฐœ์„ ํ•ด๊ฐ€๋Š” ๊ณผ์ •์ด ๋งค์šฐ ์ธ์ƒ๊นŠ์—ˆ๋‹ค. ์งง์€ ๊ธฐ๊ฐ„์— ์™„์ˆ˜ํ•œ ํ”„๋กœ์ ํŠธ์ง€๋งŒ ๋ช‡ ๋ฐฐ์˜ ๊ฒฝํ—˜๊ณผ ๋ฐฐ์›€์„ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์‹œ๊ฐ„์ด์—ˆ๋‹ค.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published