SvelteKit 입문 — 풀스택 웹 프레임워크의 시작
Next.js가 React의 프레임워크라면, SvelteKit은 Svelte의 프레임워크입니다 — 라우팅, SSR, API까지 한 번에 해결합니다.
개념 정의
SvelteKit 은 Svelte를 기반으로 한 풀스택 웹 애플리케이션 프레임워크 입니다. 파일 기반 라우팅, 서버 사이드 렌더링(SSR), 정적 사이트 생성(SSG), API 라우트를 기본 제공합니다.
프로젝트 생성
npx sv create my-app
cd my-app
npm install
npm run dev
프로젝트 구조
my-app/
├── src/
│ ├── routes/ # 파일 기반 라우팅
│ │ ├── +page.svelte # 홈페이지 (/)
│ │ ├── +layout.svelte # 공통 레이아웃
│ │ ├── +error.svelte # 에러 페이지
│ │ ├── about/
│ │ │ └── +page.svelte # /about 페이지
│ │ └── blog/
│ │ ├── +page.svelte # /blog
│ │ └── [slug]/
│ │ └── +page.svelte # /blog/:slug (동적 라우트)
│ ├── lib/ # 공유 라이브러리 ($lib 별칭)
│ │ ├── components/
│ │ └── utils/
│ ├── app.html # HTML 셸
│ └── app.css # 전역 스타일
├── static/ # 정적 파일 (favicon, 이미지 등)
├── svelte.config.js # SvelteKit 설정
├── vite.config.js # Vite 설정
└── package.json
렌더링 모드
SvelteKit은 페이지별로 렌더링 방식을 선택할 수 있습니다.
// +page.js
export const ssr = true; // 서버 사이드 렌더링 (기본값)
export const csr = true; // 클라이언트 사이드 렌더링 (기본값)
export const prerender = false; // 빌드 시 정적 생성
| 설정 | 동작 | 용도 |
|---|---|---|
ssr=true, csr=true | SSR + 하이드레이션 | 대부분의 페이지 |
prerender=true | 빌드 시 정적 HTML | 블로그, 문서 |
ssr=false | CSR만 | 대시보드 |
기본 페이지
<!-- src/routes/+page.svelte -->
<script>
let count = $state(0);
</script>
<svelte:head>
<title>홈</title>
</svelte:head>
<h1>SvelteKit에 오신 것을 환영합니다!</h1>
<button onclick={() => count++}>카운트: {count}</button>
레이아웃
<!-- src/routes/+layout.svelte -->
<script>
let { children } = $props();
</script>
<nav>
<a href="/">홈</a>
<a href="/about">소개</a>
<a href="/blog">블로그</a>
</nav>
<main>
{@render children()}
</main>
<footer>
<p>2026 내 블로그</p>
</footer>
<style>
nav { display: flex; gap: 1rem; padding: 1rem; background: #f5f5f5; }
main { padding: 1rem; min-height: 80vh; }
</style>
$lib 별칭
src/lib/ 디렉토리는 $lib로 접근할 수 있습니다.
<script>
// src/lib/components/Button.svelte를 가져옴
import Button from '$lib/components/Button.svelte';
// src/lib/utils/format.js를 가져옴
import { formatDate } from '$lib/utils/format.js';
</script>
Next.js와의 비교
| 항목 | SvelteKit | Next.js |
|---|---|---|
| 기반 | Svelte | React |
| 번들러 | Vite | webpack/Turbopack |
| 라우팅 | +page.svelte | page.tsx |
| 데이터 로딩 | +page.js load 함수 | getServerSideProps / RSC |
| API 라우트 | +server.js | route.ts |
| 어댑터 | Node, Vercel, Cloudflare 등 | Vercel 중심 |
면접 포인트
- "SvelteKit을 왜 선택하나요?": Vite 기반의 빠른 개발 경험, 파일 기반 라우팅, 유연한 렌더링 모드 선택, 그리고 어댑터를 통한 다양한 배포 환경 지원이 장점입니다.
- "SSR과 SSG의 차이는?": SSR은 요청마다 서버에서 HTML을 생성하고, SSG는 빌드 시 미리 HTML을 생성합니다. SvelteKit에서는
prerender옵션으로 페이지별 선택이 가능합니다.
정리
SvelteKit은 "하나의 프레임워크로 모든 웹 앱을"이라는 비전을 가지고 있습니다. 파일 기반 라우팅으로 구조가 직관적이고, 렌더링 모드를 페이지별로 유연하게 선택할 수 있으며, 어댑터 시스템으로 어디든 배포 가능합니다. Svelte를 배웠다면 SvelteKit은 필수 다음 단계입니다.
댓글 로딩 중...