Skip to content

dev-allenk/javascript-amazon

ย 
ย 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

23 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Amazon UI Clone - Carousel & Keyword suggestion

vanilla javascript๋กœ ์•„๋งˆ์กด์˜ ์บ๋Ÿฌ์…€ UI์™€ ๊ฒ€์ƒ‰ ์ž๋™์™„์„ฑ UI ๊ตฌํ˜„ํ•˜๊ธฐ
์‚ฌ์šฉ ๊ธฐ์ˆ  : html, css, javascript, express, node.js

Index


1. ๊ธฐ๋Šฅ

1-1. ์บ๋Ÿฌ์…€ UI

  • ํ™”์‚ดํ‘œ ๋ฒ„ํŠผ์„ ํด๋ฆญ ์‹œ 1์นธ์”ฉ ์ปจํ…์ธ ๋ฅผ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋‹ค
  • ํŽ˜์ด์ง€๋„ค์ด์…˜์„ ํด๋ฆญ ์‹œ ํ•ด๋‹น ์ปจํ…์ธ ๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋‹ค
  • infinite carousel ๊ตฌํ˜„(์˜ต์…˜์œผ๋กœ on/off)

์บ๋Ÿฌ์…€ ๋™์ž‘ ๋ชจ์Šต

carousel-demo

1-2. ๊ฒ€์ƒ‰์–ด ์ž๋™์™„์„ฑ UI

  • ๊ฒ€์ƒ‰์–ด ์ž๋™์™„์„ฑ (์ง€์› ํ‚ค์›Œ๋“œ : bicycle, javascript, iphone)
    • ๊ฒ€์ƒ‰์–ด ์ž…๋ ฅ ์‹œ ์ž๋™์™„์„ฑ, ๋ฐฉํ–ฅํ‚ค ๋˜๋Š” ๋งˆ์šฐ์Šค๋กœ ์„ ํƒ ๊ฐ€๋Šฅ
  • ์ตœ๊ทผ ๊ฒ€์ƒ‰์–ด ์ €์žฅ
    • ์ž๋™์™„์„ฑ ๊ฒ€์ƒ‰์–ด๋ฅผ ์„ ํƒ ํ›„ ์—”ํ„ฐํ‚ค ์ž…๋ ฅ or ๋งˆ์šฐ์Šค๋กœ ํด๋ฆญ ์‹œ ์ตœ๊ทผ๊ฒ€์ƒ‰์–ด๋กœ ์ €์žฅ
  • ์ž๋™์™„์„ฑ ์ง€์› ํ‚ค์›Œ๋“œ ์ด์™ธ์˜ ํ‚ค์›Œ๋“œ๋„ ๊ฒ€์ƒ‰ ์‹œ ์ตœ๊ทผ๊ฒ€์ƒ‰์–ด๋กœ ์ €์žฅ
  • ์ž…๋ ฅ์ฐฝ ํฌ์ปค์Šค ์‹œ ์ตœ๊ทผ ๊ฒ€์ƒ‰์–ด ํ‘œ์‹œ
  • ์ตœ๊ทผ ๊ฒ€์ƒ‰์–ด ๋ชฉ๋ก์—์„œ๋„ ๋ฐฉํ–ฅํ‚ค ๋ฐ ๋งˆ์šฐ์Šค๋กœ ํ‚ค์›Œ๋“œ ์„ ํƒ ๋ฐ ๊ฒ€์ƒ‰ ๊ฐ€๋Šฅ(์ตœ๊ทผ ๊ฒ€์ƒ‰์–ด ์ˆœ์„œ ์—…๋ฐ์ดํŠธ)

๊ฒ€์ƒ‰์–ด ์ž๋™์™„์„ฑ ๋™์ž‘ ๋ชจ์Šต

suggestion-demo


2. ์„ค๊ณ„

2-1. ์ปดํฌ๋„ŒํŠธ ๊ตฌ์„ฑ

