심심한 개발자의 취미생활

sveltekit

프로젝트 생성

npx sv create project-name
cd project-name
npm run dev

svektekit 기본 구조

my-project/
├ src/
│ ├ lib/
│ │ ├ server/
│ │ │ └ [your server-only lib files]
│ │ └ [your lib files]
│ │
│ ├ params/
│ │ └ [your param matchers]
│ │
│ ├ routes/
│ │ └ [your routes]
│ │
│ ├ app.html
│ ├ error.html
│ ├ app.d.ts
│ ├ hooks.client.js
│ ├ hooks.server.js
│ └ service-worker.js
│ 
├ static/
│ └ [your static assets]
│
├ tests/
│ └ [your tests]
│
├ package.json
├ svelte.config.js
├ tsconfig.json
└ vite.config.js

`/src/lib` : `$lib`을 통해 가져오거나 배포를 위한 라이브러리 작성

  • server : 서버 전용 라이브러리 작성, sveltekit에서는 클라이언트 코드에서 호출 불가

`/src/params` : 앱의 실행에 필요한 매개 변수 작성

`/src/routes` : 애플리케이션의 경로 및 구성 컴포넌트 작성

  • sveltekit에서는 디렉토리 구조가 부모-자식 관계를 결정한다. 이것은 sveltekit의 특징인 '파일 시스템 기반 라우팅'의 핵심이다.
  • +layout.svelte는 sveltekit에서 부모 역할을 하는 핵심 파일이다.
    • 특정 디렉토리에 있는 +layout.svelte 파일은 그 디렉토리 안에 있는 모든 하위 페이지들과 하위 디렉토리들의 '부모'또는 '껍데기' 역할을 한다.
    • 또한 이 관계는 중첩 될 수 있다. 하위 디렉토리에 또 다른 +layout.svelte가 있다면, 그 레이아웃은 자신의 부모 레이아웃의 자식이자, 자기 안의 페이지들에게는 부모가 된다.

`app.html` : 최상단 페이지 템플릿

  • %sveltekit.head% : 앱에 필요한 요소 (<link>, <script>, <svelte:head>)
  • %sveltekit.body% : 렌더링된 페이지의 마크업 (권장 형태: <body><code>%sveltekit.body%</code></body>)
  • %sveltekit.assets% :
  • %sveltekit.nonce% :
  • %sveltekit.env.[NAME]% :

`error.html` : 에러 페이지

  • %sveltekit.status% : HTTP 상태
  • %sveltekit.errer.message% : 오류 메시지

`hooks.client.js` : 클라이언트 후크

`hooks.server.js` : 서버 후크

`service-worker.js` : 서비스 워커

`/test` :

`package.json`

`svelte.config.js` : svelte/sveltekit의 구성 및 설정

`tsconfig.json`

`vite.config.js` : vite 구성 및 설정