Skip to content

๐Ÿ›’ ์•„๋งˆ์กด ๋ฉ”์ธ ํŽ˜์ด์ง€์˜ ์บ๋Ÿฌ์…€ ์Šฌ๋ผ์ด๋” UI๊ณผ ๊ฒ€์ƒ‰ ์ž๋™ ์™„์„ฑ ๊ธฐ๋Šฅ์„ ์ˆœ์ˆ˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ๊ตฌํ˜„ํ•˜๊ธฐ

leehwarang/javascript-amazon

ย 
ย 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

34 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Amazon Main Page Clone Project

๐Ÿ›’ ์•„๋งˆ์กด ๋ฉ”์ธ ํŽ˜์ด์ง€์˜ ์บ๋Ÿฌ์…€ ์Šฌ๋ผ์ด๋” UI๊ณผ ๊ฒ€์ƒ‰ ์ž๋™ ์™„์„ฑ ๊ธฐ๋Šฅ์„ ์ˆœ์ˆ˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ๊ตฌํ˜„ํ•˜๊ธฐ

Overview

  • ๋ฐ๋ชจ ๋งํฌ

    • ๊ฒ€์ƒ‰ ์ž๋™ ์™„์„ฑ ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ์‹œ b, i, j๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋ฌธ์ž๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”. ์ž„์˜๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. (ex. bicycle, iphone, javascript ... )
  • ์‚ฌ์šฉ๋œ ์–ธ์–ด ๋ฐ ํ”„๋ ˆ์ž„ ์›Œํฌ: html, css, javascript, node.js, express

  • ์„œ๋ฒ„ ๋ฐฐํฌ: heroku


1. ์บ๋Ÿฌ์…€ ์Šฌ๋ผ์ด๋” UI

์บ๋Ÿฌ์…€ ์Šฌ๋ผ์ด๋” UI

1-1. ๊ธฐ๋Šฅ

  • ๋ฉ”์ธ ๊ธฐ๋Šฅ

    • ํŽ˜์ด์ง€๋„ค์ด์…˜(Pagination)๊ณผ ์ขŒ-์šฐ ๋ฒ„ํŠผ์œผ๋กœ ์บ๋Ÿฌ์…€ ์ปจํ…์ธ  ๋ณ€๊ฒฝ
    • ๋ฌดํ•œ ๋ฃจํ”„๋กœ ๋™์ž‘
  • ์„ธ๋ถ€ ๊ธฐ๋Šฅ

    • ๋ฐ์ดํ„ฐ ๋น„๋™๊ธฐ ์š”์ฒญ ํ›„, template์„ ๋™์ ์œผ๋กœ ์ƒ์„ฑ. ๋ฐ์ดํ„ฐ์˜ ๊ฐฏ์ˆ˜๊ฐ€ ๋ณ€ํ•˜๋”๋ผ๋„ ๋™์ผํ•œ UI
    • ์‚ฌ์šฉ์ž๊ฐ€ ๋งˆ์šฐ์Šค๋ฅผ ๋น ๋ฅด๊ฒŒ ํด๋ฆญํ•˜๋”๋ผ๋„ ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘

1-2. ์„ค๊ณ„ ๋ฐ ๊ตฌํ˜„

  • ๊ฐ ์—ญํ• ๋ณ„๋กœ ํด๋ž˜์Šค(๋ชจ๋“ˆ) ๋ถ„๋ฆฌ

    แ„แ…ขแ„…แ…ฅแ„‰แ…ฆแ†ฏ แ„แ…ณแ†ฏแ„…แ…ขแ„‰แ…ณ แ„€แ…ฎแ„‡แ…ฎแ†ซ
  • Carousel: Controller์—๊ฒŒ ๋ฐ›์€ ๋ฐ์ดํ„ฐ๋กœ ์ดˆ๊ธฐํ™”. ์‚ฌ์šฉ์ž๊ฐ€ ์ขŒ-์šฐ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด Controller์—๊ฒŒ ์•Œ๋ฆผ

  • Pagination: Controller์—๊ฒŒ ๋ฐ›์€ ๋ฐ์ดํ„ฐ๋กœ ์ดˆ๊ธฐํ™”. ์‚ฌ์šฉ์ž๊ฐ€ ํŽ˜์ด์ง€๋„ค์ด์…˜์„ ํด๋ฆญํ•˜๋ฉด Controller์—๊ฒŒ ์•Œ๋ฆผ

  • Controller: Carousel์—์„œ ๋ณด์—ฌ์ค„ ์ปจํ…์ธ ์™€ Pagination์—์„œ scale up ํ•  ์ธ๋ฑ์Šค๋ฅผ ๋™๊ธฐํ™” ์‹œํ‚ค๊ธฐ ์œ„ํ•œ ๋ชจ๋“  ์ •๋ณด(์†์„ฑ, ํ•จ์ˆ˜) ๊ด€๋ฆฌ

    • Carousel๊ณผ Pagination์—๊ฒŒ ์ƒˆ๋กœ์šด ์‚ฌ์šฉ์ž ์ž…๋ ฅ์ด ๋ฐœ์ƒํ–ˆ๋‹ค๋Š” ์•Œ๋ฆผ์„ ๋ฐ›์œผ๋ฉด Controller๋Š” ๋‹ค์‹œ ๋‘ ํด๋ž˜์Šค์—๊ฒŒ ์—…๋ฐ์ดํŠธ๋œ ์ •๋ณด ์ „๋‹ฌ
    แ„แ…ขแ„…แ…ฅแ„‰แ…ฆแ†ฏ แ„แ…ณแ†ฏแ„…แ…ขแ„‰แ…ณ แ„‰แ…ฅแ†ฏแ„€แ…จ

1-3. ๊ตฌํ˜„์‹œ ๊ฐ€์žฅ ๊ณ ๋ฏผํ–ˆ๋˜ ๋ถ€๋ถ„

  • Caroseul์™€ Pagination์˜ ์˜์กด ๊ด€๊ณ„๋ฅผ ๋‚ฎ์ถ”๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•

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

    • ๋”ฐ๋ผ์„œ 1-2. ์—์„œ ์„ค๋ช…ํ•œ ๊ฒƒ ์ฒ˜๋Ÿผ ๋‘ ํด๋ž˜์Šค์˜ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” Controller ํด๋ž˜์Šค๋ฅผ ์ƒ์„ฑํ•˜์˜€๊ณ , Carousel๊ณผ Pagination์€ Controller์—๊ฒŒ ์ „๋‹ฌ ๋ฐ›์€ ์ƒํƒœ ์ •๋ณด์— ์˜ํ•ด์„œ๋งŒ ๋ Œ๋”๋ง ๋˜๋„๋ก ์žฌ์„ค๊ณ„ ํ•˜์˜€๋‹ค.


2. ๊ฒ€์ƒ‰ ์ž๋™ ์™„์„ฑ ๊ธฐ๋Šฅ

๊ฒ€์ƒ‰ ์ž๋™ ์™„์„ฑ

2-1. ๊ธฐ๋Šฅ

  • ๋ฉ”์ธ ๊ธฐ๋Šฅ

    • express๋กœ ์„œ๋ฒ„ ํ™˜๊ฒฝ ๊ตฌ์„ฑ ๋ฐ ๊ฒ€์ƒ‰ ์ž๋™ ์™„์„ฑ API ์„ค๊ณ„
    • ์‚ฌ์šฉ์ž ์ž…๋ ฅ ๋ฐœ์ƒ์‹œ ์ž๋™ ์™„์„ฑ ๋ฐ์ดํ„ฐ ๊ฐ€ ๋ณด์—ฌ์ง€๋ฉฐ, enterํ‚ค ๋ˆ„๋ฅด๋ฉด ์„ ํƒ๋œ ๊ฒ€์ƒ‰์–ด๊ฐ€ ์ž…๋ ฅ์ฐฝ์œผ๋กœ ์ด๋™
    • ์ž…๋ ฅ์ฐฝ์— ๊ฒ€์ƒ‰์–ด๊ฐ€ ์žˆ์„ ์‹œ์— ๊ฒ€์ƒ‰ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด ์ตœ๊ทผ ๊ฒ€์ƒ‰์–ด ๋กœ ์ €์žฅ
  • ์„ธ๋ถ€ ๊ธฐ๋Šฅ

    • ๋””๋ฐ”์šด์Šค(debounce) ๊ธฐ๋Šฅ์œผ๋กœ 1.2์ดˆ ๋™์•ˆ ์‚ฌ์šฉ์ž ์ž…๋ ฅ์ด ์—†์„ ์‹œ์—๋งŒ API ์š”์ฒญ

2-2. ์„ค๊ณ„ ๋ฐ ๊ตฌํ˜„

  • ๊ฐ ์—ญํ• ๋ณ„๋กœ ํด๋ž˜์Šค(๋ชจ๋“ˆ) ๋ถ„๋ฆฌ

แ„€แ…ฅแ†ทแ„‰แ…ขแ†จ แ„Œแ…กแ„ƒแ…ฉแ†ผ แ„‹แ…ชแ†ซแ„‰แ…ฅแ†ผ แ„แ…ณแ†ฏแ„…แ…ขแ„‰แ…ณ แ„€แ…ฎแ„‡แ…ฎแ†ซ

  • SearchView: ์‚ฌ์šฉ์ž ์ž…๋ ฅ์„ ๋ฐ›์œผ๋ฉด Controller์—๊ฒŒ ์•Œ๋ฆผ. autoCompleView ๋˜๋Š” recentSearchView์—์„œ ์„ ํƒํ•œ ๊ฒ€์ƒ‰์–ด๋ฅผ ์ž…๋ ฅ์ฐฝ์—์„œ ๋ณด์—ฌ์คŒ

  • AutoCompleteView: searchView์—์„œ ์ž…๋ ฅ ๋ฐ›์€ ๊ฒ€์ƒ‰์–ด์— ํ•ด๋‹นํ•˜๋Š” ์ž๋™ ์™„์„ฑ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์„ ์‹œ ๋ณด์—ฌ์คŒ

  • RecentSearchView: searchView์—์„œ ๊ฒ€์ƒ‰ ๋ฒ„ํŠผ์„ ํด๋ฆญํ–ˆ์„ ์‹œ์— ์ €์žฅ๋˜๋Š” ์ตœ๊ทผ ๊ฒ€์ƒ‰์–ด ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ. searchView๋ฅผ ํด๋ฆญํ–ˆ์„ ๋•Œ ๋ณด์—ฌ์ง

  • ModalView: autoCompleteView์™€ ModalView์˜ ๊ณตํ†ต ๋กœ์ง์„ ์ •์˜ํ•˜์—ฌ, ๋‘ ํด๋ž˜์Šค๊ฐ€ ์ƒ์† ๋ฐ›์•„ ์‚ฌ์šฉํ•˜๋„๋ก ํ•จ

  • Controller: ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์ด๋ฒคํŠธ(focus, blur, enter, click...)๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ, ๊ฐ View๊ฐ€ ์•Œ๋งž์€ ์ƒํƒœ๋ฅผ ๊ฐ€์ง€๋„๋ก ํ•˜๋Š” ๋ชจ๋“  ์ •๋ณด(์†์„ฑ, ํ•จ์ˆ˜) ๊ด€๋ฆฌ

แ„€แ…ฅแ†ทแ„‰แ…ขแ†จ แ„Œแ…กแ„ƒแ…ฉแ†ผ แ„‹แ…ชแ†ซแ„‰แ…ฅแ†ผ แ„แ…ณแ†ฏแ„…แ…ขแ„‰แ…ณ แ„‰แ…ฅแ†ฏแ„€แ…จ

2-3. ๊ตฌํ˜„์‹œ ๊ฐ€์žฅ ๊ณ ๋ฏผํ–ˆ๋˜ ๋ถ€๋ถ„

  • ์ด๋ฒคํŠธ์— ๋”ฐ๋ฅธ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•

    • ๊ฒ€์ƒ‰ ์ž๋™ ์™„์„ฑ ๊ธฐ๋Šฅ์€ ์‚ฌ์šฉ์ž์˜ ์ž…๋ ฅ์— ๋”ฐ๋ผ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ํ•˜๋‚˜์˜ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด, ๊ด€๋ จ๋œ ๋ชจ๋“  View ํด๋ž˜์Šค์— ์˜ํ–ฅ์„ ์ฃผ๊ธฐ ๋•Œ๋ฌธ์— Controller์—์„œ ์ ์ ˆํžˆ ์ฒ˜๋ฆฌํ•ด์ฃผ์–ด์•ผ ํ–ˆ๋‹ค.
    ์ด๋ฒคํŠธ ๋ฐœ์ƒ ์ด๋ฒคํŠธ ๋ฐœ์ƒ ์ƒํ™ฉ currentMode
    enter ์ž…๋ ฅ์ฐฝ์— ๊ธ€์ž ์ž…๋ ฅ entering
    click ์ž…๋ ฅ์ฐฝ์— ๊ธ€์ž ์ž…๋ ฅ ์™„๋ฃŒ ํ›„ ๊ฒ€์ƒ‰ ๋ฒ„ํŠผ ํด๋ฆญ completing
    focus ์ž…๋ ฅ์ฐฝ์„ ํด๋ฆญ focusing
    blur ์ž…๋ ฅ์ฐฝ์„ ํด๋ฆญํ•œ ํ›„ ๋‹ค๋ฅธ ๊ณณ์„ ํด๋ฆญ blured
    x x (์•„๋ฌด ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์„ ์‹œ) pending
  • ํŠน์ • ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์ž„์˜๋กœ ์ •ํ•œ currentMode๋ฅผ ์„ค์ •ํ•˜๊ณ , currentMode๊ฐ€ ๋ณ€๊ฒฝ๋  ๋•Œ๋งˆ๋‹ค ์—ฐ๊ด€๋œ View๋“ค์— ์•Œ๋ฆผ์„ ์ฃผ๋„๋ก ์„ค๊ณ„ํ•˜์˜€๋‹ค.

3. ๋Š๋‚€์ 

  • ์ˆœ์ˆ˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ์›น ์‚ฌ์ดํŠธ๋ฅผ ๋งŒ๋“ค์–ด ๋ณด๋Š” ๊ฐ’์ง„ ๊ฒฝํ—˜

    • ํ”„๋กœ์ ํŠธ์˜ ๊ตฌ์กฐ๋ฅผ ์žก๋Š” ๋ฐฉ๋ฒ•, javascript ํด๋”๋ฅผ UI ์ปดํฌ๋„ŒํŠธ๋ณ„๋กœ ๋ถ„๋ฆฌํ•˜๊ณ  ๊ทธ ์•ˆ์—์„œ ํด๋ž˜์Šค๋ฅผ ์„ค๊ณ„ํ•˜๋Š” ๋ฐฉ๋ฒ•, entry point๊ฐ€ ๊ฐ€์ง€๋Š” ์ค‘์š”์„ฑ ๋“ฑ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋ชจ๋“  ๊ณผ์ •์„ ๊ณ ๋ฏผํ•˜๋ฉด์„œ ๊ตฌํ˜„ํ•˜๋Š” ๊ณผ์ •์˜ ๋งŒ์กฑ๊ฐ์€ ์ •๋ง ์ปธ๋‹ค.

    • DOM์„ ์ œ์–ดํ•˜๋Š” ํ•จ์ˆ˜, this ๋ฐ”์ธ๋”ฉ, ES6์˜ ๋ฌธ๋ฒ•์„ ์ต์ˆ™ํ•˜๊ฒŒ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๊ฒŒ ๋œ ๊ฒƒ์€ ํฐ ์ˆ˜ํ™•์ด๋‹ค. ์ด๋ก ์ ์œผ๋กœ ๋Š๊ปด์กŒ๋˜ ๊ฒƒ๋“ค์„ ์ง์ ‘ ๊ตฌํ˜„ํ•ด๋ณด๋ฉด์„œ ์‚ฌ์šฉ๋ฒ•์„ ์ตํžˆ๊ณ  ๋Š๋‚„ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

  • ๋ฆฌ์•กํŠธ๋ฅผ ์‹œ์ž‘ํ•œ ํ›„ ์ด ํ”„๋กœ์ ํŠธ์˜ ๊ฒฝํ—˜์ด ์ฃผ๋Š” ์žฅ์ ๋“ค

    • Controller๊ฐ€ View๋“ค์˜ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ์„ค๊ณ„ ๋ฐฉ์‹์ด ๋ฆฌ์•กํŠธ์—์„œ ์ƒ์œ„ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ํ•˜์œ„ ์ปดํฌ๋„ŒํŠธ์˜ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ๊ณผ ์œ ์‚ฌํ•˜๋‹ค๊ณ  ๋Š๊ผˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ƒ์œ„ ์ปดํฌ๋„ŒํŠธ์˜ ์ƒํƒœ๊ฐ€ ๋ณ€๊ฒฝ๋  ๋•Œ๋งˆ๋‹ค ํ•˜์œ„ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ Œ๋”๋ง ๋˜๋Š” ๋งฅ๋ฝ์„ ์‰ฝ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

    • UI๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํด๋ž˜์Šค๋ฅผ ์ง์ ‘ ๋ถ„๋ฆฌํ•˜๊ณ  ์„ค๊ณ„ ํ•ด๋ณด๋Š” ๊ณผ์ •์ด ํ›„์— ๋ฆฌ์•กํŠธ์—์„œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ชผ๊ฐœ๋Š”๋ฐ ๋„์›€์„ ๋ฐ›๊ณ  ์žˆ๋‹ค.

About

๐Ÿ›’ ์•„๋งˆ์กด ๋ฉ”์ธ ํŽ˜์ด์ง€์˜ ์บ๋Ÿฌ์…€ ์Šฌ๋ผ์ด๋” UI๊ณผ ๊ฒ€์ƒ‰ ์ž๋™ ์™„์„ฑ ๊ธฐ๋Šฅ์„ ์ˆœ์ˆ˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ๊ตฌํ˜„ํ•˜๊ธฐ

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 82.1%
  • CSS 9.8%
  • HTML 8.1%