Next.js가 React의 프레임워크라면, SvelteKit은 Svelte의 프레임워크입니다 — 라우팅, SSR, API까지 한 번에 해결합니다.

개념 정의

SvelteKit 은 Svelte를 기반으로 한 풀스택 웹 애플리케이션 프레임워크 입니다. 파일 기반 라우팅, 서버 사이드 렌더링(SSR), 정적 사이트 생성(SSG), API 라우트를 기본 제공합니다.

프로젝트 생성

BASH
npx sv create my-app
cd my-app
npm install
npm run dev

프로젝트 구조

PLAINTEXT
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은 페이지별로 렌더링 방식을 선택할 수 있습니다.

JAVASCRIPT
// +page.js
export const ssr = true;        // 서버 사이드 렌더링 (기본값)
export const csr = true;        // 클라이언트 사이드 렌더링 (기본값)
export const prerender = false; // 빌드 시 정적 생성
설정동작용도
ssr=true, csr=trueSSR + 하이드레이션대부분의 페이지
prerender=true빌드 시 정적 HTML블로그, 문서
ssr=falseCSR만대시보드

기본 페이지

SVELTE
<!-- src/routes/+page.svelte -->
<script>
  let count = $state(0);
</script>

<svelte:head>
  <title>홈</title>
</svelte:head>

<h1>SvelteKit에 오신 것을 환영합니다!</h1>
<button onclick={() => count++}>카운트: {count}</button>

레이아웃

SVELTE
<!-- 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로 접근할 수 있습니다.

SVELTE
<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와의 비교

항목SvelteKitNext.js
기반SvelteReact
번들러Vitewebpack/Turbopack
라우팅+page.sveltepage.tsx
데이터 로딩+page.js load 함수getServerSideProps / RSC
API 라우트+server.jsroute.ts
어댑터Node, Vercel, Cloudflare 등Vercel 중심

면접 포인트

  • "SvelteKit을 왜 선택하나요?": Vite 기반의 빠른 개발 경험, 파일 기반 라우팅, 유연한 렌더링 모드 선택, 그리고 어댑터를 통한 다양한 배포 환경 지원이 장점입니다.
  • "SSR과 SSG의 차이는?": SSR은 요청마다 서버에서 HTML을 생성하고, SSG는 빌드 시 미리 HTML을 생성합니다. SvelteKit에서는 prerender 옵션으로 페이지별 선택이 가능합니다.

정리

SvelteKit은 "하나의 프레임워크로 모든 웹 앱을"이라는 비전을 가지고 있습니다. 파일 기반 라우팅으로 구조가 직관적이고, 렌더링 모드를 페이지별로 유연하게 선택할 수 있으며, 어댑터 시스템으로 어디든 배포 가능합니다. Svelte를 배웠다면 SvelteKit은 필수 다음 단계입니다.

댓글 로딩 중...