πŸ” BurgerKing-Order-Site μ½”λ“œ 리뷰 -1-

thumb_hyeokΒ·2022λ…„ 1μ›” 15일
7

πŸ” BurgerKing-Order-Site

λͺ©λ‘ 보기
3/4
post-thumbnail

πŸ”Ž μ½”λ“œ 리뷰

βœ’οΈ μ½”λ“œ 리뷰에 μ•žμ„œ

μ½”λ“œ 리뷰λ₯Ό μ§„ν–‰ν•˜κΈ°μ— μ•žμ„œ μ–΄λ–€ λ°©μ‹μœΌλ‘œ 진행할지 μ„€λͺ…ν•˜λ„λ‘ ν•˜κ² λ‹€. λ¨Όμ € ν”„λ‘œμ νŠΈ 섀계 와 μ½”λ“œ 가독성, μœ μ§€λ³΄μˆ˜ 두 λ‹¨κ³„λ‘œ λ‚˜λˆ μ„œ λ¦¬λ·°ν•˜λ„λ‘ ν•˜λ©°, ν”„λ‘œμ νŠΈ μ†Œκ°œ μ—μ„œ μž‘μ„±ν•œ κ΅¬ν˜„ κΈ°λŠ₯ λͺ©λ‘ λ‹¨μœ„λ‘œ μ½”λ“œλ₯Ό λ¦¬λ·°ν•˜λ„λ‘ ν•˜κ² λ‹€. λ˜ν•œ , μš°ν…Œμ½” μ„ λ°œ κ³Όμ •μ—μ„œ 평가 λŒ€μƒμ΄ μ•„λ‹ˆμ—ˆλ˜ HTML, CSS μ½”λ“œλŠ” μƒλž΅ν•˜κ³  JavaScript μ½”λ“œλ§Œ λ¦¬λ·°ν•˜λ„λ‘ ν•˜κ² λ‹€.

λ§ˆμ§€λ§‰μœΌλ‘œ μ½”λ“œ 리뷰 체크리슀트 의 μš”κ΅¬μ‚¬ν•­μ— μ–Όλ§ˆλ‚˜ λΆ€ν•©ν•˜λŠ” μ½”λ“œμ˜€λŠ”μ§€ ν•˜λ‚˜μ”© μ²΄ν¬ν•˜λ©° μ‚΄νŽ΄λ³΄λ„λ‘ ν•˜κ² λ‹€.


πŸ—ƒοΈ ν”„λ‘œμ νŠΈ 섀계

이전 글을 읽고 μ™”λ‹€λ©΄ μ•Œκ² μ§€λ§Œ 이 ν”„λ‘œμ νŠΈλŠ” 섀계 단계가 μ—†μ—ˆλ˜ ν”„λ‘œμ νŠΈλ‹€. 섀계λ₯Ό ν•˜μ§€ μ•Šμ•„ ν”„λ‘œμ νŠΈκ°€ μ–΄λ–»κ²Œ 잘λͺ»λ˜μ—ˆλŠ”지 리뷰λ₯Ό 체크리슀트λ₯Ό ν•˜λ‚˜μ”© 읽어보며 ν•΄λ³΄μž.

  • ❌ README.md νŒŒμΌμ— ν”„λ‘œκ·Έλž¨μ˜ κ΅¬ν˜„ν•  κΈ°λŠ₯듀을 뢄리해 μž‘μ€ λ‹¨μœ„λ‘œ μž‘μ„±ν–ˆλŠ”κ°€?

  • ❌ ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜λ©΄μ„œ μ˜ˆμ™Έ μΌ€μ΄μŠ€ 등을 μΆ”κ°€ν•˜λŠ” λ“±, README.md νŒŒμΌμ„ μ—…λ°μ΄νŠΈν–ˆλŠ”κ°€?

μ™œ μž‘μ„±ν•΄μ•Όν• κΉŒ?