amazon-components

  • ํฌ๊ฒŒ ์บ๋Ÿฌ์…€๊ณผ ์ž๋™์™„์„ฑ 2๊ฐœ์˜ ์ปดํฌ๋„ŒํŠธ๋กœ ๋‚˜๋ˆ„๊ณ  ๊ฐ๊ฐ ํ•˜์œ„ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ฐ–๋Š” ๊ตฌ์กฐ๋กœ ๊ตฌ์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค.
    • ์บ๋Ÿฌ์…€ : StateManager, Carousel, Pagination
    • ์ž๋™์™„์„ฑ : StateManager, SearchBarUI, SuggestionUI, RecentKeywordsUI
  • ์š”๊ตฌ์‚ฌํ•ญ(๊ธฐ๋Šฅ)์˜ ๋ณ€ํ™”์— ๋”ฐ๋ผ ์ ์€ ์ˆ˜์ •์œผ๋กœ ๋ณ€ํ™”์— ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ถ„๋ฆฌํ•˜๋Š”๋ฐ์— ์ดˆ์ ์„ ๋งž์ถ”์—ˆ์Šต๋‹ˆ๋‹ค.
    • ex) pagination๋งŒ ํ•„์š”ํ•˜๋‹ค๊ฑฐ๋‚˜, suggestion์€ ์—†๋Š” ๊ฒ€์ƒ‰๋ฐ”๊ฐ€ ํ•„์š”ํ•˜๋‹ค๊ฑฐ๋‚˜ ๋“ฑ

2-2. ์บ๋Ÿฌ์…€ ์ปดํฌ๋„ŒํŠธ๊ฐ„ ๋ฉ”์‹œ์ง€ ํ๋ฆ„

carousel-diagram

  • pagination ๋ฐ carousel์ด stateManager๋ฅผ ์ฃผ์ž…๋ฐ›์•„์„œ ๊ตฌ๋…ํ•ฉ๋‹ˆ๋‹ค.
  • event trigger > setState > updateState > notify > render ์˜ ํ๋ฆ„์œผ๋กœ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.

2-3. ์ž๋™์™„์„ฑ ์ปดํฌ๋„ŒํŠธ๊ฐ„ ๋ฉ”์‹œ์ง€ ํ๋ฆ„

searchbar-diagram

  • searchBarUI, suggestionUI, recentKeywordsUI๊ฐ€ stateManager๋ฅผ ์ฃผ์ž…๋ฐ›์•„์„œ ๊ตฌ๋…ํ•ฉ๋‹ˆ๋‹ค.
  • event trigger > setState > process__mode > updateState > notify > render์˜ ํ๋ฆ„์œผ๋กœ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.

3. ๊ณ ๋ฏผํ•œ ์ 

3-1. ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ pagination ์ปดํฌ๋„ŒํŠธ ์„ค๊ณ„

carousel-structure-history

  1. ์ฒ˜์Œ์—๋Š” Carousel ํด๋ž˜์Šค 1๊ฐœ๋กœ๋งŒ ๊ตฌํ˜„ํ–ˆ์œผ๋‚˜, Pagination์„ ์žฌ์‚ฌ์šฉ ํ•  ์ˆ˜ ์žˆ๊ฒŒ๋” ๋ถ„๋ฆฌํ•˜๊ณ ์ž ํ•จ.
  2. ๋‹จ์ˆœํžˆ 2๊ฐœ์˜ ํด๋ž˜์Šค๋กœ ๋ถ„๋ฆฌํ–ˆ๋”๋‹ˆ ์ƒํ˜ธ ํ˜ธ์ถœ๋˜์–ด์„œ ์žฌ์‚ฌ์šฉ๋„ ๋ถˆ๊ฐ€๋Šฅํ•˜๊ณ  ๋ถ„๋ฆฌํ•œ ์˜๋ฏธ๊ฐ€ ์—†์Œ.
  3. ๋ฐฉ๋ฒ•์ด ์—†์„๊นŒ ๊ณ ๋ฏผํ•˜๋˜ ์ค‘ pagination๊ณผ carousel์ด ํ•˜๋Š” ์ผ์ด '๋ช‡๋ฒˆ์งธ ์นด๋“œ๋ฅผ ๋ณด์—ฌ์ค„ ์ง€'๋ฅผ ์ •ํ•ด์„œ ๋ณด์—ฌ์ฃผ๋Š” ๊ฒƒ์ž„์„ ๊นจ๋‹ฌ์Œ.
  4. ๊ทธ๋Ÿผ ์ด **๊ณตํ†ต์˜ ์—ญํ• ์„ ๋ถ„๋ฆฌํ•˜๋ฉด ๋…๋ฆฝ์ ์ธ ํด๋ž˜์Šค๊ฐ€ ๋˜์ง€ ์•Š์„๊นŒ?**๋ผ๋Š” ์ƒ๊ฐ์ด ๋“ฌ.
  5. ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” stateManager์™€ rendering์„ ๋‹ด๋‹นํ•˜๋Š” pagination๊ณผ carousel ํด๋ž˜์Šค๋กœ ๋ถ„๋ฆฌํ•จ.

