From 6d93bebd8b7fbfe77ef552bef11b6814bd25cb0a Mon Sep 17 00:00:00 2001 From: clkim Date: Thu, 18 Dec 2025 14:32:40 +0900 Subject: [PATCH] =?UTF-8?q?fix.=20Splide=20=EC=B5=9C=EC=A0=81=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- layers/components/atoms/Img.vue | 10 ++++++---- layers/components/widgets/slide/Fade.vue | 1 + layers/components/widgets/slide/Thumbnail.vue | 2 ++ layers/middleware/pageData.global.ts | 19 ++++++++----------- nuxt.config.ts | 1 - 5 files changed, 17 insertions(+), 16 deletions(-) diff --git a/layers/components/atoms/Img.vue b/layers/components/atoms/Img.vue index 2311491..84cd478 100644 --- a/layers/components/atoms/Img.vue +++ b/layers/components/atoms/Img.vue @@ -3,11 +3,13 @@ interface Props { src: string | { pc?: string; mo?: string } alt?: string imageType?: 'common' | 'game' + priority?: 'high' | 'low' | 'auto' } const props = withDefaults(defineProps(), { alt: 'image', imageType: 'game', + priority: 'auto', }) const isResponsiveMode = computed(() => { @@ -45,9 +47,9 @@ const imagePaths = computed(() => { :src="imagePaths.pc" :alt="alt" v-bind="$attrs" - loading="lazy" + :loading="priority === 'high' ? 'eager' : 'lazy'" decoding="async" - fetchpriority="auto" + :fetchpriority="priority" /> @@ -56,8 +58,8 @@ const imagePaths = computed(() => { :src="imagePaths.mo" :alt="alt" v-bind="$attrs" - loading="lazy" + :loading="priority === 'high' ? 'eager' : 'lazy'" decoding="async" - fetchpriority="auto" + :fetchpriority="priority" /> diff --git a/layers/components/widgets/slide/Fade.vue b/layers/components/widgets/slide/Fade.vue index 63a55bb..0320e39 100644 --- a/layers/components/widgets/slide/Fade.vue +++ b/layers/components/widgets/slide/Fade.vue @@ -45,6 +45,7 @@ const options = computed((): ResponsiveOptions => { arrows: props.arrows, pagination: props.pagination, flickPower: 300, + lazyLoad: 'nearby', classes: { pagination: 'splide-pagination-bullets type-full', page: 'splide-pagination-bullet', diff --git a/layers/components/widgets/slide/Thumbnail.vue b/layers/components/widgets/slide/Thumbnail.vue index 15eec7e..c7ae4ce 100644 --- a/layers/components/widgets/slide/Thumbnail.vue +++ b/layers/components/widgets/slide/Thumbnail.vue @@ -51,6 +51,8 @@ const mainOptions = computed(() => ({ arrows: false, pagination: false, drag: props.drag, + updateOnMove: true, + lazyLoad: 'nearby', // 성능 최적화: 이미지 지연 로딩 })) const thumbOptions = computed(() => ({ diff --git a/layers/middleware/pageData.global.ts b/layers/middleware/pageData.global.ts index f84356e..045b8c5 100644 --- a/layers/middleware/pageData.global.ts +++ b/layers/middleware/pageData.global.ts @@ -75,12 +75,11 @@ export default defineNuxtRouteMiddleware(async (to, _from) => { query: queryParams, })) as PageDataResponse | null - console.log('🚀 ~ pageData.global response:', pageDataResponse?.value) + console.log('🚀 ~ pageData.global response:', pageDataResponse) } catch (error) { pageDataStore.clearPageData() console.error(error) - - showError( + return showError( createError({ statusCode: error.statusCode, statusMessage: error.message, @@ -92,8 +91,8 @@ export default defineNuxtRouteMiddleware(async (to, _from) => { if (pageDataResponse?.code === 0 && 'value' in pageDataResponse) { pageDataStore.setPageData(pageDataResponse.value) - return } else { + pageDataStore.clearPageData() // 90001 (API Respond 4xx status): API 응답 4xx 에러 // 91001 (Invalid GameCode): 게임 코드 없음 // 91003 (Invalid PageUrl): 페이지 주소 없음 @@ -102,20 +101,20 @@ export default defineNuxtRouteMiddleware(async (to, _from) => { pageDataResponse?.code === 91001 || pageDataResponse?.code === 91003 ) { - showError( + return showError( createError({ statusCode: 404, statusMessage: pageDataResponse?.message, fatal: false, // 즉시 에러 페이지로 - data: { reason: pageDataResponse?.message }, + data: { + reason: pageDataResponse?.message, + }, }) ) - return } // 91002 (Invalid LangCode): 미지원 언어로 접근 if (pageDataResponse?.code === 91002) { - navigateTo(`/${langCode}/home`) - return + return navigateTo(`/${langCode}/home`) } // [TODO] @@ -124,6 +123,4 @@ export default defineNuxtRouteMiddleware(async (to, _from) => { // return navigateTo(`/${langCode}/home`) // } } - - pageDataStore.clearPageData() }) diff --git a/nuxt.config.ts b/nuxt.config.ts index 75ced84..67fe6ca 100644 --- a/nuxt.config.ts +++ b/nuxt.config.ts @@ -59,7 +59,6 @@ export default defineNuxtConfig({ { type: 'text/javascript', src: process.env.STOVE_LAUNCHER_SCRIPT, - async: true, defer: true, }, ],