사싀 λ¬Έλ²…μŠ€, μš°ν…Œμ½” ν”„λ¦¬μ½”μŠ€λ₯Ό μ ‘ν•˜κΈ° μ „μ—” λͺ¨λ“  ν”„λ‘œμ νŠΈλ₯Ό μœ„μ˜ μš”κ΅¬μ‚¬ν•­μ„ 지킀지 μ•Šκ³  μ‹œμž‘ν–ˆμ—ˆλŠ”λ° ν”„λ¦¬μ½”μŠ€κ°€ λλ‚˜κ³ λ‚˜μ„œ μ € 두 κ°€μ§€μ˜ μ€‘μš”μ„±μ„ κΉ¨λ‹«κ²Œ λ˜μ—ˆλ‹€.
일단 μš”κ΅¬μ‚¬ν•­μ„ 뢄리해 μž‘μ€ λ‹¨μœ„λ‘œ λ§Œλ“€λ©΄ λ§‰λ§‰ν–ˆλ˜ μš”κ΅¬μ‚¬ν•­μ΄ λ‹¨μˆœν•˜κ²Œ 보이기 μ‹œμž‘ν•˜κ³ , μ΄λŠ” λ‹¨μˆœν•œ μ½”λ“œλ‘œ 이어져 μ½”λ“œ 가독성 λ˜ν•œ 높일 수 μžˆμ—ˆλ‹€. λ˜ν•œ μ–΄λ–€ μ˜ˆμ™Έκ°€ μ‘΄μž¬ν•  지 미리 μ •λ¦¬ν•΄λ†“μœΌλ©΄ μ˜ˆμƒμΉ˜ λͺ»ν•œ λ°©ν–₯으둜 ν”„λ‘œκ·Έλž¨μ΄ νŠ€λŠ” 것도 μƒλ‹Ήνžˆ 많이 막을 수 μžˆμ—ˆλ‹€.
또 μ½”λ“œμ— λ¬Έμ œκ°€ 생겼을 λ•Œ, μ–΄λ””μ—μ„œ λ¬Έμ œκ°€ 생긴 것인지도 μ°Ύμ•„λ‚΄κΈ°κ°€ 쉽닀.

결둠은 μ‹œκ°„μ΄λΌλŠ” μ€‘μš”ν•œ λ¦¬μ†ŒμŠ€λ₯Ό μƒλ‹Ήνžˆ μ•„λ‚„ 수 μžˆλ‹€.


πŸ•΅οΈ μ½”λ“œ 가독성, πŸ—ƒοΈ μœ μ§€λ³΄μˆ˜

이제 ν”„λ‘œμ νŠΈ 섀계 뢀뢄은 λ¦¬νŒ©ν† λ§μ„ ν•˜λŠ” λΆ€λΆ„μ—μ„œ 두 가지 μš”κ΅¬μ‚¬ν•­μ„ μ–΄λ–»κ²Œ μ§€ν‚€λ©΄μ„œ ν”„λ‘œμ νŠΈλ₯Ό 진행할 수 μžˆλŠ”μ§€ λ‹€μŒ κΈ€μ—μ„œ μ‚΄νŽ΄λ³΄λ„λ‘ ν•˜κ³ , 이젠 λ¨Όμ € μ „μ²΄μ μœΌλ‘œ λ³΄μ΄λŠ” λ¬Έμ œκ°€ 뭔지λ₯Ό λ¨Όμ € μ‚΄νŽ΄λ³΄κ³ , κ΅¬ν˜„ κΈ°λŠ₯ λͺ©λ‘ 의 κΈ°λŠ₯을 κ΅¬ν˜„ν•œ μ½”λ“œλ₯Ό μˆœμ„œλŒ€λ‘œ λœ―μ–΄λ³΄λ©΄μ„œ μ½”λ“œ 가독성 κ³Ό μœ μ§€λ³΄μˆ˜ 에 λŒ€ν•΄ 리뷰해보도둝 ν•˜μž.

λ¨Όμ € HTML, CSS둜만 κ΅¬ν˜„λœ κΈ°λŠ₯λ“€, λ‹¨μˆœνžˆ 유튜브 λ”°μœ„λ₯Ό μ°Έκ³ ν•΄ λ§Œλ“  κΈ°λŠ₯을 λ¨Όμ € 빼놓고 리뷰λ₯Ό μ‹œμž‘ν•˜κ² λ‹€.

  • Home 화면에 μ§„μž…μ‹œ 버거킹 둜고λ₯Ό ν™œμš©ν•œ μ• λ‹ˆλ©”μ΄μ…˜μ΄ μž¬μƒλ˜λ„λ‘ κ΅¬ν˜„.

  • 메뉴가 μ—΄λ¦° μƒνƒœμ—μ„œ 이동할 메뉴λ₯Ό ν΄λ¦­ν•˜λ©΄ ν•΄λ‹Ή λ©”λ‰΄λ‘œ μ΄λ™ν•˜λ„λ‘ κ΅¬ν˜„.

⬆️ μœ„ 두 가지 κΈ°λŠ₯은 HTML, CSS 만으둜 κ΅¬ν˜„λœ κΈ°λŠ₯이닀.

  • Menu ν™”λ©΄μ—μ„œ λ“œλž˜κ·Έλ‘œ νšŒμ „ν•˜λŠ” λ‹€κ°ν˜• κ΅¬ν˜„

  • Restaurants ν™”λ©΄μ—μ„œ μœ„μΉ˜ 정보λ₯Ό 톡해 μ‚¬μš©μžλ₯Ό μ€‘μ‹¬μœΌλ‘œ 버거킹 맀μž₯을 λ³΄μ—¬μ£ΌλŠ” 지도λ₯Ό λ³΄μ—¬μ£ΌλŠ” κΈ°λŠ₯을 κ΅¬ν˜„.

  • μ‚¬μš©μžμ˜ μœ„μΉ˜μ •λ³΄λ₯Ό κ°€μ Έμ˜€λ„λ‘ κ΅¬ν˜„.

⬆️ μœ„ μ„Έ 가지 κΈ°λŠ₯은 μœ νŠœλΈŒμ™€ μΉ΄μΉ΄μ˜€λ§΅μ„ μ°Έκ³ ν•΄ κ΅¬ν˜„λœ κΈ°λŠ₯이닀.


πŸ’» λ³΄μ΄λŠ” ν”„λ‘œκ·Έλž¨ 전체 λ¬Έμ œμ λ“€

컀밋메세지

제일 λ¨Όμ € μ–˜κΈ°ν•˜κ³  싢은 뢀뢄은 컀밋 κ³Ό 디렉토리 이닀. μ½”λ“œλ¦¬λ·°λ₯Ό μœ„ν•΄μ„œ μ˜€λžœλ§Œμ— μ½”λ“œλ₯Ό λœ―μ–΄λ³΄κΈ° μœ„ν•΄ λ‹Ήμ—°νžˆ κΈ°λŠ₯λ‹¨μœ„λ‚˜ μ˜λ―ΈμžˆλŠ” λ‹¨μœ„λ‘œ 컀밋을 ν–ˆμ„κ±°λΌ μƒκ°ν•˜κ³  컀밋을 μ‚΄νŽ΄λ΄€λŠ”λ°...

λ„λŒ€μ²΄ μ»€λ°‹λ©”μ‹œμ§€λ§Œ λ³΄κ³ λŠ” 뭘 κ΅¬ν˜„ν•œ 컀밋인지λ₯Ό μ•Œ μˆ˜κ°€ μ—†μ—ˆλ‹€. (μ•„λ‹ˆ ???λŠ” λŒ€μ²΄ 뭐냐고 γ…‹γ…‹γ…‹γ…‹) 일관성도 ν•˜λ‚˜λ„ μ—†μ–΄μ„œ μ»€λ°‹μœΌλ‘œ μ½”λ“œμ˜ 역할을 νŒŒμ•…ν•˜λŠ” 것보닀 κ·Έλƒ₯ μ½”λ“œ 전체λ₯Ό λ³΄λ©΄μ„œ μ½μ–΄λ³΄λŠ”κ²Œ λ‚˜μ„ 것 κ°™λ‹€λŠ” 생각이 λ“€μ—ˆλ‹€.

μ΄μ œλŠ” 컀밋은 μš°ν…Œμ½” ν”„λ¦¬μ½”μŠ€λ₯Ό μ§„ν–‰ν•˜λ©΄μ„œ μ•Œκ²Œλœ μ»€λ°‹μž‘μ„±λ²•μ„ μ΄μš©ν•˜κ³  μžˆλ‹€. μ–΄λ–»κ²Œ 컀밋메세지λ₯Ό μž‘μ„±ν•΄μ•Όν•˜λŠ”μ§€λŠ” 링크λ₯Ό 톡해 λŒ€μ‹ ν•˜κ² λ‹€.

➑️ AngularJS Commit Message Conventions

디렉토리

κ·Έλž˜μ„œ VSCodeλ₯Ό μΌœμ„œ μ½”λ“œλ₯Ό ν™•μΈν•˜λ €ν–ˆλŠ”λ°...
그런데 JS file이 λͺ¨λ‘ JS폴더에 λ°•ν˜€μžˆμ—ˆλ‹€!

CSS νŒŒμΌμ€ κ·Έλž˜λ„ λͺ©μ μ— 맞게 뢄리λ₯Ό ν•΄λ†“μ•„μ„œ 어디에 μ“°μ΄λŠ” νŒŒμΌμΈμ§€ λ°”λ‘œ λ°”λ‘œ μ•Œ 수 μžˆμ—ˆλŠ”λ° JS νŒŒμΌμ€ 파일λͺ…μœΌλ‘œ μš©λ„λ₯Ό μ˜ˆμƒν•˜κ³  전체λ₯Ό λœ―μ–΄λ³΄λ©΄μ„œ ν”„λ‘œκ·Έλž¨μ˜ 흐름을 νŒŒμ•…ν•  수 밖에 μ—†μ—ˆλ‹€...

κ·ΈλŸ¬λ‚˜ 아직 λ‚˜λ„ λͺ…ν™•νžˆ 디렉토리λ₯Ό μ–΄λ–»κ²Œ λ‚˜λˆ μ•Όν•˜λŠ”μ§€λŠ” λͺ°λΌμ„œ λ‚˜ 슀슀둜 보고 이해할 수 있게만 λ‚˜λˆ„κ³  μžˆλ‹€. 이 뢀뢄은 μΆ”ν›„ κ³΅λΆ€ν•΄μ„œ 덧뢙이도둝 ν•˜κ² λ‹€.

μ½”λ“œ μ»¨λ²€μ…˜

μ½”λ“œ μ»¨λ²€μ…˜μ„ 미리 정해놓지 μ•Šμ•˜μœΌλ‹ˆ λ‹Ήμ—°νžˆ μ½”λ“œκ°€ 자기 λ§ˆμŒλŒ€λ‘œμ΄λ‹€. λ°‘μ—μ„œ μ½”λ“œλ₯Ό μ‚΄νŽ΄λ³΄λ©΄ μ•Œκ² μ§€λ§Œ 2space, 4space λ₯Ό ν˜Όμš©ν•΄μ„œ μ‚¬μš©ν•˜κ³  있고, '', "" 도 ν˜Όμš©ν•˜λŠ” λ“± 톡일성이 μ—†λŠ” λͺ¨μŠ΅μ„ 보여쀀닀.

μš°ν…Œμ½” ν”„λ¦¬μ½”μŠ€ λ•ŒλΆ€ν„°λŠ” eslint, prettierλ₯Ό 적극 ν™œμš©ν•˜κ³  airbnb의 μ½”λ“œ μ»¨λ²€μ…˜μ„ 채택해 ν”„λ‘œμ νŠΈμ— μ‚¬μš©ν–ˆκ³ , λ”±νžˆ μ½”λ“œ μ»¨λ²€μ…˜μ΄ μ •ν•΄μ ΈμžˆλŠ” μ•Šμ€ 개인 ν”„λ‘œμ νŠΈλΌλ©΄ κ·ΈλŒ€λ‘œ airbnb의 μ½”λ“œ μ»¨λ²€μ…˜μ„ μ‚¬μš©ν•  것 κ°™λ‹€.

정해진 μ½”λ“œ μ»¨λ²€μ…˜μ΄ μ—†μœΌλ‹ˆ 일단 μ½”λ“œ μ»¨λ²€μ…˜μ— λŒ€ν•œ λ¦¬λ·°λŠ” ν•˜μ§€ μ•Šκ³  λ¦¬νŒ©ν„°λ§ λ•Œ μ½”λ“œ μ»¨λ²€μ…˜μ— 맞좰 μ½”λ“œλ₯Ό μž‘μ„±ν•˜λ„λ‘ ν•˜κ² λ‹€.

➑️ Airbnb JavaScript μŠ€νƒ€μΌ κ°€μ΄λ“œ ν•œκ΅­μ–΄ λ²ˆμ—­λ³Έ

console.log

디버그 λ•Œ μ‚¬μš©ν•œ console.logκ°€ λ„ˆλ¬΄ 많이 λ‚¨μ•„μžˆλ‹€. λ¦¬λ·°ν•˜λŠ” λ™μ•ˆμ€ κ±΄λ“œλ¦¬μ§€ μ•Šκ³  λ¦¬νŒ©ν„°λ§μ„ ν•  λ•Œ λͺ¨λ‘ μ œκ±°ν•΄μ€„ 생각이닀.


πŸ’» κ΅¬ν˜„ κΈ°λŠ₯ λͺ©λ‘ μ½”λ“œ 리뷰

  • Home ν™”λ©΄μ—μ„œ 화면을 λ“œλž˜κ·Έν•˜λ©΄ μ„Ήμ…˜μ΄ μœ„ μ•„λž˜λ‘œ λ“œλž˜κ·Έ λ˜λ„λ‘ κ΅¬ν˜„.

//index.js

const $ = (selector) => document.querySelector(selector);

//scrollScreen.js

const lastPage = document.querySelectorAll('.section').length;
let curPage = curHeight = 0;

function scrollScreen(event) {
  if($(".menu-tree").classList.contains("is-active")){
    return;
  }

  const pageHeight = window.innerHeight;
  if (event.deltaY > 0 && curPage < lastPage){ 
    curPage++;
    window.scrollTo({top:curPage*pageHeight, left:0, behavior:'smooth'})
  }
  else if (event.deltaY < 0 && curPage > 1) {
    curPage--;
    window.scrollTo({top:curPage*pageHeight, left:0, behavior:'smooth'})
  }
}

window.setTimeout(window.addEventListener("wheel", scrollScreen),2800);

