티스토리

운클라우드
Wooncloud Blog
운클라우드
  • 분류 전체보기
    • 이야기
      • 일기
      • 개발일지
      • 제품 리뷰
      • 기타
    • 정보
      • 유용한 사이트
    • 개발 아카이브
      • HTML, CSS
      • Javascript
      • SVELTEKIT
      • Node Js
      • JAVA
      • Spring
      • 코드 저장소
      • 라이브러리
      • 개발 관련 지식
      • AWS, Cloud, Server
      • DATABASE
    • 스터디
      • 정보처리기사
      • 친절한 SQL 튜닝 스터디

블로그 메뉴

  • 홈
  • 방명록
  • 운구름 웹
  • 벨로그
  • 깃허브
  • 리틀리
  • 도시부엉

인기 글

최근 글

태그

  • 라이브러리
  • 회고
  • 자바
  • SQL
  • 스터디
  • 웹디자인
  • 정보처리기사
  • javascript
  • 튜닝
  • CSS
  • API
  • 자바스크립트
  • TurboFan
  • 코드저장소
  • Java
  • 리뷰
  • 이클립스
  • 폰트
  • html
  • 마크다운
전체 방문자
오늘
어제
hELLO · Designed By 정상우.
운클라우드

Wooncloud Blog

[Sveltekit] 버튼 hover시 +page.server.js 실행을 막는 법
개발 아카이브/SVELTEKIT

[Sveltekit] 버튼 hover시 +page.server.js 실행을 막는 법

2024. 6. 17. 02:24
반응형

 

Sveltekit에서 버튼이나 a tag에 라우터 url이 걸려 있으면,

그 버튼을 hover만 해도, 라우터에 걸린 +page.server.js 가 실행됩니다.

위의 코드를 보면 href에 user 라우터가 걸려있습니다.

user 라우터에는 +page.server.js 가 있습니다.

위에서 말한대로 버튼을 hover만 해도, +page.server.js 가 실행됩니다.

 

SvelteKit에서 버튼을 호버했을 때 그 버튼을 클릭하면,

가는 페이지의 +page.server.js의 load 함수가 실행되는 것은

의도된 동작입니다.

 

 

왜 그럴까요?

SvelteKit이 페이지 전환을 미리 준비하기 위해 preload를 수행합니다.

preload은 사용자가 링크나 버튼을 호버했을 때, 해당 링크가 가리키는 페이지를 미리 로드하여 사용자 경험을 향상시키는 기술입니다. SvelteKit은 기본적으로 이 기능을 활성화하여 페이지 전환을 더 빠르게 만듭니다.

 

https://kit.svelte.dev/docs/link-options#data-sveltekit-reload

 

Link options • Docs • SvelteKit

Link options Edit this page on GitHub On this page On this page In SvelteKit, elements (rather than framework-specific components) are used to navigate between the routes of your app. If the user clicks on a link whose href is 'owned' by the app (as oppose

kit.svelte.dev

 

그러나 만약 +page.server.js에서 api서버로 데이터를 호출하는 로직이 있다면, api서버는 잦은 호출로 부하를 받을 수 있습니다. 왜냐하면 마우스가 버튼을 호버할때마다, 위처럼 preload가 되기 때문이죠.

 

 

버튼을 hover하면 +page.server.js 실행을 막는 법

src 폴더 아래 app.html 가 있습니다. 이 안에 body에 data-sveltekit-preload-data 라는 속성이 있습니다.

아마 data-sveltekit-preload-data가 "hover"로 되어 있을 것입니다.

위의 사진처럼, data-sveltekit-preload-data="hover"를 제거해주세요.

그러면 hover 할때 +page.server.js가 실행되지 않습니다.

 

 

대신 페이지 전환이 느려집니다.

data-sveltekit-preload-data="hover" 로 되어 있다면, 버튼을 hover 할 때마다 데이터를 미리 불러옵니다.

hover를 통해 미리 데이터를 불러온 후, 화면전환시 미리 준비한 데이터를 표시하기 때문에 즉각적인 페이지 전환이 됩니다.

 

그 예시를 아래 튜토리얼에서 확인할 수 있습니다.

https://learn.svelte.dev/tutorial/preload

 

Welcome to Svelte • Svelte Tutorial

Welcome to the Svelte tutorial! This will teach you everything you need to know to easily build web applications of all sizes, with high performance and a small footprint. You can also consult the API docs and the examples, or — if you're impatient to st

learn.svelte.dev

 

 

반응형
저작자표시 비영리 변경금지 (새창열림)

'개발 아카이브 > SVELTEKIT' 카테고리의 다른 글

Svelte와 vite로 CSR 개발 환경 세팅  (1) 2023.12.05
    '개발 아카이브/SVELTEKIT' 카테고리의 다른 글
    • Svelte와 vite로 CSR 개발 환경 세팅

    티스토리툴바