module을 활용하여 각 스크립트를 분리했다.
// api.js
const options = {
method: 'GET',
headers: {
accept: 'application/json',
Authorization: 'myId'
}
};
export async function fetchTopRatedMovies() {
try {
const response = await fetch('https://api.themoviedb.org/3/movie/top_rated?language=en-US&page=1', options);
const data = await response.json();
return data.results;
} catch (error) {
console.error('Error fetching top rated movies:', error);
return [];
}
}
api.js를 만들어서 TMDB의 정보를 가져오는 스크립트를 작성했다. fetchTopRateMovies()를 main에서 사용하기 위해 export를 붙여주었다.
// movieCard.js
export function createMovieCard(movie) {
const { id, title, overview, poster_path, vote_average } = movie;
const movieCard = document.createElement('div');
const moviePoster = document.createElement('img');
const titleElement = document.createElement('h1');
const voteAvgElement = document.createElement('p');
const overviewElement = document.createElement('p');
movieCard.setAttribute('id', id);
// Class name
movieCard.className = 'movie-card';
moviePoster.className = 'movie-poster';
titleElement.className = 'title';
voteAvgElement.className = 'vote-average';
overviewElement.className = 'overview';
// Get movie information
moviePoster.src = `https://image.tmdb.org/t/p/w500${poster_path}`;
titleElement.textContent = title;
voteAvgElement.textContent = `Vote Average: ${parseFloat(vote_average).toFixed(2)}`;
overviewElement.textContent = overview;
movieCard.appendChild(moviePoster);
movieCard.appendChild(titleElement);
movieCard.appendChild(voteAvgElement);
movieCard.appendChild(overviewElement);
return movieCard;
}
moiveCard.js는 영화의 정보를 가져와서 새로운 카드를 만든다. main에서 사용하기 위해 createMovieCard(영화 정보)를 export해준다.
// main.js
import { fetchTopRatedMovies } from './api.js';
import { createMovieCard } from './movieCard.js';
document.addEventListener('DOMContentLoaded', async function() {
const moviesContainer = document.getElementById('movie_container');
try {
const movies = await fetchTopRatedMovies();
renderMovies(movies);
} catch (error) {
console.error('Error loading top rated movies:', error);
}
function renderMovies(movies) {
moviesContainer.innerHTML = '';
movies.forEach(movie => {
const movieCard = createMovieCard(movie);
moviesContainer.appendChild(movieCard);
movieCard.addEventListener('click', () => {
const movieID = movieCard.getAttribute('id');
alert(`영화의 ID는 ${movieID}`);
});
});
}
// 추가적인 기능 구현
});
앞서 만든 2개의 스크립트를 import하여, 필요한 함수를 호출했다.
'[DOM활용] TMDB로 페이지 만들기' 카테고리의 다른 글
페이지네이션 만들기 (0) | 2024.05.09 |
---|---|
쿠키를 만들어 페이지 로드 시간 줄이기 (0) | 2024.05.07 |
LocalStorage활용하여 검색 결과 보존하기 (0) | 2024.05.03 |
상세페이지 구현 (0) | 2024.05.02 |
TMDB에서 영화리스트 가져오기 (0) | 2024.04.29 |