μœ„λŠ” 전체 μ½”λ“œμ΄κ³ , 이제 ν•œ 쀄씩 λœ―μ–΄λ³΄λ©΄μ„œ μ‚΄νŽ΄λ³΄λ„λ‘ ν•˜μž.

let curPage = curHeight = 0;

curPage, curHeight λΌλŠ” λ³€μˆ˜λ₯Ό 전역곡간에 λ§Œλ“€μ—ˆλ‹€. 심지어 curHeight λΌλŠ” λ³€μˆ˜λŠ” ν”„λ‘œκ·Έλž¨ μ „μ²΄μ—μ„œ ν•œ λ²ˆλ„ μ‚¬μš© μ•ˆ λœλ‹€.

  • 전역곡간 은 μ–΄λ””μ„œλ‚˜ μ ‘κ·Όν•  수 있기 λ•Œλ¬Έμ— μœ„ν—˜ν•˜λ‹€. μ „μ—­λ³€μˆ˜ λŠ” λ§Œλ“€μ§€ μ•Šμ•„μ•Όν•œλ‹€.
  • ν•„μš”μ—†λŠ” λ³€μˆ˜λŠ” μ œκ±°ν•΄μ•Όν•œλ‹€.
function scrollScreen(event) {
  if($(".menu-tree").classList.contains("is-active")){
    return;
  }

  const pageHeight = window.innerHeight;
  if (event.deltaY > 0 && curPage < lastPage){ 
    curPage++;
    window.scrollTo({top:curPage*pageHeight, left:0, behavior:'smooth'})
  }
  else if (event.deltaY < 0 && curPage > 1) {
    curPage--;
    window.scrollTo({top:curPage*pageHeight, left:0, behavior:'smooth'})
  }
}

window.setTimeout(window.addEventListener("wheel", scrollScreen),2800);

μ•„... μ°Έ ν•  말이 λ§Žμ€ μ½”λ“œλ‹€. ν•˜λ‚˜μ”© μ‚΄νŽ΄λ³΄μž.

  • scrollScreen μ΄λΌλŠ” ν•¨μˆ˜λ₯Ό ν•¨μˆ˜μ„ μ–Έλ¬Έ 으둜 μ„ μ–Έν–ˆλŠ”λ°, ν•¨μˆ˜λ„ ν˜Έμ΄μŠ€νŒ…μ΄ 되기 λ•Œλ¬Έμ— ν•¨μˆ˜ν‘œν˜„μ‹ 을 μ‚¬μš©ν•˜λŠ” 것이 μ•ˆμ „ν•˜λ‹€.

  • if, else if λ¬Έ μ•ˆμ— νŽ˜μ΄μ§€λ₯Ό λ°”κΏ”μ£ΌλŠ” λΉ„μ¦ˆλ‹ˆμŠ€ 둜직 κ³Ό 바뀐 νŽ˜μ΄μ§€λ₯Ό λ“œλž˜κ·Έν•΄μ£ΌλŠ” UI 둜직이 ν•¨κ»˜ λ“€μ–΄κ°€μžˆλ‹€. λΆ„λ¦¬ν•΄μ€˜μ•Όν•œλ‹€.

  • μœ„μ˜ 원칙이 μœ„λ°°λ˜μ—ˆμœΌλ‹ˆ, ν•˜λ‚˜μ˜ κΈ°λŠ₯만 ν•˜λŠ” μž‘μ€ ν•¨μˆ˜ 도 μ•„λ‹ˆλ‹€.

  • if, else if 쑰건문에 의미λ₯Ό μ•Œ 수 μ—†λŠ” 0, 1 μ΄λΌλŠ” λ§€μ§λ„˜λ²„λ“€μ΄ μ‚¬μš©λ˜μ—ˆλ‹€.

  • window.onload 뢀뢄은 setTimeout을 μ‚¬μš©ν•œ 뢀뢄듀이 보인닀. μ΄λŠ” λͺ¨λ‘ μ• λ‹ˆλ©”μ΄μ…˜ μ’…λ£Œμ‹œκ°„μ— λ§žμΆ”μ–΄ λ‹€μŒ μ• λ‹ˆλ©”μ΄μ…˜μ„ μ‹€ν–‰ν•˜κΈ°μœ„ν•¨μΈλ°...
    λͺ¨λ‘ async, await 으둜 바꿔쀄 수 μžˆμ„ 것 κ°™λ‹€.

  • ifλ¬Έκ³Ό else ifλ¬Έ 속에 μžˆλŠ” window.scrollTo 뢀뢄은 각각 ν•œ λ²ˆμ”© μ“Έ ν•„μš” 없이 ν•¨μˆ˜ λ§ˆμ§€λ§‰μ— ν•œ 번만 써도 λœλ‹€. ν•œ λ§ˆλ””λ‘œ μ€‘λ³΅λœ μ½”λ“œμ΄λ‹€.

