Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Kdt5-방미선-영화검색 #61

Open
wants to merge 5 commits into
base: main
Choose a base branch
from
Open

Kdt5-방미선-영화검색 #61

wants to merge 5 commits into from

Conversation

0299bang
Copy link

@0299bang 0299bang commented May 10, 2023

🎬 영화 검색

배포링크: https://movie-api-black.vercel.app/

❗ 필수

  • 영화 제목으로 검색이 가능해야 합니다!
  • 검색된 결과의 영화 목록이 출력돼야 합니다!
  • 단일 영화의 상세정보(제목, 개봉연도, 평점, 장르, 감독, 배우, 줄거리, 포스터 등)를 볼 수 있어야 합니다!
  • 실제 서비스로 배포하고 접근 가능한 링크를 추가해야 합니다.

❔ 선택

  • 한 번의 검색으로 영화 목록이 20개 이상 검색되도록 만들어보세요.
  • 영화 개봉연도로 검색할 수 있도록 만들어보세요.
  • 영화 목록을 검색하는 동안 로딩 애니메이션이 보이도록 만들어보세요.
  • 무한 스크롤 기능을 추가해서 추가 영화 목록을 볼 수 있도록 만들어보세요.
  • 영화 포스터가 없을 경우 대체 이미지를 출력하도록 만들어보세요.
  • 영화 상세정보가 출력되기 전에 로딩 애니메이션이 보이도록 만들어보세요.
  • 영화 상세정보 포스터를 고해상도로 출력해보세요. (실시간 이미지 리사이징)
  • 차별화가 가능하도록 프로젝트를 최대한 예쁘게 만들어보세요.
  • 영화와 관련된 기타 기능도 고려해보세요.

npm 프로젝트 생성

  • npm init -y

devDependencies

  • npm i -D parcel
  • npm i -D vercel
  • npm i -D dotenv

dependencies

  • npm i node-fetch@2

Copy link

@sangheon-kim sangheon-kim left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

부족한부분 코멘트 남겼습니다.

this.state = state // 컴포넌트 안에서 사용할 데이터
this.render()
}
render() { // 컴포넌트를 렌더링하는 함수

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

component 를 렌더링 하는 함수를 여기서 선언했는데 왜 매번 컴포넌트에서 RENDER함수를 overwrite하신걸까요?

acc[key] = value
return acc
}, {})
history.replaceState(query, '') // (상태, 제목)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

replaceState를 하시면 historyStack이 안쌓일텐데 혹시 이렇게 구현하신 이유가 있나요?

theFooter
)
}
}

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

apped가 아닌 Layout을 만들어서 선언했어도 될 것 같아요

</h1>
`
}
}

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Headline이라는 추상화된 컴포넌트명을 쓰고 굳이 props를 활용하지 않은 이유가 뭔가요?

this.el.setAttribute('href', `#/movie?id=${movie.imdbID}`)
this.el.classList.add('movie')
this.el.style.backgroundImage = `url(${movie.Poster})`
this.el.innerHTML = /* html */ `

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

뭔가 되게 구조가 복잡한 것 같아요

this.el을 직접건드리신 이유가 뭔지 모르겠어요.

import { Component } from '../core/CoreMovie'
import movieStore, { getMovieDetails} from '../store/movie'

export default class Movie extends Component {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

어디는 append로 쓰고 어디는 innerHTML로 쓰고 너무 뒤죽박죽이에요

github: 'https://github.com/0299bang',
repository: 'https://github.com/0299bang/Search-Movies-API'
})

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Store가 CoreMovie안에 들어가는것보다 store/index.js로 만드는게 좋아보여요

}
}
// 영화의 상세정보를 가져오는 함수 만들기
export const getMovieDetails = async id => {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ajax는 따로 모아서 관리하시는걸 추천드립니다.

store.state.message = '' // 빈 문자로 초기화
}
try {
const res = await fetch('/api/movie', {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이것 역시 따로 관리하는게 좋아보여요

response
.status(200)
.json(json)
}

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

어디는 AP에 만들어두고 어디는 함수 안에서 fetch 호출하는 구조가 통일성이 없어요

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants