πŸ” BurgerKing-Order-Site μ½”λ“œ λ¦¬νŒ©ν„°λ§ 리뷰-1-

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

πŸ” BurgerKing-Order-Site

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

πŸ’» λ¦¬νŒ©ν„°λ§ 리뷰

βœ’οΈ λ¦¬νŒ©ν„°λ§ 리뷰에 μ•žμ„œ

μœ„ 글은 이전 글을 ν•œ 화면에 μΌœλ†“κ³  λΉ„κ΅ν•˜λ©΄μ„œ 보면 쒋을 것 κ°™λ‹€.

λ¦¬νŒ©ν„°λ§ 리뷰λ₯Ό μ§„ν–‰ν•˜κΈ°μ— μ•žμ„œ μ–΄λ–€ λ°©μ‹μœΌλ‘œ 진행할지 μ„€λͺ…ν•˜λ„λ‘ ν•˜κ² λ‹€. λ¨Όμ € λ¦¬νŒ©ν„°λ§ 섀계 λ‹¨κ³„μ—μ„œ λ¦¬νŒ©ν„°λ§μ„ μ–΄λ–€ λ°©ν–₯으둜 μ§„ν–‰ν–ˆλŠ”μ§€ μ‚΄νŽ΄λ³΄λ„λ‘ ν•˜λ©°, μ½”λ“œ λ¦¬νŒ©ν„°λ§μ„ 전체적인 λ³€ν™” μ—μ„œ λ¨Όμ € μ‚΄νŽ΄ 보고 ν”„λ‘œμ νŠΈ μ†Œκ°œ μ—μ„œ μž‘μ„±ν•œ κ΅¬ν˜„ κΈ°λŠ₯ λͺ©λ‘ λ‹¨μœ„λ‘œ κΈ°λŠ₯별 μ½”λ“œ λ¦¬νŒ©ν„°λ§ 리뷰λ₯Ό μ‚΄νŽ΄λ³΄λ„λ‘ν•˜κ² λ‹€.

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


πŸ“ƒ λ¦¬νŒ©ν„°λ§ 섀계

λ¨Όμ € μ•„λž˜μ˜ 사진을 보고 μ„€λͺ…ν•˜λ„λ‘ ν•˜κ² λ‹€.

λ¨Όμ € λ¦¬νŒ©ν„°λ§ μš”κ΅¬μ‚¬ν•­μ„ μž‘μ„±ν–ˆλ‹€. 이건 μ½”λ“œ 리뷰 체크리슀트의 μš”κ΅¬μ‚¬ν•­μ— 따라 μž‘μ„±ν•˜κ³  λͺ‡κ°€μ§€λ₯Ό 좔가해쀬닀. κ·ΈλŸ¬κ³ λ‚˜μ„œλŠ” κ΅¬ν˜„ κΈ°λŠ₯ μ½”λ“œ λ³„λ‘œ λ¦¬νŒ©ν„°λ§μ„ ν•΄μ€˜μ•Όκ² λ‹€κ³  μƒκ°ν•˜κ³  κ΅¬ν˜„ κΈ°λŠ₯ μ½”λ“œ λ¦¬νŒ©ν„°λ§μ„ μž‘μ„±ν•΄μ€¬λ‹€. λ§ˆμ§€λ§‰μœΌλ‘œ λ¦¬νŒ©ν„°λ§μ΄ λλ‚˜λ©΄ μ—λŸ¬λ‚˜ 였λ₯˜κ°€ λ°œμƒν•˜λŠ” 뢀뢄을 ν•΄κ²°ν•΄μ£ΌκΈ°μœ„ν•΄ κ΅¬ν˜„ν•  κΈ°λŠ₯ λͺ©λ‘μ„ μž‘μ„±ν•΄μ£Όμ—ˆλ‹€.

μ„€κ³„ν•œ λ‚΄μš©μ„ λ¦¬ν¬μ§€ν† λ¦¬μ˜ README.md νŒŒμΌμ— λ§ˆν¬λ‹€μš΄μœΌλ‘œ μž‘μ„±ν•΄μ£Όμ—ˆλ‹€.


πŸ•΅οΈ μ½”λ“œ λ¦¬νŒ©ν„°λ§

πŸ—ƒοΈ 전체적인 λ³€ν™”

μ»€λ°‹λ©”μ‹œμ§€