사싀 해결법을 λͺ°λΌ ꡉμž₯히 꼼수슀럽게 μ§  뢀뢄이 λ§Žμ•„ μ½”λ“œ 가독성,μœ μ§€λ³΄μˆ˜ μ²΄ν¬λ¦¬μŠ€νŠΈμ— κ±Έλ¦¬λŠ” λΆ€λΆ„λ“€λ§Œ 닀루고, μ½”λ“œ 자체λ₯Ό 잘λͺ» μ§  뢀뢄은 λ¦¬νŒ©ν„°λ§ λΆ€λΆ„μ—μ„œ 닀루도둝 ν•˜κ² λ‹€.


  • header 에 μ»€μ„œλ₯Ό 올리면 header κ°€ 흰 μƒ‰μœΌλ‘œ, header λ‚΄λΆ€ μ•„μ΄μ½˜λ“€μ΄ 검은 μƒ‰μœΌλ‘œ λ³€ν•˜λ„λ‘ κ΅¬ν˜„.

  • 메뉴 μ•„μ΄μ½˜ 을 클릭할 μ‹œ μƒνƒœμ— 맞게 메뉴가 열리고 λ‹«νžˆλ„λ‘ κ΅¬ν˜„.

  • ν™”λ©΄ 쒌츑 μƒλ‹¨μ˜ 메뉴 μ•„μ΄μ½˜ 을 클릭할 μ‹œ 메뉴 μ•„μ΄μ½˜ 의 λͺ¨μ–‘이 μƒνƒœμ— 따라 ☰, X 둜 λ³€ν•˜λŠ” μ• λ‹ˆλ©”μ΄μ…˜μ΄ μž¬μƒλ˜λ„λ‘ κ΅¬ν˜„.

//menuTreeOpen.js

const wholeMenuTree = document.querySelectorAll(".menu-tree-class-for-toggle");

function wholeMenuTreeToggle(){
     for (let i=0; i < wholeMenuTree.length; i++) {
          wholeMenuTree[i].classList.toggle("is-active");
     }
     $("header").classList.toggle("is-active");
}

$(".menu-icon").addEventListener("click", wholeMenuTreeToggle);

μœ„μ˜ μ„Έ 가지 κΈ°λŠ₯은 λͺ¨λ‘ μƒνƒœκ°€ toggle 되면 μƒνƒœμ— 따라 CSS μ• λ‹ˆλ©”μ΄μ…˜μ„ μž‘λ™μ‹œν‚€λ„λ‘ λ˜μ–΄μžˆκΈ°λ•Œλ¬Έμ— JS μ½”λ“œλŠ” 곡톡이닀.

  • wholeMenuTreeToggle μ΄λΌλŠ” ν•¨μˆ˜λ„ μ—­μ‹œ μœ„μ™€ λ™μΌν•œ 이유둜 ν•¨μˆ˜ν‘œν˜„μ‹ 으둜 λ°”κΏ”μ£ΌλŠ”κ²Œ μ’‹λ‹€.

  • λ³€μˆ˜λͺ…, ν•¨μˆ˜λͺ… 이 μ§κ΄€μ μœΌλ‘œ μ–΄λ–€ 역할인지가 λ°”λ‘œ 와닿지가 μ•ŠλŠ”λ‹€. wholeMenuTree λΌλŠ” 말 μžμ²΄κ°€ 무엇을 μ˜λ―Έν•˜λŠ”μ§€ 정말 λͺ¨λ₯΄κ² λ‹€.

  • λ°°μ—΄μ˜ μš”μ†Œλ₯Ό μˆœμ„œλŒ€λ‘œ νƒμƒ‰ν•˜λŠ” for문이라면 μ΄ˆκΈ°μ‹, 쑰건식, 증감식을 λ‹€λ₯Έ λ°©μ‹μœΌλ‘œ ν‘œν˜„ν•  수 μžˆμ–΄ 보인닀.


  • resize 이벀트 λ°œμƒ μ‹œ, ν™”λ©΄μ‚¬μ΄μ¦ˆμ— 맞게 배경사진 μ‚¬μ΄μ¦ˆλ₯Ό λ°”κΏ”μ€Œ

// windowResizeEvent.js

window.onresize = function () {
    section = document.querySelectorAll(".section");
    section.innerHeight = window.innerHeight;
    const pageHeight = window.innerHeight;
    window.scrollTo({top:pageHeight*curPage, left:0, behavior:'auto'});
}

