Sveltekit Braking 변경 사항: 라우팅, 로드 기능 및 섀도우 엔드포인트의 새로운 방식
이 모든 것은 새 svelte 버전으로의 마이그레이션으로 시작됩니다. 그들이 설명한 곳
how to migrate
을 확인할 수 있습니다Github discussion.변경 사항 목록
노선
이제 sveltekit은 이전에 파일 시스템 기반 라우팅이었던 디렉터리 기반 라우팅을 도입했습니다. 이제 모든 경로에 세 개의 서로 다른 파일을 포함하는 디렉토리가 있습니다. 해당 파일은 +page.svelte, +page.js, +page.server.js입니다. 모든 파일을 자세히 살펴보겠습니다. 여기에서는 내 경로가
blog
인 예를 들어 보겠습니다.<!--blog/+page.svelte-->
This page going to contain all the html css and js
frontend handling from now on there will be no `script`
tag with `module`. Which will also make our code more readable.
<h1>About this site</h1>
<p>TODO...</p>
<a href="/">Home</a>
<!--blog/+page.js-->
Here you going to add your load function which will be called
on route rendering. Which basically means load have a
new separate file for itself.
This will be used to export values that configure the
page's behaviour:
- export const prerender = true or false
overrides config.kit.prerender.default
- export const hydrate = true or false
overrides config.kit.browser.hydrate
- export const router = true or false
overrides config.kit.browser.router
import { error } from '@sveltejs/kit';
/** @type {import('./$types').PageLoad} */
export function load({ params }) {
if (params.slug === 'hello-world') {
return {
title: 'Hello world!',
content: 'Welcome to our blog. Lorem ipsum
dolor sit amet...'
};
}
throw error(404, 'Not found');
}
<!--blog/+page.server.js-->
This is your new way of shadow endpoints. You can write
your server side code here with all the request methods.
src/routes/blog/[slug]/+page.server.js
import { error } from '@sveltejs/kit';
/** @type {import('./$types').PageServerLoad} */
export async function load({ params }) {
const post = await getPostFromDatabase(params.slug);
if (post) {
return post;
}
throw error(404, 'Not found');
}
로드 기능
로드 기능이 변경되어 파일(+page.js)에 추가되었으므로 이제 추가된 props 속성 없이 여러 개의 props를 반환할 수 있습니다.
// +page.js
/** @type {import('./$types').LayoutLoad} */
export function load() {
return {
sections: [
{ slug: 'profile', title: 'Profile' },
{ slug: 'notifications', title: 'Notifications' }
]
};
}
// +page.svelte
<script>
/** @type {import('./$types').PageData} */
export let data;
</script>
{#each data.sections as section}
<h1>{section.slug}</h1>
<div>{section.title}</div>
{/each}
보시다시피 props 없이 load에서 여러 항목을 반환했으며
data
prop을 사용하여 load 함수에서 반환된 모든 데이터에 액세스할 수 있습니다.페이지 스토어
이로 인해 많은 일이 쉽고 때로는 지루해졌습니다. 어디에서 사용할 것인지에 따라 다릅니다. 이 상점에는 예를 들어 모든 데이터가 있습니다. URL, 데이터, 오류 등
<script>
import { page } from '$app/stores';
</script>
<h1>{$page.status}: {$page.error.message}</h1>
보시다시피 앱 스토어에서 페이지를 가져와 상태 및 오류 메시지를 가져오는 데 사용했습니다.
이것들은 몇 가지 특정 주요 변경 사항이며 내가 남긴 것이 있으면 주석에 언급하십시오. 자세한 내용은 SvelteKit Docs 을 확인하십시오.
이것은 내가 당신을 위해 쓰는 것입니다. 묻고 싶은 것이나 제안하고 싶은 것이 있다면 댓글에 적어주세요.
Reference
이 문제에 관하여(Sveltekit Braking 변경 사항: 라우팅, 로드 기능 및 섀도우 엔드포인트의 새로운 방식), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/theether0/sveltekit-breaking-changes-explaination-18im텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)