[javascript] Nuxt.js에서의 사진/비디오 갤러리 구현 방법은?
1. 이미지 및 비디오 컴포넌트
먼저, 이미지 및 비디오를 표시하기 위한 컴포넌트를 작성합니다. 예를 들어, “GalleryImage.vue” 및 “GalleryVideo.vue”와 같은 컴포넌트를 생성하여 각각 이미지와 비디오를 렌더링하는 방법을 정의합니다.
<template>
<div>
<img v-if="isImage" :src="mediaUrl" alt="Image">
<video v-else :src="mediaUrl" controls>
Your browser does not support the video tag.
</video>
</div>
</template>
<script>
export default {
props: {
mediaUrl: String,
isImage: Boolean
}
}
</script>
2. 갤러리 컴포넌트
다음으로, 이미지 및 비디오 컴포넌트를 사용하여 갤러리 컴포넌트를 작성합니다. 갤러리에서 표시할 미디어 목록을 가져오고, 각 미디어에 대한 렌더링 방법을 정의합니다.
<template>
<div>
<gallery-image v-for="(image, index) in images" :key="index" :mediaUrl="image.url" :isImage="true" />
<gallery-video v-for="(video, index) in videos" :key="index" :mediaUrl="video.url" :isImage="false" />
</div>
</template>
...
3. 데이터 처리
데이터는 API 호출 또는 로컬 스토리지에서 가져와서 갤러리 컴포넌트에 전달할 수 있습니다. Nuxt.js의 asyncData 또는 fetch 메서드를 사용하여 데이터를 미리 로드하고 컴포넌트에 전달할 수 있습니다.
export default {
async asyncData({ params }) {
const images = await fetchImagesFromAPI();
const videos = await fetchVideosFromAPI();
return { images, videos };
}
}
이제, Nuxt.js를 사용하여 사진/비디오 갤러리를 구현하는 방법에 대해 알아보았습니다. 페이지를 만들고 갤러리 컴포넌트를 추가하여 원하는 미디어를 표시할 수 있습니다.
이 글이 도움이 되었기를 바랍니다. 더 궁금한 점이 있다면 언제든지 물어보세요!