λˆˆμ— μ•„μ£Ό κ±°μŠ¬λ¦¬λŠ” ν•œ 쀄이 μžˆλ‹€...

  • section μ΄λΌλŠ” λ³€μˆ˜κ°€ letμ΄λ‚˜ const ν‚€μ›Œλ“œ 없이 선언이 λ˜μ—ˆλ‹€. 이게 λ˜λ‚˜? μ‹Άμ—ˆμ§€λ§Œ JSμ—μ„œλŠ” ν‚€μ›Œλ“œ 없이 μ„ μ–Έν•˜λ©΄ μ„ μ–Έκ³Ό λ™μ‹œμ— 할당해쀄 κ²½μš°μ—λ§Œ μ „μ—­λ³€μˆ˜λ‘œ 선언이 λœλ‹€κ³  ν•œλ‹€.. (λ¬Όλ‘  ꢌμž₯ν•˜μ§€ μ•ŠλŠ” 방식이닀)
    μžμ„Έν•œ 것은 μ•„λž˜ λ§ν¬μ—μ„œ 확인할 수 μžˆλ‹€.

  • ν•¨μˆ˜μ„ μ–Έμ‹ λŒ€μ‹ μ— ν•¨μˆ˜ν‘œν˜„λ¬Έ 을 μ‚¬μš©ν•  것!

    https://www.tutorialsteacher.com/javascript/javascript-variable


  • μƒˆλ‘œκ³ μΉ¨ 이벀트 λ°œμƒ μ‹œ, μ„Ήμ…˜ νŽ˜μ΄μ§€κ°€ 1번 νŽ˜μ΄μ§€λ‘œ λ“œλž˜κ·Έ λ˜λ„λ‘ κ΅¬ν˜„.

//windowReloadEvent.js

function reloadScrollScreen(){
    const pageHeight = window.innerHeight;
    window.scrollTo({top:pageHeight, left:0, behavior:'smooth'});
    curPage++;
}
window.onload = () => {
    console.log("work");
    setTimeout(() => {window.scrollTo(0, 0)},100);
    window.setTimeout(reloadScrollScreen,2500);
}

μ—„μ²­λ‚˜κ²Œ λ§Žμ€ κΌΌμˆ˜λ“€μ΄ 보인닀..

  • 일단 λ¨Όμ € console.logκ°€ 보인닀.

  • ν•¨μˆ˜μ„ μ–Έμ‹ λŒ€μ‹ μ— ν•¨μˆ˜ν‘œν˜„λ¬Έ 을 μ‚¬μš©ν•  것!

  • window.onload 뢀뢄은 setTimeout을 μ‚¬μš©ν•œ 뢀뢄듀이 보인닀. μ΄λŠ” μœ„μ™€ λ™μΌν•˜κ²Œ λͺ¨λ‘ μ• λ‹ˆλ©”μ΄μ…˜ μ’…λ£Œμ‹œκ°„μ— λ§žμΆ”μ–΄ λ‹€μŒ μ• λ‹ˆλ©”μ΄μ…˜μ„ μ‹€ν–‰ν•˜κΈ°μœ„ν•¨μΈλ°...
    μ—­μ‹œ λͺ¨λ‘ async, await 으둜 바꿔쀄 수 μžˆμ„ 것 κ°™λ‹€.