이전 글을 보고 μ™”λ‹€λ©΄ μ•Œκ² μ§€λ§Œ, λ¦¬νŒ©ν„°λ§μ„ μ§„ν–‰ν•˜λ©΄μ„œλŠ” μ»€λ°‹λ©”μ‹œμ§€λ₯Ό AngularJS Commit Message Conventions 에 맞게 μž‘μ„±ν•΄μ£Όμ—ˆλ‹€. 이제 이전 κΈ€μ—μ„œ λ³Έ λ”μ°ν•œ μ»€λ°‹λ©”μ‹œμ§€λŠ” μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ”λ‹€.

디렉토리

JS νŒŒμΌμ„ 일단은 폴더 λ³„λ‘œ λΆ„λ₯˜ν•΄μ£Όμ—ˆλ‹€. 이전 κΈ€μ—μ„œ λ°ν˜”λ“―μ΄ μ•„μ§κΉŒμ§„ 디렉토리λ₯Ό μ–΄λ–»κ²Œ λ‚˜λˆ μ•Όν•˜λŠ”μ§€ λͺ…ν™•νžˆ λͺ¨λ₯Έλ‹€. (μš°ν…Œμ½”μ—μ„œ λ°°μš°μ§€ μ•Šμ„κΉŒ μ‹Άλ‹€)
κ·Έλž˜μ„œ λ‚΄κ°€ λ³΄κΈ°μ—λŠ” 각자 역할에 따라 λΆ„λ₯˜κ°€ 잘 λ˜μ–΄μžˆλŠ” 것 κ°™λ‹€.

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

ESlint와 Prettierλ₯Ό ν™œμš©ν•˜μ—¬ Airbnb JavaScript μŠ€νƒ€μΌ κ°€μ΄λ“œ ν•œκ΅­μ–΄ λ²ˆμ—­λ³Έμ— 맞게 μ½”λ“œλ₯Ό μž‘μ„±ν•΄μ£Όμ—ˆλ‹€.

λͺ¨λ“ˆν™”

이전 κΈ€μ—μ„œ λ°νžˆμ§€λŠ” μ•Šμ•˜λ˜ 것 κ°™μ§€λ§Œ, λ¦¬νŒ©ν† λ§ μ „μ—λŠ” import문을 ν•œ λ²ˆλ„ ν™œμš©ν•˜μ§€ μ•Šμ•˜κ³ , λͺ¨λ“ˆν™” 없이 λͺ¨λ“  javascript νŒŒμΌμ„ HTML νŒŒμΌλ§ˆλ‹€ script νƒœκ·Έλ₯Ό μ΄μš©ν•΄μ„œ μž‘μ„±ν•΄μ£Όμ—ˆλ‹€.

λŒ€μΆ© 이런 μ‹μœΌλ‘œ λͺ¨λ“  HTMLνŒŒμΌμ— scriptνƒœκ·Έλ“€μ„ λ•Œλ €λ°•μ•˜μ—ˆλ‹€..

λ¦¬νŒ©ν„°λ§ ν›„μ—λŠ”λŠ” index.js νŒŒμΌλ§Œμ„ script νƒœκ·Έλ₯Ό ν™œμš©ν•΄ 뢈러였고 index.js 내뢀에 μžˆλŠ” App λ‚΄λΆ€μ—μ„œ λͺ¨λ“  ν™œλ™μ„ μ²˜λ¦¬ν•˜λ„λ‘ ν•΄μ£Όμ—ˆλ‹€. λ‚˜λŠ” λ‹€λ₯Έ 것보닀 μ΄λ ‡κ²Œ λͺ¨λ“ˆν™”λ₯Ό ν•΄μ€€ 뢀뢄이 λ¦¬νŒ©ν„°λ§μ—μ„œ κ°€μž₯ 큰 λΆ€λΆ„μ΄μ—ˆλ‹€κ³  μƒκ°ν•œλ‹€.

이제 전체적인 뢀뢄을 λͺ¨λ‘ μ‚΄νŽ΄λ΄€μœΌλ‹ˆ μ €λ²ˆ κΈ€μ—μ„œ 봀던 μˆœμ„œλŒ€λ‘œ κΈ°λŠ₯별 μ½”λ“œ λ¦¬νŒ©ν„°λ§ 리뷰λ₯Ό 진행 해보도둝 ν•˜μž.


πŸ“ κΈ°λŠ₯별 μ½”λ“œ λ¦¬νŒ©ν„°λ§ 리뷰

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

//scrollEvent.js

import { X, DELTA_Y_BOUNDARY, FIRST_PAGE } from '../constants/constant.js';
import { $ } from '../utils/dom.js';

export const handleScroll = (e, currentPage) => {
  if ($('.home-header') === null) {
    return;
  }
  const lastPage = document.querySelectorAll('.section').length;

  if (e.deltaY > DELTA_Y_BOUNDARY && currentPage < lastPage) {
    currentPage++;
  } else if (e.deltaY < DELTA_Y_BOUNDARY && currentPage > FIRST_PAGE) {
    currentPage--;
  }

  scrollScreen(currentPage);
  return currentPage;
};

export const scrollScreen = currentPage => {
  if ($('.menu-tree').classList.contains('is-active')) {
    return;
  }
  const pageHeight = window.innerHeight;
  window.scrollTo({
    top: currentPage * pageHeight,
    left: X,
    behavior: 'smooth',
  });
};
  • 제일 λ¨Όμ € λ³΄μ΄λŠ” 점은 μ „μ—­λ³€μˆ˜μ™€ λ§€μ§λ„˜λ²„ κ°€ μ‚¬λΌμ‘Œλ‹€.

  • 그리고 이벀트λ₯Ό μ²˜λ¦¬ν•˜λŠ” λΉ„μ¦ˆλ‹ˆμŠ€ 둜직인 handleScroll κ³Ό 화면을 슀크둀 ν•΄μ£ΌλŠ” UI둜직인 scrollScreen 이 λ‚˜λ‰˜μ–΄μ‘Œλ‹€.

  • 이제 ν•¨μˆ˜λŠ” ν•˜λ‚˜μ˜ κΈ°λŠ₯λ§Œμ„ ν•˜λŠ” μž‘μ€ ν•¨μˆ˜ 이며, μš°ν…Œμ½” ν”„λ¦¬μ½”μŠ€ μš”κ΅¬μ‚¬ν•­μ΄μ—ˆλ˜ 15쀄 이내이기도 ν•˜λ‹€.

  • 그리고 였λ₯˜κ°€ λ°œμƒν•  수 μžˆλŠ” 좔가적인 상황을 좔가적인 if문으둜 κ±Έμ–΄λ‚΄μ£ΌλŠ” 뢀뢄이 μΆ”κ°€λ˜μ–΄μ‘Œλ‹€.

  • if, else if 문에 μ‘΄μž¬ν–ˆλ˜ μ€‘λ³΅λœ μ½”λ“œλ„ 이전 κΈ€μ˜ μ½”λ“œμ™€ 비ꡐ해보면 μ œκ±°λ˜μ—ˆμŒμ„ μ•Œ 수 μžˆλ‹€.

  • ν•¨μˆ˜μ„ μ–Έλ¬ΈμœΌλ‘œ μ„ μ–Έλœ ν•¨μˆ˜λ“€μ΄ λͺ¨λ‘ ν•¨μˆ˜ν‘œν˜„μ‹μœΌλ‘œ λ°”λ€Œμ—ˆλ‹€.

μ•„μ§κΉŒμ§€ λͺ» 고친 였λ₯˜κ°€ μžˆλ‹€..
μ•„μ§κΉŒμ§€ λͺ» 고친 뢀뢄은 μœ„μ— μžˆλŠ” κ΅¬ν˜„ν•  κΈ°λŠ₯ λͺ©λ‘ μ—μ„œ μ‚΄νŽ΄λ³Ό 수 μžˆλ‹€.


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

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

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

//clickEvent.js

import { $ } from '../utils/dom.js';

export const handleClick = e => {
  switch (e.target.id) {
    case 'menu-icon':
      menuTreeToggle();
  }
};

const menuTreeToggle = () => {
  const menuTree = document.querySelectorAll('.menu-tree-class-for-toggle');
  $('header').classList.toggle('is-active');
  for (let i = 0; i < menuTree.length; i++) {
    menuTree[i].classList.toggle('is-active');
  }
};
  • wholeMenuTreeToggle을 MenuTreeToggle둜 λ°”κΏ”μ£Όμ—ˆλ‹€.

  • μ•„κΉŒμ™€ 같은 λ°©μ‹μœΌλ‘œ λΉ„μ¦ˆλ‹ˆμŠ€ 둜직 κ³Ό UI 둜직 을 κ΅¬λΆ„ν•΄μ£Όμ—ˆλ‹€.

κΉœλΉ‘ν•˜κ³  for문의 μ΄ˆκΈ°μ‹,쑰건식,증감식을 고쳐주지 μ•Šμ•˜λ‹€...


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

없어도 λ‚΄ μ˜λ„λŒ€λ‘œ 잘 μž‘λ™ν•΄μ„œ μ•„μ˜ˆ μ œκ±°ν•΄μ£Όμ—ˆλ‹€.


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

