Svelte ๊ธฐ๋ฐ์ ํ์คํ ํ๋ ์์ํฌ์ธ SvelteKit์ ๊ธฐ๋ฅ, ์ด์ , ์ค์ , ๋ผ์ฐํ , ๋ฐ์ดํฐ ๋ก๋ฉ, ๋ฐฐํฌ, ์ํ๊ณ๋ฅผ ๋ค๋ฃจ๋ ์ข ํฉ ๊ฐ์ด๋์ ๋๋ค.
SvelteKit: ํ์คํ Svelte ์ ํ๋ฆฌ์ผ์ด์ ํ๋ ์์ํฌ
SvelteKit์ Svelte๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌ์ถ๋ ๊ฐ๋ ฅํ๊ณ ์ ์ ๋ ์ธ๊ธฐ๋ฅผ ์ป๊ณ ์๋ ํ์คํ ์น ์ ํ๋ฆฌ์ผ์ด์ ํ๋ ์์ํฌ์ ๋๋ค. ๊ฐ๋ฐ์๋ ์ด๋ฅผ ํตํด ์ฆ๊ฑฐ์ด ๊ฐ๋ฐ ๊ฒฝํ๊ณผ ํจ๊ป ์ฑ๋ฅ์ด ๋ฐ์ด๋๊ณ SEO ์นํ์ ์ด๋ฉฐ ํ์ฅ ๊ฐ๋ฅํ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค ์ ์์ต๋๋ค. ์ด ๊ฐ์ด๋๋ SvelteKit์ ํต์ฌ ๊ธฐ๋ฅ, ์ด์ , ์ค์ , ๋ผ์ฐํ , ๋ฐ์ดํฐ ๋ก๋ฉ, ๋ฐฐํฌ ๋ฐ ์ฃผ๋ณ ์ํ๊ณ๋ฅผ ๋ค๋ฃจ๋ ํฌ๊ด์ ์ธ ๊ฐ์๋ฅผ ์ ๊ณตํฉ๋๋ค.
SvelteKit์ด๋ ๋ฌด์์ธ๊ฐ?
SvelteKit์ ๋จ์ํ ํ๋ ์์ํฌ๋ฅผ ๋์ด ํ๋์ ์ธ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๊ธฐ ์ํ ์๋ฒฝํ ์์คํ ์ ๋๋ค. ๋ผ์ฐํ ๊ณผ ์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง(SSR)๋ถํฐ ๋ฐ์ดํฐ ๋ก๋ฉ ๋ฐ API ์๋ํฌ์ธํธ๊น์ง ๋ชจ๋ ๊ฒ์ ์ฒ๋ฆฌํฉ๋๋ค. React์ Next.js๋ Vue.js์ Nuxt.js์ ๋ํ Svelte์ ๋์์ด๋ผ๊ณ ์๊ฐํ ์ ์์ง๋ง, Svelte๊ฐ ์ ๊ณตํ๋ ์ฑ๋ฅ ์ด์ ๊ณผ ๊ฐ๋ฐ์ ํธ์์ฑ์ ๊ฐ์ถ๊ณ ์์ต๋๋ค. ๋น ๋ฅด๊ณ ๊ฐ๋ฒผ์ด ๋น๋ ๋๊ตฌ์ธ Vite ์์ ๊ตฌ์ถ๋์ด ๋น ๋ฅธ ๊ฐ๋ฐ ์ฃผ๊ธฐ์ ๊ธฐ์ฌํฉ๋๋ค.
์ SvelteKit์ ์ ํํด์ผ ํ ๊น?
SvelteKit์ ๋ค๋ฅธ ์ธ๊ธฐ ์๋ ์๋ฐ์คํฌ๋ฆฝํธ ํ๋ ์์ํฌ์ ๋ํ ๊ฐ๋ ฅํ ๋์์ ์ ์ํ๋ฉฐ ๋ช ๊ฐ์ง ์ฃผ์ ์ด์ ์ ์ ๊ณตํฉ๋๋ค:
- ์ฑ๋ฅ: Svelte๋ ์ปดํ์ผ ํ์ ์ ๊ทผ ๋ฐฉ์ ๋๋ถ์ ๋ฐ์ด๋ ์ฑ๋ฅ์ผ๋ก ์ ์๋ ค์ ธ ์์ต๋๋ค. SvelteKit์ ์ด๊ธฐ ๋ก๋ ์๊ฐ๊ณผ ํ์ ์ํธ์์ฉ์ ๋ํด ์ ํ๋ฆฌ์ผ์ด์ ์ ์ต์ ํํ์ฌ ์ด๋ฅผ ํ์ฉํฉ๋๋ค. ๋ํ ์ฝ๋ ๋ถํ ๋ฐ ๋ฏธ๋ฆฌ ๋ก๋(preloading)์ ๊ฐ์ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ฌ ์ฑ๋ฅ์ ๋์ฑ ํฅ์์ํต๋๋ค.
- ๊ฐ๋ฐ์ ๊ฒฝํ: SvelteKit์ ์น ๊ฐ๋ฐ์ ๋จ์ํํ๋ ๊ฒ์ ๋ชฉํ๋ก ํฉ๋๋ค. ์ง๊ด์ ์ธ ๋ผ์ฐํ ์์คํ , ๊ฐ๋จํ ๋ฐ์ดํฐ ๋ก๋ฉ, TypeScript์ ๋ํ ๋ด์ฅ ์ง์์ผ๋ก ๋ณต์กํ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฝ๊ฒ ๊ตฌ์ถํ ์ ์์ต๋๋ค. ํ๋ ์์ํฌ์ ๊ท์น๊ณผ ๋ช ํํ ๋ฌธ์๋ ๊ฐ๋ฐ์๊ฐ ์์ฐ์ฑ์ ์ ์งํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
- ์ ์ฐ์ฑ: SvelteKit์ ์๋ฒ๋ฆฌ์ค ํจ์, ๊ธฐ์กด ์๋ฒ ๋ฐ ์ ์ ์ฌ์ดํธ ํธ์คํ ์ ํฌํจํ ๋ค์ํ ๋ฐฐํฌ ๋์์ ์ง์ํฉ๋๋ค. ์ด๋ฅผ ํตํด ๊ฐ๋ฐ์๋ ํ์์ ๊ฐ์ฅ ์ ํฉํ ํธ์คํ ์๋ฃจ์ ์ ์ ํํ ์ ์์ต๋๋ค.
- SEO ์นํ์ : SvelteKit์ ์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง(SSR) ๊ธฐ๋ฅ์ ๊ฒ์ ์์ง์ด ์น์ฌ์ดํธ๋ฅผ ํฌ๋กค๋งํ๊ณ ์ธ๋ฑ์ฑํ๋ ๊ฒ์ ๋ ์ฝ๊ฒ ๋ง๋ค์ด ๊ฒ์ ๊ฒฐ๊ณผ์์์ ๊ฐ์์ฑ์ ํฅ์์ํต๋๋ค. ํจ์ฌ ๋ ๋น ๋ฅธ ์ฑ๋ฅ๊ณผ ๋ ๋์ SEO๋ฅผ ์ํด ์ ์ ์ฌ์ดํธ๋ฅผ ์์ฑํ ์๋ ์์ต๋๋ค.
- ์ ์ง์ ํฅ์(Progressive Enhancement): SvelteKit์ ์ ์ง์ ํฅ์์ ์ฅ๋ คํ์ฌ ์ ํ๋ ์๋ฐ์คํฌ๋ฆฝํธ ์ง์์ ๊ฐ์ง ์ฌ์ฉ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ๊ทผํ ์ ์๋๋ก ๋ณด์ฅํฉ๋๋ค.
SvelteKit์ ์ฃผ์ ๊ธฐ๋ฅ
SvelteKit์ ์น ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ๊ฐ์ํํ๋๋ก ์ค๊ณ๋ ๊ธฐ๋ฅ๋ค๋ก ๊ฐ๋ ์ฐจ ์์ต๋๋ค:
๋ผ์ฐํ
SvelteKit์ ํ์ผ ๊ธฐ๋ฐ ๋ผ์ฐํ
์์คํ
์ ์ฌ์ฉํฉ๋๋ค. routes
๋๋ ํ ๋ฆฌ์ ๊ฐ ํ์ผ์ ์ ํ๋ฆฌ์ผ์ด์
์ ๋ผ์ฐํธ๋ฅผ ๋ํ๋
๋๋ค. ์๋ฅผ ๋ค์ด, src/routes/about.svelte
๋ผ๋ ํ์ผ์ /about
์์ ์ ๊ทผํ ์ ์์ต๋๋ค. ์ด ์ง๊ด์ ์ธ ์ ๊ทผ ๋ฐฉ์์ ๋ด๋น๊ฒ์ด์
์ ๋จ์ํํ๊ณ ์ ํ๋ฆฌ์ผ์ด์
์ ๊ตฌ์กฐ๋ฅผ ์ฝ๊ฒ ๊ตฌ์ฑํ ์ ์๊ฒ ํฉ๋๋ค.
์์:
// src/routes/blog/[slug].svelte
<script>
export let data;
</script>
<h1>{data.post.title}</h1>
<p>{data.post.content}</p>
์ด ์ฝ๋ ์ค๋ํซ์ slug
๋งค๊ฐ๋ณ์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ธ๋ก๊ทธ ๊ฒ์๋ฌผ์ ํ์ํ๋ ๋์ ๋ผ์ฐํธ๋ฅผ ๋ณด์ฌ์ค๋๋ค. data
prop์ +page.server.js
ํ์ผ(์๋ ์ค๋ช
)์์ ๋ก๋๋ ๋ฐ์ดํฐ๋ก ์ฑ์์ง๋๋ค.
๋ฐ์ดํฐ ๋ก๋ฉ
SvelteKit์ ๊ฐ๋ ฅํ๊ณ ์ ์ฐํ ๋ฐ์ดํฐ ๋ก๋ฉ ๋ฉ์ปค๋์ฆ์ ์ ๊ณตํฉ๋๋ค. ํ์์ ๋ฐ๋ผ ์๋ฒ๋ ํด๋ผ์ด์ธํธ์์ ๋ฐ์ดํฐ๋ฅผ ๋ก๋ํ ์ ์์ต๋๋ค. ๋ฐ์ดํฐ ๋ก๋ฉ์ ์ผ๋ฐ์ ์ผ๋ก routes
๋๋ ํ ๋ฆฌ ๋ด์ +page.server.js
๋๋ +page.js
ํ์ผ์์ ์ฒ๋ฆฌ๋ฉ๋๋ค.
- +page.server.js: ์ด ํ์ผ์ ์๋ฒ ์ฌ์ด๋ ๋ฐ์ดํฐ ๋ก๋ฉ์ ์ฌ์ฉ๋ฉ๋๋ค. ์ฌ๊ธฐ์ ๋ก๋๋ ๋ฐ์ดํฐ๋ ์๋ฒ์์๋ง ์ฌ์ฉํ ์ ์์ผ๋ฉฐ ํด๋ผ์ด์ธํธ ์ฌ์ด๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ๋ ธ์ถ๋์ง ์์ต๋๋ค. ์ด๋ ์ธ์ฆ์ด ํ์ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ธ๋ถ API์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ๋ฐ ์ด์์ ์ ๋๋ค.
- +page.js: ์ด ํ์ผ์ ํด๋ผ์ด์ธํธ ์ฌ์ด๋ ๋ฐ์ดํฐ ๋ก๋ฉ์ ์ฌ์ฉ๋ฉ๋๋ค. ์ฌ๊ธฐ์ ๋ก๋๋ ๋ฐ์ดํฐ๋ ์๋ฒ์ ํด๋ผ์ด์ธํธ ๋ชจ๋์์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๋ ๊ณต๊ฐ API์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ฑฐ๋ ์๋ฒ์ ๋ฐ์ดํฐ๋ก ํ์ด์ง๋ฅผ ํ์ด๋๋ ์ด์ ํ๋ ๋ฐ ์ ํฉํฉ๋๋ค.
์์ (+page.server.js):
// src/routes/blog/[slug]/+page.server.js
import { getPostBySlug } from '$lib/server/database';
export async function load({ params }) {
const post = await getPostBySlug(params.slug);
return { post };
}
์ด ์ฝ๋ ์ค๋ํซ์ load
ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ์๋ฒ์์ ๋ฐ์ดํฐ๋ฅผ ๋ก๋ํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ค๋๋ค. params
๊ฐ์ฒด๋ ์ด ์์ ์ slug
์ ๊ฐ์ ๋ผ์ฐํธ ๋งค๊ฐ๋ณ์๋ฅผ ํฌํจํฉ๋๋ค. getPostBySlug
ํจ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋ธ๋ก๊ทธ ๊ฒ์๋ฌผ์ ๊ฐ์ ธ์ต๋๋ค. ๋ก๋๋ ๋ฐ์ดํฐ๋ ๊ฐ์ฒด๋ก ๋ฐํ๋๋ฉฐ, ํด๋น Svelte ์ปดํฌ๋ํธ์์ ์ ๊ทผํ ์ ์์ต๋๋ค.
API ์๋ํฌ์ธํธ
SvelteKit์ ์ฌ์ฉํ๋ฉด ์ ํ๋ฆฌ์ผ์ด์
๋ด์์ ์ง์ API ์๋ํฌ์ธํธ๋ฅผ ์ฝ๊ฒ ๋ง๋ค ์ ์์ต๋๋ค. routes
๋๋ ํ ๋ฆฌ์ +server.js
์ ๊ฐ์ ์ด๋ฆ์ ํ์ผ์ ๋ง๋ค๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค. ์ด ํ์ผ์ ํด๋น ๋ผ์ฐํธ์ ๋ํ ์์ฒญ์ ์ฒ๋ฆฌํฉ๋๋ค.
์์:
// src/routes/api/todos/+server.js
import { json } from '@sveltejs/kit';
let todos = [];
export async function GET() {
return json(todos);
}
export async function POST({ request }) {
const todo = await request.json();
todos.push(todo);
return json(todo, { status: 201 });
}
์ด ์ฝ๋ ์ค๋ํซ์ ํ ์ผ ๋ชฉ๋ก์ ๊ด๋ฆฌํ๊ธฐ ์ํ ๊ฐ๋จํ API ์๋ํฌ์ธํธ๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ค๋๋ค. GET
ํจ์๋ ํ์ฌ ํ ์ผ ๋ชฉ๋ก์ ๋ฐํํ๊ณ , POST
ํจ์๋ ๋ชฉ๋ก์ ์ ํ ์ผ์ ์ถ๊ฐํฉ๋๋ค. json
ํจ์๋ ๋ฐ์ดํฐ๋ฅผ JSON์ผ๋ก ์ง๋ ฌํํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
ํผ ์ฒ๋ฆฌ
SvelteKit์ ํผ ์ ์ถ์ ์ฒ๋ฆฌํ๋ ํธ๋ฆฌํ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค. use:enhance
์ก์
์ ์ฌ์ฉํ์ฌ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ํผ์ ํฅ์์์ผ ๋ ๋ถ๋๋ฌ์ด ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ์ ์ฒด ํ์ด์ง ์๋ก๊ณ ์นจ ์์ด ํผ ์ ์ถ์ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง(SSR) ๋ฐ ์ ์ ์ฌ์ดํธ ์์ฑ(SSG)
SvelteKit์ ์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง(SSR)๊ณผ ์ ์ ์ฌ์ดํธ ์์ฑ(SSG)์ ๋ชจ๋ ์ง์ํฉ๋๋ค. SSR์ ์ฌ์ฉํ๋ฉด ์๋ฒ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ ๋๋งํ์ฌ SEO์ ์ด๊ธฐ ๋ก๋ ์๊ฐ์ ๊ฐ์ ํ ์ ์์ต๋๋ค. SSG๋ฅผ ์ฌ์ฉํ๋ฉด ๋น๋ ์์ ์ ์ ์ HTML ํ์ผ์ ์์ฑํ์ฌ ์ฑ๋ฅ์ ๋์ฑ ํฅ์์ํค๊ณ ์๋ฒ ๋น์ฉ์ ์ ๊ฐํ ์ ์์ต๋๋ค. ํ์์ ๋ฐ๋ผ SSR, SSG ๋๋ ๋์ ์กฐํฉ์ ์ฌ์ฉํ๋๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
TypeScript ์ง์
SvelteKit์ ๋ฐ์ด๋ TypeScript ์ง์์ ์ ๊ณตํฉ๋๋ค. TypeScript๋ฅผ ์ฌ์ฉํ์ฌ ์ปดํฌ๋ํธ, API ์๋ํฌ์ธํธ ๋ฐ ๋ฐ์ดํฐ ๋ก๋ฉ ๋ก์ง์ ์์ฑํ ์ ์์ต๋๋ค. ์ด๋ ์ค๋ฅ๋ฅผ ์กฐ๊ธฐ์ ๋ฐ๊ฒฌํ๊ณ ์ฝ๋์ ์ ์ง๋ณด์์ฑ์ ํฅ์์ํค๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค.
SvelteKit ์์ํ๊ธฐ
SvelteKit์ ์์ํ๋ ค๋ฉด ์์คํ ์ Node.js์ npm ๋๋ yarn์ด ์ค์น๋์ด ์์ด์ผ ํฉ๋๋ค.
- ์ SvelteKit ํ๋ก์ ํธ ์์ฑ:
npm create svelte@latest my-app
cd my-app
npm install
์ด๋ ๊ฒ ํ๋ฉด my-app
์ด๋ผ๋ ๋๋ ํ ๋ฆฌ์ ์ SvelteKit ํ๋ก์ ํธ๊ฐ ์์ฑ๋๊ณ , ์ข
์์ฑ์ด ์ค์น๋๋ฉฐ, ํ๋ก์ ํธ ๋๋ ํ ๋ฆฌ๋ก ์ด๋ํฉ๋๋ค.
- ๊ฐ๋ฐ ์๋ฒ ์์:
npm run dev
์ด๋ ๊ฒ ํ๋ฉด ๊ฐ๋ฐ ์๋ฒ๊ฐ ์์๋๋ฉฐ, ์ฝ๋๋ฅผ ๋ณ๊ฒฝํ ๋๋ง๋ค ์ ํ๋ฆฌ์ผ์ด์
์ด ์๋์ผ๋ก ์๋ก๊ณ ์นจ๋ฉ๋๋ค. ๋ธ๋ผ์ฐ์ ์์ http://localhost:5173
(๋๋ ํฐ๋ฏธ๋์ ์ง์ ๋ ํฌํธ)์ผ๋ก ์ ํ๋ฆฌ์ผ์ด์
์ ์ ๊ทผํ ์ ์์ต๋๋ค.
SvelteKit ํ๋ก์ ํธ ๊ตฌ์กฐ
์ผ๋ฐ์ ์ธ SvelteKit ํ๋ก์ ํธ๋ ๋ค์๊ณผ ๊ฐ์ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๋๋ค:
my-app/
โโโ src/
โ โโโ app.html
โ โโโ lib/
โ โ โโโ # ์ฌ์ฉ์ ์ ์ ๋ชจ๋
โ โโโ routes/
โ โ โโโ +layout.svelte
โ โ โโโ +page.svelte
โ โ โโโ about/
โ โ โโโ +page.svelte
โ โโโ hooks.server.js # ๋๋ ๋ชฉ์ ์ ๋ฐ๋ผ hooks.client.js, hooks.js
โโโ static/
โ โโโ # ์ด๋ฏธ์ง, ํฐํธ ๋ฑ ์ ์ ์์ฐ
โโโ svelte.config.js
โโโ vite.config.js
โโโ package.json
โโโ ...
- src/routes: ์ด ๋๋ ํ ๋ฆฌ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ผ์ฐํธ ์ ์๊ฐ ํฌํจ๋ฉ๋๋ค.
- src/lib: ์ด ๋๋ ํ ๋ฆฌ๋ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ์ปดํฌ๋ํธ์ ๋ชจ๋์ ์ ์ฅํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
- static: ์ด ๋๋ ํ ๋ฆฌ๋ ์ด๋ฏธ์ง ๋ฐ ํฐํธ์ ๊ฐ์ ์ ์ ์์ฐ์ ์ ์ฅํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
- svelte.config.js: ์ด ํ์ผ์๋ Svelte ๊ตฌ์ฑ ์ต์ ์ด ํฌํจ๋ฉ๋๋ค.
- vite.config.js: ์ด ํ์ผ์๋ Vite ๊ตฌ์ฑ ์ต์ ์ด ํฌํจ๋ฉ๋๋ค.
- package.json: ์ด ํ์ผ์๋ ํ๋ก์ ํธ์ ์ข ์์ฑ ๋ฐ ์คํฌ๋ฆฝํธ๊ฐ ํฌํจ๋ฉ๋๋ค.
- src/app.html: SvelteKit ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฃจํธ HTML ๋ฌธ์์ ๋๋ค.
- src/hooks.server.js (๋๋ hooks.client.js ๋๋ hooks.js): ์ด ํ์ผ์ ์ฌ์ฉํ๋ฉด ์๋ฒ์์ ์์ฒญ๊ณผ ์๋ต์ ๊ฐ๋ก์ฑ๊ณ ์์ ํ ์ ์์ต๋๋ค. ์๋ฒ ํ ์ ์๋ฒ์์๋ง ์คํ๋๊ณ , ํด๋ผ์ด์ธํธ ํ ์ ํด๋ผ์ด์ธํธ์์๋ง, ์ผ๋ฐ ํ ์ ํด๋ผ์ด์ธํธ์ ์๋ฒ ์์ชฝ์์ ์คํ๋ฉ๋๋ค.
๋ฐฐํฌ
SvelteKit์ ๋ค์ํ ๋ฐฐํฌ ๋์์ ์ง์ํฉ๋๋ค. ๋ช ๊ฐ์ง ์ธ๊ธฐ ์๋ ์ต์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- Vercel: Vercel์ SvelteKit ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐฐํฌํ๋ ๋ฐ ์ธ๊ธฐ ์๋ ํ๋ซํผ์ ๋๋ค. SvelteKit๊ณผ ์ํํ๊ฒ ํตํฉ๋๋ฉฐ ์๋ ๋ฐฐํฌ ๋ฐ ๊ธ๋ก๋ฒ CDN๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
- Netlify: Netlify๋ SvelteKit ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐฐํฌํ๋ ๋ ๋ค๋ฅธ ์ธ๊ธฐ ์๋ ํ๋ซํผ์ ๋๋ค. ๋ํ SvelteKit๊ณผ ์ํํ๊ฒ ํตํฉ๋๋ฉฐ ์ง์์ ์ธ ๋ฐฐํฌ ๋ฐ ์๋ฒ๋ฆฌ์ค ํจ์์ ๊ฐ์ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
- Node.js ์๋ฒ: SvelteKit ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ธฐ์กด Node.js ์๋ฒ์ ๋ฐฐํฌํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ๋ฐฐํฌ ํ๊ฒฝ์ ๋ ๋ง์ด ์ ์ดํ ์ ์์ต๋๋ค.
- ์ ์ ์ฌ์ดํธ ํธ์คํ : SvelteKit ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ ์ ์ฌ์ดํธ๋ฅผ ์์ฑํ์ฌ Netlify ๋๋ Vercel๊ณผ ๊ฐ์ ์ ์ ์ฌ์ดํธ ํธ์คํ ์ ๊ณต์ ์ฒด์ ๋ฐฐํฌํ ์ ์์ต๋๋ค.
- Cloudflare Pages: Cloudflare Pages๋ Cloudflare์ ๊ธ๋ก๋ฒ ๋คํธ์ํฌ๋ฅผ ํ์ฉํ์ฌ SvelteKit ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐฐํฌํ๋ ์ฑ๋ฅ ์ข๊ณ ๋น์ฉ ํจ์จ์ ์ธ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค.
๋ฐฐํฌ ํ๋ก์ธ์ค๋ ์ผ๋ฐ์ ์ผ๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ ๋น๋ํ ๋ค์ ์์ฑ๋ ํ์ผ์ ์ ํํ ํธ์คํ ์ ๊ณต์ ์ฒด์ ๋ฐฐํฌํ๋ ๊ณผ์ ์ ํฌํจํฉ๋๋ค.
์์ (Vercel):
- Vercel CLI ์ค์น:
npm install -g vercel
- SvelteKit ์ ํ๋ฆฌ์ผ์ด์ ๋น๋:
npm run build
- Vercel์ ์ ํ๋ฆฌ์ผ์ด์ ๋ฐฐํฌ:
vercel
Vercel CLI๋ Vercel ๊ณ์ ์๊ฒฉ ์ฆ๋ช ์ ๋ฌป๋ ๋ฉ์์ง๋ฅผ ํ์ํ ๋ค์ Vercel์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐฐํฌํฉ๋๋ค.
SvelteKit ์ํ๊ณ
SvelteKit์ ํจ์ฌ ๋ ๊ฐ๋ ฅํ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๋ ๋ฐ ๋์์ด ๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ ๋๊ตฌ์ ์ฑ์ฅํ๋ ์ํ๊ณ๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค.
- Svelte Material UI: ๊ตฌ๊ธ์ ๋จธํฐ๋ฆฌ์ผ ๋์์ธ์ ๊ธฐ๋ฐ์ผ๋ก ํ UI ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค.
- carbon-components-svelte: IBM์ ์นด๋ณธ ๋์์ธ ์์คํ ์ ๊ธฐ๋ฐ์ผ๋ก ํ UI ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค.
- svelte-i18n: Svelte ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตญ์ ํ๋ฅผ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค.
- svelte-forms-lib: Svelte ์ ํ๋ฆฌ์ผ์ด์ ์์ ํผ์ ์ฒ๋ฆฌํ๊ธฐ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค.
- SvelteStrap: Svelte์ฉ Bootstrap 5 ์ปดํฌ๋ํธ์ ๋๋ค.
๊ณ ๊ธ SvelteKit ๊ฐ๋
๊ธฐ๋ณธ ์ฌํญ ์ธ์๋ SvelteKit์ ๋ณต์กํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๊ธฐ ์ํ ๋ช ๊ฐ์ง ๊ณ ๊ธ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค:
๋ ์ด์์
๋ ์ด์์์ ์ฌ์ฉํ๋ฉด ์ ํ๋ฆฌ์ผ์ด์
์ ์ฌ๋ฌ ํ์ด์ง์ ๋ํ ๊ณตํต ๊ตฌ์กฐ๋ฅผ ์ ์ํ ์ ์์ต๋๋ค. routes
๋๋ ํ ๋ฆฌ ๋ด์ ๋๋ ํ ๋ฆฌ์ +layout.svelte
ํ์ผ์ ๋ง๋ค์ด ๋ ์ด์์์ ์์ฑํ ์ ์์ต๋๋ค. ๋ ์ด์์์ ํด๋น ๋๋ ํ ๋ฆฌ์ ๊ทธ ํ์ ๋๋ ํ ๋ฆฌ ๋ด์ ๋ชจ๋ ํ์ด์ง์ ์ ์ฉ๋ฉ๋๋ค.
ํ (Hooks)
SvelteKit์ ์์ฒญ๊ณผ ์๋ต์ ๊ฐ๋ก์ฑ๊ณ ์์ ํ ์ ์๋ ํ
(Hooks)์ ์ ๊ณตํฉ๋๋ค. ํ
์ ์ฌ์ฉํ์ฌ ์ธ์ฆ, ๊ถํ ๋ถ์ฌ ๋ฐ ๋ฐ์ดํฐ ์ ํจ์ฑ ๊ฒ์ฌ์ ๊ฐ์ ์์
์ ์ํํ ์ ์์ต๋๋ค. ํ
์ src/hooks.server.js
(์๋ฒ), src/hooks.client.js
(ํด๋ผ์ด์ธํธ), ๊ทธ๋ฆฌ๊ณ src/hooks.js
(์์ชฝ ๋ชจ๋)์ ์ ์๋ฉ๋๋ค.
์คํ ์ด(Stores)
Svelte ์คํ ์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ํ๋ฅผ ๊ด๋ฆฌํ๋ ๊ฐ๋ ฅํ ๋ฐฉ๋ฒ์ ๋๋ค. ์ปดํฌ๋ํธ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๊ณต์ ํ๊ณ ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋ ๋ UI๋ฅผ ์๋์ผ๋ก ์ ๋ฐ์ดํธํ ์ ์์ต๋๋ค. SvelteKit์ Svelte ์คํ ์ด์ ์ํํ๊ฒ ํตํฉ๋ฉ๋๋ค.
๋ฏธ๋ค์จ์ด
SvelteKit์๋ ์ ํต์ ์ธ ์๋ฏธ์ ์ ์ฉ "๋ฏธ๋ค์จ์ด"๊ฐ ์์ง๋ง, ํ ๊ณผ ์๋ฒ ๋ผ์ฐํธ๋ฅผ ์ฌ์ฉํ์ฌ ์์ฒญ์ด ์ ํ๋ฆฌ์ผ์ด์ ๋ก์ง์ ๋๋ฌํ๊ธฐ ์ ์ ๊ฐ๋ก์ฑ๊ณ ์์ ํจ์ผ๋ก์จ ์ ์ฌํ ๊ธฐ๋ฅ์ ๊ตฌํํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ์ธ์ฆ, ๋ก๊น ๋ฐ ๊ธฐํ ๊ณตํต ๊ด์ฌ์ฌ๋ฅผ ๊ตฌํํ ์ ์์ต๋๋ค.
SvelteKit vs. ๋ค๋ฅธ ํ๋ ์์ํฌ
SvelteKit์ ์ข ์ข Next.js(React) ๋ฐ Nuxt.js(Vue.js)์ ๊ฐ์ ๋ค๋ฅธ ํ์คํ ์๋ฐ์คํฌ๋ฆฝํธ ํ๋ ์์ํฌ์ ๋น๊ต๋ฉ๋๋ค. ๋ค์์ ๊ฐ๋ตํ ๋น๊ต์ ๋๋ค:
- SvelteKit vs. Next.js: SvelteKit์ Svelte์ ์ปดํ์ผ ํ์ ์ ๊ทผ ๋ฐฉ์ ๋๋ถ์ ์ผ๋ฐ์ ์ผ๋ก Next.js๋ณด๋ค ๋ ๋์ ์ฑ๋ฅ์ ์ ๊ณตํฉ๋๋ค. SvelteKit์ ๋ํ ๋ ๊ฐ๋จํ API์ ๋ ์์ ๋ฒ๋ค ํฌ๊ธฐ๋ฅผ ๊ฐ์ง๋๋ค. ๊ทธ๋ฌ๋ Next.js๋ ๋ ํฐ ์ํ๊ณ์ ๋ ์ฑ์ํ ์ปค๋ฎค๋ํฐ๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค.
- SvelteKit vs. Nuxt.js: SvelteKit๊ณผ Nuxt.js๋ ๊ธฐ๋ฅ ๋ฐ ๊ธฐ๋ฅ์ฑ ๋ฉด์์ ์ ์ฌํฉ๋๋ค. SvelteKit์ ๋ ๊ฐ๋จํ API์ ๋ ๋์ ์ฑ๋ฅ์ ๊ฐ์ง๊ณ ์๋ ๋ฐ๋ฉด, Nuxt.js๋ ๋ ํฐ ์ํ๊ณ์ ๋ ์ฑ์ํ ์ปค๋ฎค๋ํฐ๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค.
ํ๋ ์์ํฌ์ ์ ํ์ ํน์ ์๊ตฌ ์ฌํญ๊ณผ ์ ํธ๋์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค. ์ฑ๋ฅ๊ณผ ๊ฐ๋ฐ์ ํธ์์ฑ์ด ์ฐ์ ์์๋ผ๋ฉด SvelteKit์ ํ๋ฅญํ ์ ํ์ ๋๋ค. ํฐ ์ํ๊ณ์ ์ฑ์ํ ์ปค๋ฎค๋ํฐ๊ฐ ํ์ํ๋ค๋ฉด Next.js ๋๋ Nuxt.js๊ฐ ๋ ์ ํฉํ ์ ์์ต๋๋ค.
์ค์ ์์ ๋ฐ ์ฌ์ฉ ์ฌ๋ก
SvelteKit์ ๋ค์๊ณผ ๊ฐ์ ๋ค์ํ ์น ์ ํ๋ฆฌ์ผ์ด์ ํ๋ก์ ํธ์ ์ ํฉํฉ๋๋ค:
- ์ ์์๊ฑฐ๋ ์น์ฌ์ดํธ: SvelteKit์ ์ฑ๋ฅ๊ณผ SEO ์นํ์ ์ธ ๊ธฐ๋ฅ์ ์ ์์๊ฑฐ๋ ์น์ฌ์ดํธ๋ฅผ ๊ตฌ์ถํ๋ ๋ฐ ํ๋ฅญํ ์ ํ์ด ๋ฉ๋๋ค.
- ๋ธ๋ก๊ทธ ๋ฐ ์ฝํ ์ธ ๊ด๋ฆฌ ์์คํ (CMS): SvelteKit์ ์ ์ ์ฌ์ดํธ ์์ฑ ๊ธฐ๋ฅ์ ๋น ๋ฅด๊ณ SEO์ ์ต์ ํ๋ ๋ธ๋ก๊ทธ์ CMS๋ฅผ ๊ตฌ์ถํ๋ ๋ฐ ์ด์์ ์ ๋๋ค.
- ๋จ์ผ ํ์ด์ง ์ ํ๋ฆฌ์ผ์ด์ (SPA): SvelteKit์ ๋ผ์ฐํ ๋ฐ ๋ฐ์ดํฐ ๋ก๋ฉ ๋ฉ์ปค๋์ฆ์ ๋ณต์กํ SPA๋ฅผ ์ฝ๊ฒ ๊ตฌ์ถํ ์ ์๊ฒ ํฉ๋๋ค.
- ๋์๋ณด๋ ๋ฐ ๊ด๋ฆฌ์ ํจ๋: SvelteKit์ TypeScript ์ง์ ๋ฐ ์ปดํฌ๋ํธ ๊ธฐ๋ฐ ์ํคํ ์ฒ๋ ์ ์ง๋ณด์ ๊ฐ๋ฅํ ๋์๋ณด๋ ๋ฐ ๊ด๋ฆฌ์ ํจ๋์ ์ฝ๊ฒ ๊ตฌ์ถํ ์ ์๊ฒ ํฉ๋๋ค.
- ํ๋ก๊ทธ๋ ์๋ธ ์น ์ฑ(PWA): SvelteKit์ ์คํ๋ผ์ธ ๊ธฐ๋ฅ๊ณผ ์ค์น ๊ฐ๋ฅํ ๊ฒฝํ์ ๊ฐ์ถ PWA๋ฅผ ๊ตฌ์ถํ๋ ๋ฐ ์ฌ์ฉ๋ ์ ์์ต๋๋ค.
์์:
- ํ์ฌ ์น์ฌ์ดํธ (๊ธ๋ก๋ฒ ๊ธฐ์ ๊ธฐ์ ): ๊ธ๋ก๋ฒ ๊ธฐ์ ๊ธฐ์ ์ SvelteKit์ ์ฌ์ฉํ์ฌ ์ ํ๊ณผ ์๋น์ค๋ฅผ ์ ๋ณด์ด๋ ๋น ๋ฅด๊ณ SEO ์นํ์ ์ธ ์น์ฌ์ดํธ๋ฅผ ๊ตฌ์ถํ ์ ์์ต๋๋ค. ์ด ์ฌ์ดํธ๋ ๊ฐ์ ๋ SEO๋ฅผ ์ํด ์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง์, ๋ ๋น ๋ฅธ ๋ก๋ฉ ์๊ฐ์ ์ํด ์ฝ๋ ๋ถํ ์ ํ์ฉํ ์ ์์ต๋๋ค. CMS์์ ํตํฉ์ ํตํด ์ฌ๋ฌ ์๊ฐ๋์ ๊ฑธ์ณ ๋ถ์ฐ๋ ๋ง์ผํ ํ์ด ์ฝ๊ฒ ์ฝํ ์ธ ๋ฅผ ์ ๋ฐ์ดํธํ ์ ์์ต๋๋ค.
- ์ ์์๊ฑฐ๋ ํ๋ซํผ (๊ตญ์ ์๋งค์ ์ฒด): ๊ตญ์ ์๋งค์ ์ฒด๋ SvelteKit์ ์ฌ์ฉํ์ฌ ์ฑ๋ฅ์ด ๋ฐ์ด๋ ์ ์์๊ฑฐ๋ ํ๋ซํผ์ ๊ตฌ์ถํ ์ ์์ต๋๋ค. SvelteKit์ SSR ๊ธฐ๋ฅ์ ์ ํ ํ์ด์ง๊ฐ ๊ฒ์ ์์ง์ ์ฝ๊ฒ ์ธ๋ฑ์ฑ๋๋๋ก ๋ณด์ฅํฉ๋๋ค. ๋ํ ์ด ํ๋ซํผ์ ๊ฒฐ์ ๊ฒ์ดํธ์จ์ด ๋ฐ ๋ฐฐ์ก ์ ๊ณต์ ์ฒด์ ํตํฉํ์ฌ ์ ์ธ๊ณ ๊ณ ๊ฐ์๊ฒ ์ํํ ์ผํ ๊ฒฝํ์ ์ ๊ณตํ ์ ์์ต๋๋ค. ํตํ ๋ฐ ์ธ์ด ํ์งํ ๊ธฐ๋ฅ์ด ํ์์ ์ ๋๋ค.
- ์ธํฐ๋ํฐ๋ธ ๋ฐ์ดํฐ ์๊ฐํ ๋์๋ณด๋ (๊ธ๋ก๋ฒ ์ฐ๊ตฌ ๊ธฐ๊ด): ์ฐ๊ตฌ ๊ธฐ๊ด์ SvelteKit์ ์ฌ์ฉํ์ฌ ๋ณต์กํ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ์๊ฐํํ๋ ์ธํฐ๋ํฐ๋ธ ๋์๋ณด๋๋ฅผ ๊ตฌ์ถํ ์ ์์ต๋๋ค. SvelteKit์ ๋ฐ์์ฑ๊ณผ ์ปดํฌ๋ํธ ๊ธฐ๋ฐ ์ํคํ ์ฒ๋ ๋์ ์ด๊ณ ๋งค๋ ฅ์ ์ธ ์๊ฐํ๋ฅผ ์ฝ๊ฒ ๋ง๋ค ์ ์๋๋ก ํฉ๋๋ค. ์ด ๋์๋ณด๋๋ ํ์ฅ์ฑ๊ณผ ๋น์ฉ ํจ์จ์ฑ์ ์ํด ์๋ฒ๋ฆฌ์ค ํ๊ฒฝ์ ๋ฐฐํฌ๋ ์ ์์ต๋๋ค. ๊ตญ์ ์ฐ๊ตฌํ๊ณผ์ ํ์ ์ ์ํด ์ธ์ด ์ง์์ด ์ค์ํ ์ ์์ต๋๋ค.
SvelteKit ๊ฐ๋ฐ์ ์ํ ๋ชจ๋ฒ ์ฌ๋ก
๊ณ ํ์ง์ SvelteKit ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๊ธฐ ์ํด ๋ค์ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๋ฐ๋ฅด์ญ์์ค:
- TypeScript ์ฌ์ฉ: TypeScript๋ ์ค๋ฅ๋ฅผ ์กฐ๊ธฐ์ ๋ฐ๊ฒฌํ๊ณ ์ฝ๋์ ์ ์ง๋ณด์์ฑ์ ํฅ์์ํค๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค.
- ๋จ์ ํ ์คํธ ์์ฑ: ๋จ์ ํ ์คํธ๋ ์ฝ๋๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํ๋์ง ํ์ธํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค.
- ๋ฆฐํฐ์ ํฌ๋งทํฐ ์ฌ์ฉ: ๋ฆฐํฐ์ ํฌ๋งทํฐ๋ ์ผ๊ด๋ ์ฝ๋ ์คํ์ผ์ ์ ์งํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค.
- ์ด๋ฏธ์ง ์ต์ ํ: ์ต์ ํ๋ ์ด๋ฏธ์ง๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
- CDN ์ฌ์ฉ: CDN์ ์ ์ ์์ฐ์ ๋ ๋นจ๋ฆฌ ์ ๋ฌํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค.
- ์ ํ๋ฆฌ์ผ์ด์ ๋ชจ๋ํฐ๋ง: ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ชจ๋ํฐ๋งํ๋ฉด ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ์๋ณํ๊ณ ํด๊ฒฐํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค.
- SEO ๋ฐ ์ด๊ธฐ ๋ก๋ ์ฑ๋ฅ์ ์ํด ์๋ฒ ์ฌ์ด๋ ๋ ๋๋ง(SSR) ์ฌ์ฉ: SEO๊ฐ ์ค์ํ ๋ผ์ฐํธ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฒด๊ฐ ์ฑ๋ฅ์ ๊ฐ์ ํ๊ธฐ ์ํด SSR์ ํ์ฑํํ์ญ์์ค.
- ์ฝํ ์ธ ๊ฐ ๋ง์ ์ฌ์ดํธ์๋ ์ ์ ์ฌ์ดํธ ์์ฑ(SSG) ๊ณ ๋ ค: ์ฌ์ดํธ์ ์ ์ ์ฝํ ์ธ ๊ฐ ๋ง์ ๊ฒฝ์ฐ SSG๋ ์ฑ๋ฅ์ ํฌ๊ฒ ํฅ์์ํค๊ณ ์๋ฒ ๋น์ฉ์ ์ ๊ฐํ ์ ์์ต๋๋ค.
- UI๋ฅผ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ์ปดํฌ๋ํธ๋ก ๋ถํ : ์ด๋ ์ฝ๋ ์ฌ์ฌ์ฉ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ ์ด์งํฉ๋๋ค.
- ์ปดํฌ๋ํธ๋ฅผ ์ง์ค๋๊ณ ์๊ฒ ์ ์ง: ๋ ์์ ์ปดํฌ๋ํธ๋ ์ดํด, ํ ์คํธ ๋ฐ ์ ์ง๋ณด์๊ฐ ๋ ์ฝ์ต๋๋ค.
- ์คํ ์ด๋ฅผ ์ฌ์ฉํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ํ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ๊ด๋ฆฌ: ์คํ ์ด๋ ์ํ๋ฅผ ๊ด๋ฆฌํ๋ ์ค์ ์ง์ค์ ๋ฐฉ๋ฒ์ ์ ๊ณตํ๊ณ ์ํ๊ฐ ๋ณ๊ฒฝ๋ ๋ ์ปดํฌ๋ํธ๊ฐ ์ ๋ฐ์ดํธ๋๋๋ก ๋ณด์ฅํฉ๋๋ค.
๊ฒฐ๋ก
SvelteKit์ ๊ฐ๋ฐ์๊ฐ ์ฆ๊ฑฐ์ด ๊ฐ๋ฐ ๊ฒฝํ์ ํตํด ์ฑ๋ฅ์ด ๋ฐ์ด๋๊ณ SEO ์นํ์ ์ด๋ฉฐ ํ์ฅ ๊ฐ๋ฅํ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ ์ ์๋๋ก ์ง์ํ๋ ๊ฐ๋ ฅํ๊ณ ๋ค์ฌ๋ค๋ฅํ ํ์คํ ํ๋ ์์ํฌ์ ๋๋ค. ์ง๊ด์ ์ธ ๋ผ์ฐํ ์์คํ , ๊ฐ๋จํ ๋ฐ์ดํฐ ๋ก๋ฉ, TypeScript์ ๋ํ ๋ด์ฅ ์ง์์ผ๋ก ๋ณต์กํ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฝ๊ฒ ๊ตฌ์ถํ ์ ์์ต๋๋ค. ์ฑ์ฅํ๋ ์ํ๊ณ์ ํ๋ฐํ ์ปค๋ฎค๋ํฐ๋ฅผ ํตํด SvelteKit์ ํ๋ ์น ๊ฐ๋ฐ์ ์ํ ์ ๋์ ์ธ ํ๋ ์์ํฌ๊ฐ ๋ ์ค๋น๊ฐ ๋์ด ์์ต๋๋ค. ์์ ๊ฐ์ธ ์น์ฌ์ดํธ๋ฅผ ๊ตฌ์ถํ๋ ๋๊ท๋ชจ ๊ธฐ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๋ SvelteKit์ ๊ณ ๋ คํด ๋ณผ ๊ฐ์น๊ฐ ์๋ ํ๋ ์์ํฌ์ ๋๋ค.