πŸ“‹ 체크리슀트 확인

  • ❌ README.md νŒŒμΌμ— ν”„λ‘œκ·Έλž¨μ˜ κ΅¬ν˜„ν•  κΈ°λŠ₯듀을 뢄리해 μž‘μ€ λ‹¨μœ„λ‘œ μž‘μ„±ν–ˆλŠ”κ°€?

  • ❌ ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜λ©΄μ„œ μ˜ˆμ™Έ μΌ€μ΄μŠ€ 등을 μΆ”κ°€ν•˜λŠ” λ“±, README.md νŒŒμΌμ„ μ—…λ°μ΄νŠΈν–ˆλŠ”κ°€?

  • ❌ ν”„λ‘œκ·Έλž¨ 전체에 λ™μΌν•œ μ½”λ”© μ»¨λ²€μ…˜μ„ 정해놓고 이λ₯Ό μ‚¬μš©ν–ˆλŠ”κ°€?

  • ❌ 각각의 컀밋이 μ–΄λ–€ 컀밋인지 μ•Œμ•„λ³Ό 수 μžˆλ„λ‘ 컀밋메세지λ₯Ό μž‘μ„±ν–ˆλŠ”κ°€?

  • ❌ λ³€μˆ˜λͺ… 등을 톡일성 있게, μΆ•μ•½ λ˜λŠ” μƒλž΅ν•˜μ§€ μ•Šκ³  μž‘μ„±ν–ˆλŠ”κ°€?

  • ❌ μ–΄λ–€ ν”„λ‘œκ·Έλž¨μΈμ§€ ν”„λ‘œκ·Έλž¨μ„ μ†Œκ°œν•˜λŠ” λ‚΄μš©μ„ README.md νŒŒμΌμ— μž‘μ„±ν–ˆλŠ”κ°€?

  • ❌ 값을 ν•˜λ“œμ½”λ”©ν•˜μ§€ μ•Šκ³  μƒμˆ˜λ₯Ό ν™œμš©ν•˜λ©°, ν•΄λ‹Ή μƒμˆ˜μ— μ˜λ„λ₯Ό λ“œλŸ¬λ‚Ό 수 μžˆλŠ” 이름을 λΆ€μ—¬ν–ˆλŠ”κ°€?

  • ❌ JavaScriptμ—μ„œ μ œκ³΅ν•˜λŠ” apiλ₯Ό ν™œμš©ν•˜μ—¬ ν•¨μˆ˜κ°€ λͺ…λ°±νžˆ 무슨 일을 ν•˜λŠ” 지 μ•Œ 수 μžˆλ„λ‘ μ½”λ“œλ₯Ό μž‘μ„±ν–ˆλŠ”κ°€?

  • ❌ 전역곡간을 μ‚¬μš©ν•˜μ§€ μ•Šμ•˜λŠ”κ°€?

  • βœ”οΈ varλ₯Ό μ‚¬μš©ν•˜μ§€ μ•Šμ•˜λŠ”κ°€?

  • ❌ ν•˜λ‚˜μ˜ ν•¨μˆ˜λ₯Ό ν•˜λ‚˜μ˜ κΈ°λŠ₯λ§Œμ„ ν•˜λŠ” μž‘μ€ λ‹¨μœ„λ‘œ κ΅¬ν˜„ν–ˆλŠ”κ°€?

  • ❌ μ€‘λ³΅λœ μ½”λ“œκ°€ μ—†λŠ”κ°€?

  • ❌ λΆˆν•„μš”ν•œ λ³€μˆ˜, μž„μ‹œλ³€μˆ˜λ“€μ„ μ œκ±°ν•΄μ€¬λŠ”κ°€?

  • ❌ λΉ„μ¦ˆλ‹ˆμŠ€ 둜직과 UIλ‘œμ§μ„ λΆ„λ¦¬ν–ˆλŠ”κ°€?

μ²˜μ°Έν•˜λ‹€... 과거의 λ‚˜..


✍ 글을 마치며

burgerking-order-site ν”„λ‘œμ νŠΈλŠ” λ‚˜μ˜ μ„±μž₯을 κΈ°λ‘ν•˜λŠ” ν”„λ‘œμ νŠΈλ‘œ κΎΈμ€€νžˆ μ‚¬μš©ν•˜λ €κ³  ν•œλ‹€. κ·Έλž˜μ„œ 이 κΈ€μ˜ 이름이 μ½”λ“œ 리뷰 -1- 인 것이고, κΎΈμ€€νžˆ κΈ°λŠ₯을 μΆ”κ°€ν•΄λ‚˜κ°€κ³  λ‚΄κ°€ λ‚˜μ˜ μ„±μž₯을 λŠλ‚„ λ•Œλ§ˆλ‹€ μ½”λ“œ 리뷰와 λ¦¬νŒ©ν„°λ§μ„ ν•˜λŠ” μ‹œκ°„μ„ κ°€μ Έλ³ΌκΉŒ ν•œλ‹€.

μš°ν…Œμ½” μ‹œμž‘ μ „, 총 11일 λ™μ•ˆ κ³„μ†ν–ˆλ˜ ν”„λ‘œμ νŠΌλ° λœ―μ–΄λ³΄κ³  λ‚˜λ‹ˆκΉŒ 정말 λ§Œλ“ κ²Œ μ—†λ‹€. μ œλŒ€λ‘œ 된 체계 없이 μ‹œμž‘ν•΄μ„œ ν—€λ©”λŠ” μ‹œκ°„μ΄ λ„ˆλ¬΄ κΈΈμ—ˆλ˜ 탓인 것 κ°™λ‹€.

λ‹€μŒ λ¦¬νŒ©ν„°λ§ κΈ€μ—μ„œ 더 쒋은 μ½”λ“œλ‘œ λ‹€μ‹œ λ§Œλ‚˜μž!

profile
μš°μ•„ν•œν…Œν¬μ½”μŠ€ 4κΈ° μ›Ή ν”„λ‘ νŠΈμ—”λ“œ

2개의 λŒ“κΈ€

comment-user-thumbnail
2022λ…„ 1μ›” 15일

The greatest glory in living lies not in never falling, but in rising every time we fall.

λ‹΅κΈ€ 달기
comment-user-thumbnail
2022λ…„ 1μ›” 15일

good

λ‹΅κΈ€ 달기