model๊ณผ view๋ฅผ ๋ถ„๋ฆฌํ•จ์œผ๋กœ์จ ๋ณ€๊ฒฝ์ด ์žˆ๋”๋ผ๋„ ๋‹ค๋ฅธ ๋ถ€๋ถ„์— ์˜ํ–ฅ์ด ์—†๋Š” ๊ตฌ์กฐ๋ฅผ ๊ตฌํ˜„.

3-2. ์ด๋ฒคํŠธ ๋ฐœ์ƒ > ์ƒํƒœ ๋ณ€๊ฒฝ > ๋ Œ๋”๋ง์œผ๋กœ ์ด์–ด์ง€๋Š” ๋ฉ”์‹œ์ง€ ํ๋ฆ„

  1. stateManager๋กœ ์ƒํƒœ๋ฅผ ๋ถ„๋ฆฌํ•˜๊ณ ๋‚˜๋‹ˆ ์ด๋ฒคํŠธ ๋ฐœ์ƒ > ์ƒํƒœ ๋ณ€๊ฒฝ > ๋ Œ๋”๋ง์œผ๋กœ ์ด์–ด์ง€๋Š” ๋ฉ”์‹œ์ง€ ํ๋ฆ„์„ ๊ตฌํ˜„ํ•ด์•ผํ–ˆ์Œ.
    1. ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ, ์ƒํƒœ๊ฐ€ ๋ฐ”๋€Œ๊ณ , ๋ Œ๋”๋ง์ด ๋˜๋Š” ํ๋ฆ„์€ ๋ฆฌ์•กํŠธ์™€ ๋‹ฎ์•„์žˆ๊ณ ,
    2. ์ƒํƒœ์˜ ๋ณ€๊ฒฝ์„ ๋‹ค๋ฅธ ์ปดํฌ๋„ŒํŠธ์— ์•Œ๋ฆฌ๋Š” ๋™์ž‘์€ MVVM๊ณผ ๋‹ฎ์•„์žˆ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ์Œ.
      MVVM์˜ ์˜ต์ €๋ฒ„ํŒจํ„ด(pubsubํŒจํ„ด)์„ ๊ณต๋ถ€ํ•˜๊ณ , ๋ฆฌ์•กํŠธ์˜ ๋ฉ”์‹œ์ง€ ์ „๋‹ฌ๋ฐฉ์‹์„ ๋น„์Šทํ•˜๊ฒŒ ๋”ฐ๋ผํ•ด๋ณด๊ธฐ๋กœ ํ•จ.

publisher

  1. publisher ํด๋ž˜์Šค๋ฅผ ๊ตฌํ˜„ํ•ด์„œ ์ƒํƒœ๋ณ€๊ฒฝ์ด ๋ฐœ์ƒํ•˜๋ฉด subscriber์˜ render๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๊ฒŒ๋” ๊ตฌํ˜„.

handleBtnClick

  1. subscriber๋Š” publisher๋ฅผ ๊ตฌ๋…ํ•˜๊ณ , ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ์—์„œ publisher.setState๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝ.

render

  1. subscriber๋Š” render๋ฉ”์„œ๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  render๋ฉ”์„œ๋“œ ์•ˆ์—์„œ DOM์กฐ์ž‘.

handleBtnClick > setState > notify > render์˜ ํ๋ฆ„ ๊ตฌํ˜„

3-3. ๋งŽ์€ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ์˜ ๋ฉ”์‹œ์ง€ ํ•ธ๋“ค๋ง

setState-code

  1. ์ž๋™์™„์„ฑ์˜ ๊ฒฝ์šฐ ๋งŽ์€ ์ด๋ฒคํŠธ์™€ ๋งŽ์€ ์ปดํฌ๋„ŒํŠธ๋กœ ์ธํ•ด ๋ถ„๊ธฐ๊ฐ€ ๋งŽ์•„์งˆ ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋จ.
  2. ๋ฉ”์‹œ์ง€์˜ ํ๋ฆ„์„ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ํ•  ๋ฐฉ๋ฒ•์„ ๊ณ ๋ฏผํ•จ.
  3. ์ƒํ™œ์ฝ”๋”ฉ ๋ฆฌ์•กํŠธ ๊ฐ•์˜์—์„œ mode๋ฅผ ํ†ตํ•ด ๊ธฐ๋Šฅ์„ ๊ตฌ๋ถ„ํ–ˆ๋˜ ๊ฒƒ์— ์ฐฉ์•ˆํ•ด ๊ธฐ๋Šฅ๋ณ„๋กœ mode๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ธฐ๋กœ ํ•จ.
  4. ์ด๋ฒคํŠธ ๋ฐœ์ƒ ์‹œ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•  ๋™์ž‘(๊ธฐ๋Šฅ)์„ recent, suggest, select, submit 4๊ฐ€์ง€ mode๋กœ ๊ตฌ๋ถ„ํ•จ.

mode๋กœ ๊ตฌ๋ถ„ํ•˜๋‹ˆ '๋ถ„๊ธฐ'๋ฅผ ๋ณด๋‹ค ๋ช…์‹œ์ ์œผ๋กœ ์ธ์ง€ํ•  ์ˆ˜ ์žˆ๊ณ  ๋™์ž‘ํ๋ฆ„์„ ํŒŒ์•…ํ•˜๊ธฐ ์ˆ˜์›”ํ•ด์ง.


4. ๋А๋‚€ ์ 

๋ฐฐ์šด ์ 

์—ญํ• ์— ๋”ฐ๋ผ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ถ„๋ฆฌํ•˜๊ณ  ์˜์กด์„ฑ ๋‚ฎ์€ ๊ตฌ์กฐ๋ฅผ ์„ค๊ณ„ํ•˜๋Š” ๋ฒ•

view๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์—ญํ• ์„ ๋ถ„๋ฆฌํ•˜๊ณ , ๊ทธ ์—ญํ• ์„ ๋‹ด๋‹นํ•  ์ปดํฌ๋„ŒํŠธ๋ฅผ ์„ค๊ณ„ํ•˜๊ณ , ์ปดํฌ๋„ŒํŠธ ์‚ฌ์ด์˜ ์˜์กด์„ฑ์„ ๋‚ฎ๊ฒŒ ๋งŒ๋“œ๋Š” ๋ฒ•์„ ๊ณ ๋ฏผํ•˜์˜€์Šต๋‹ˆ๋‹ค.
model๊ณผ view๋ฅผ ๋ถ„๋ฆฌํ•˜๊ณ , ์˜ต์ €๋ฒ„ํŒจํ„ด์„ ํ™œ์šฉํ•˜๋ฉด ์˜์กด์„ฑ์ด ๋‚ฎ์€ ๊ตฌ์กฐ๋ฅผ ์„ค๊ณ„ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์„ ๋ฐฐ์› ์Šต๋‹ˆ๋‹ค.

ํ…Œ์ŠคํŠธ ์ฝ”๋“œ์˜ ํ•„์š”์„ฑ

๊ฒ€์ƒ‰ ์ž๋™์™„์„ฑ์˜ ๊ฒฝ์šฐ ์ด๋ฒคํŠธ ์ข…๋ฅ˜๊ฐ€ ๋งŽ๋‹ค๋ณด๋‹ˆ ์–ด๋А ํ•œ๋ถ€๋ถ„์„ ์ˆ˜์ •ํ•˜๋ฉด ํ…Œ์ŠคํŠธ๋ฅผ ํ•ด์•ผํ•˜๋Š” ์‹œ๋‚˜๋ฆฌ์˜ค๋„ ๋งŽ์•˜์Šต๋‹ˆ๋‹ค.

test-scenario
<submit ๊ธฐ๋Šฅ์˜ ํ…Œ์ŠคํŠธ ์‹œ๋‚˜๋ฆฌ์˜ค>

์ด๋ ‡๋‹ค๋ณด๋‹ˆ ๋ฐ˜๋ณต์ ์œผ๋กœ ํ…Œ์ŠคํŠธํ•˜๋Š”๊ฒŒ ๋ฒˆ๊ฑฐ๋กœ์šด ์ผ์ด๋ผ๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๊ณ , ''์ด๋Ÿด ๋•Œ ํ…Œ์ŠคํŠธ์ฝ”๋“œ๊ฐ€ ์žˆ๋‹ค๋ฉด ํŽธํ•˜๊ฒ ๊ตฌ๋‚˜!''๋ผ๋Š” ์ƒ๊ฐ์ด ์ ˆ๋กœ ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

์•„์‰ฌ์šด ์  & ๊ฐœ์„ ํ•  ์ 

๊ธฐ๋Šฅ ์ถ”๊ฐ€ ์‹œ ์‚ฌ์ด๋“œ ์ดํŽ™ํŠธ(๋ฒ„๊ทธ)๊ฐ€ ์‰ฝ๊ฒŒ ๋ฐœ์ƒํ•จ(๊ฒ€์ƒ‰์–ด ์ž๋™์™„์„ฑ)

์ž๋™์™„์„ฑ ๊ตฌํ˜„์‹œ, ๋ฆฌ์•กํŠธ ๋А๋‚Œ์˜ ์ด๋ฒคํŠธ ํ๋ฆ„์„ ๊ตฌํ˜„ํ•˜๊ณ ์ž ํ–ˆ์œผ๋‚˜, ๋‹น์‹œ์—๋Š” Flux ์•„ํ‚คํ…์ฒ˜๋ผ๋“ ์ง€ uni-direction๊ฐ™์€ ๊ฐœ๋…์„ ์ž˜ ๋ชฐ๋ž์„ ๋•Œ๋ผ ๋ณ€ํ™”์— ๊ฐ•ํ•œ ๊ตฌ์กฐ๋ฅผ ์ œ๋Œ€๋กœ ๊ตฌํ˜„ํ•˜์ง€ ๋ชปํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
mode๋ฅผ ์ข€ ๋” ์„ธ๋ถ€์ ์œผ๋กœ ๋‚˜๋ˆด์œผ๋ฉด ๋” ๋‚˜์•˜์„ ๊ฒƒ ๊ฐ™๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ญ๋‹ˆ๋‹ค(์ง€๊ธˆ์€ submit modeํ•˜๋‚˜์—๋„ ๋งŽ์€ ๊ฒฝ์šฐ์˜ ์ˆ˜๊ฐ€ ๋ฐœ์ƒํ•จ). ๊ทธ๋ž˜๋„ ๋ฒ„๊ทธ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ตฌ๊ฐ„์€ ๋น„๊ต์  ์ฐพ๊ธฐ ์‰ฌ์šฐ๋‹ˆ ์ ˆ๋ฐ˜์˜ ์„ฑ๊ณต?
์ถ”ํ›„์— ๊ฐœ์„ ํ•  ๋•Œ dispatcher์™€ reducer๋ฅผ ๊ตฌํ˜„ํ•ด์„œ ์ด๋ฒคํŠธ ํ๋ฆ„ ์ œ์–ด๋ฅผ ์‹œ๋„ํ•ด๋ณผ ์ƒ๊ฐ์ž…๋‹ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•œ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ์ฝ”๋“œ๋ฅผ ํฌํฌํ•˜๊ณ  ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๋ฉด์„œ ์ฝ”๋“œ์˜ ์žฅ๋‹จ์ ์„ ๋А๊ปด๋ณผ ์ƒ๊ฐ์ž…๋‹ˆ๋‹ค.

๊ฐ๊ฐ์˜ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์žฌ์‚ฌ์šฉ์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ตฌ์กฐ๋กœ ์„ค๊ณ„ํ•œ ์ (๊ฒ€์ƒ‰์–ด ์ž๋™์™„์„ฑ)

์ž๋™์™„์„ฑ ์ปดํฌ๋„ŒํŠธ ์ค‘, recentKeywords์™€ suggestions์„ ๋‚˜๋ˆ„๋‹ค๋ณด๋‹ˆ ์ด๋ฒคํŠธํ•ธ๋“ค๋Ÿฌ๋ฅผ ๋“ฑ๋กํ•˜๋Š” ์ฝ”๋“œ๊ฐ€ ์ค‘๋ณต๋˜์–ด์„œ ํ•ธ๋“ค๋Ÿฌ๋ฅผ searchBar์— ๋‘์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‹ค๋ณด๋‹ˆ ๋ชจ๋“  ์ปดํฌ๋„ŒํŠธ๋“ค์ด ์žฌ์‚ฌ์šฉ์ด ์–ด๋ ค์šด ๊ตฌ์กฐ๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ๋ณด๋‹ˆ ๊ณตํ†ต๋ถ€๋ถ„์„ ํ•˜๋‚˜์˜ ์ปดํฌ๋„ŒํŠธ๋กœ ๋ฌถ๊ณ  ๋‘ ์ปดํฌ๋„ŒํŠธ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์ด๋ฒคํŠธํ•ธ๋“ค๋Ÿฌ๋Š” ์ด ์ƒˆ๋กœ์šด ์ปดํฌ๋„ŒํŠธ์— ์ž‘์„ฑํ•˜๋Š” ํ˜•์‹์œผ๋กœ ์ˆ˜์ •ํ•˜๋ฉด ๋  ๊ฒƒ ๊ฐ™๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

๋ช‡๋ช‡ ํ•จ์ˆ˜์˜ ํฌ๊ธฐ๊ฐ€ ๋„ˆ๋ฌด ์ปค์ง„ ์ 

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

About

๐Ÿš€vanilla javascript๋กœ ๊ตฌํ˜„ํ•œ ์•„๋งˆ์กด์˜ ์บ๋Ÿฌ์…€ UI์™€ ๊ฒ€์ƒ‰ ์ž๋™์™„์„ฑ UI

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • JavaScript 84.2%
  • CSS 11.5%
  • HTML 4.3%