//loadEvent.js

import { $ } from '../utils/dom.js';
import { X, Y, DELAY_MILLISECOND } from '../constants/constant.js';

export const reloadScrollScreen = () => {
  const pageHeight = window.innerHeight;
  const stackBurgetAnimation = $('.stack-burger-animation4');

  setTimeout(() => {
    window.scrollTo(X, Y);
  }, DELAY_MILLISECOND);
  if (stackBurgetAnimation === null) {
    return;
  }
  stackBurgetAnimation.addEventListener('animationend', () => {
    window.scrollTo({ top: pageHeight, left: X, behavior: 'smooth' });
  });
};
  • console.logλ₯Ό μ œκ±°ν•΄μ£Όμ—ˆλ‹€.

  • λͺ¨λ“  λ§€μ§λ„˜λ²„ κ°€ 제거 되고, μƒμˆ˜λ‘œ λ°”κΏ”μ£Όμ—ˆλ‹€.

  • ν•¨μˆ˜μ„ μ–Έλ¬Έ λŒ€μ‹  ν•¨μˆ˜ν‘œν˜„μ‹ 으둜 λ°”κΏ”μ£Όμ—ˆλ‹€.

  • 이 κΈ°λŠ₯μ—μ„œ 핡심적인 λ¦¬νŒ©ν„°λ§μ€ 버거킹 μ• λ‹ˆλ©”μ΄μ…˜μ΄ λλ‚˜κ³  화면을 슀크둀 ν•΄μ£ΌλŠ” κ²ƒμ΄μ—ˆλŠ”λ°, μ›λž˜λŠ” μ• λ‹ˆλ©”μ΄μ…˜ μ‹œκ°„μ„ κ³„μ‚°ν•΄μ„œ setTimeOut을 μ‚¬μš©ν•΄ 화면을 κΈ°λ‹€λ Έλ‹€κ°€ 슀크둀 ν–ˆμœΌλ‚˜, 이제 animationend λΌλŠ” 이벀트λ₯Ό 톡해 μ• λ‹ˆλ©”μ΄μ…˜μ΄ λλ‚˜λ©΄ 화면을 슀크둀 ν•΄μ€€λ‹€.
    훨씬 상식적이닀.


πŸ“‹ 체크리슀트 확인

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

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

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

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

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

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

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

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

  • βœ”οΈ 전역곡간을 μ‚¬μš©ν•˜μ§€ μ•Šμ•˜λŠ”κ°€?

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

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

  • βœ”οΈ μ€‘λ³΅λœ μ½”λ“œκ°€ μ—†λŠ”κ°€?

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

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

아직 μ•„μ‰¬μš΄ 점이 μ‘΄μž¬ν•˜λŠ” 것은 μ‚¬μ‹€μ΄μ§€λ§Œ 이전과 λΉ„κ΅ν•˜λ©΄ 훨씬 μ½”λ“œκ°€ 보기에도 μ’‹μ•„μ‘Œκ³ , μœ μ§€λ³΄μˆ˜μ—λ„ μ’‹μ•„μ‘Œλ‹€! (사싀 μ•Œμ•„μ±ˆ μ‚¬λžŒμ€ μ•Œμ•„μ±˜κ² μ§€λ§Œ μœ„μ— κ°•μŠ€ν¬κ°€ μžˆμ—ˆλ‹€)


✍ 글을 마치며

1μ°¨ λ¦¬λ·°λŠ” 이제 끝이 났닀. λ‹€μŒμ— λ‚΄κ°€ μ„±μž₯함을 느끼면 μƒˆλ‘œμš΄ ν”„λ‘œμ νŠΈλ₯Ό κ°€μ Έμ˜€λ˜, 이 ν”„λ‘œμ νŠΈλ₯Ό 또 λ‹€μ‹œ λ°œμ „μ‹œν‚€λ˜ 2μ°¨ 리뷰둜 λ‹€μ‹œ μ°Ύμ•„μ˜€λ„λ‘ ν•˜κ² λ‹€.

κΈ΄ 글을 읽어쀀 λͺ¨λ‘μ—κ²Œ κ°μ‚¬ν•˜λ‹€λŠ” 말은 μ „ν•˜κ³  글을 λ§ˆμΉ˜λ„λ‘ ν•˜κ² λ‹€!

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

2개의 λŒ“κΈ€

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

μƒˆλ‘œμš΄ ν”„λ‘œμ νŠΈλ„ λ³΄κ³ μ‹Άμ–΄μš”~^^

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

good

λ‹΅κΈ€ 달기