codesquad-member-2020 / vm-4

baekCo, Reese

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Vending Machine

๐Ÿ“ท Screenshot

vending machine


๐Ÿ•น๏ธ How to use

โ–ถ๏ธ Demo

  1. ์˜ค๋ฅธ์ชฝ์— ์œ„์น˜ํ•œ ์ง€๊ฐ‘ ํ™”๋ฉด์—์„œ ๋™์ „์„ ํด๋ฆญํ•˜์—ฌ ์žํŒ๊ธฐ์— ๋ˆ์„ ํˆฌ์ž…ํ•ฉ๋‹ˆ๋‹ค.

  2. ํˆฌ์ž… ๊ธˆ์•ก์— ๋”ฐ๋ผ ๊ตฌ๋งค ๊ฐ€๋Šฅํ•œ ์ƒํ’ˆ์ด ๋ฌด์—‡์ธ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

    ๊ฐ€๊ฒฉ์ด ๋นจ๊ฐ•์ƒ‰์œผ๋กœ ํ•˜์ด๋ผ์ดํŒ…๋œ ์ƒํ’ˆ๋งŒ ๊ตฌ๋งค ๊ฐ€๋Šฅ!

  3. ๊ฐ€์šด๋ฐ ์ƒํƒœ ํŒจ๋„์—์„œ ์›ํ•˜๋Š” ์ƒํ’ˆ์˜ ๋ฒˆํ˜ธ๋ฅผ ๋ˆ„๋ฅธ ๋’ค ์„ ํƒ ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ ์ƒํ’ˆ์„ ๊ตฌ๋งคํ•ฉ๋‹ˆ๋‹ค.

    ์ƒํ’ˆ๋ฒˆํ˜ธ๋Š” ์™ผ์ชฝ ์ƒ๋‹จ๋ถ€ํ„ฐ 1, 2, 3 ... ์ˆœ์„œ๋Œ€๋กœ ๋ถ€์—ฌ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. (์ฝœ๋ผ: 1๋ฒˆ, ์นธ์ตธ: 20๋ฒˆ)


โš™๏ธ Features

views

feature status
walletView์—์„œ ๋™์ „์„ ๋ˆ„๋ฅด๋ฉด statePanelView์— ๊ธˆ์•ก์ด ํ‘œ์‹œ๋œ๋‹ค. โœ”๏ธ
walletView์—์„œ ๋™์ „์„ ๋ˆ„๋ฅด๋ฉด ๋™์ „ ๊ฐฏ์ˆ˜์™€ ์ด์•ก์ด ๋ณ€๊ฒฝ๋œ๋‹ค. โœ”๏ธ
์ƒํ’ˆ์€ statePanelView์—์„œ 0๋ถ€ํ„ฐ 9๊นŒ์ง€์˜ ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ ์„ ํƒํ•œ๋‹ค. (์ฝœ๋ผ: 1๋ฒˆ, ์นธ์ตธ: 20๋ฒˆ) โœ”๏ธ
์ด ํˆฌ์ž…๊ธˆ์•ก์— ๋”ฐ๋ผ itemPanelView์—์„œ ๊ตฌ๋งคํ•  ์ˆ˜ ์žˆ๋Š” ์ƒํ’ˆ์ด ํ•˜์ด๋ผ์ดํŒ… ๋œ๋‹ค. โœ”๏ธ
๋ชจ๋“  ์ด๋ฒคํŠธ๋Š” ๋ฉ”์‹œ์ง€์ฐฝ ํ™”๋ฉด์— ํ‘œ์‹œ๋œ๋‹ค. โœ”๏ธ

๐Ÿšง Code Structure

Data Flow

data flow

Models

  • vendingMachineModel, walletModel
  • view์™€ controller์˜ ์กด์žฌ๋ฅผ ๋ชจ๋ฅธ์ฑ„ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ์–ดํ•˜๋Š” ์—ญํ• ๋งŒ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  • ๊ฐ€์žฅ ์ตœ์‹ ์˜ ๋ฐ์ดํ„ฐ ์ƒํƒœ๋ฅผ localStorage์— ๋™๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค.
  • Observer pattern์—์„œ observable์— ํ•ด๋‹นํ•˜๋ฉฐ observableํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›์•„ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.
  • observer๋ฅผ ๋“ฑ๋กํ• ๋•Œ type์ธ์ž๋ฅผ ํ•จ๊ป˜ ์ „๋‹ฌ๋ฐ›์•„ ์ด๋ฒคํŠธ(๋ฐ์ดํ„ฐ๋กœ๋“œ, ๋™์ „ํˆฌ์ž…, ์ƒํ’ˆ๊ตฌ๋งค ๋“ฑ)์— ๋”ฐ๋ผ ์„ ํƒ์ ์œผ๋กœ notifyํ•˜์—ฌ view๋ฅผ ์—…๋ฐ์ดํŠธ ํ•ฉ๋‹ˆ๋‹ค.

Views

  • itemPanelView, statePanelView, walletView
  • ์ž์‹ ์ด ๊ตฌ๋…ํ•˜๊ณ  ์žˆ๋Š” model๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌ๋ฐ›์•„ ํ™”๋ฉด์— ํ‘œ์‹œํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.
  • Observer ํŒจํ„ด์—์„œ observer์— ํ•ด๋‹นํ•˜๋ฉฐ model(observable)์„ ์ฃผ์ž…๋ฐ›์•„ ๋‚ด๋ถ€์—์„œ ๊ตฌ๋…ํ•ฉ๋‹ˆ๋‹ค.

Controller

  • view์—์„œ ๋ฐœ์ƒํ•œ ์‚ฌ์šฉ์ž ์ด๋ฒคํŠธ(์ƒํ’ˆ ๋ฒˆํ˜ธ ํด๋ฆญ, ๋™์ „ ํด๋ฆญ)์— ๋”ฐ๋ผ model์ด ๋ฐ์ดํ„ฐ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ณ  ์ตœ์‹  ์ƒํƒœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ view์— ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
  • ์ค‘์žฌ์ž ์—ญํ• ์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“  model๊ณผ view๋ฅผ ์ฃผ์ž…๋ฐ›์•„ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.


About

baekCo, Reese


Languages

Language:JavaScript 74.1%Language:CSS 24.3%Language:HTML 1.6%