티스토리 뷰

tech/Frontend

Svelte 이해하기

drillandrill 2023. 3. 18. 13:26
Svelte로 개발하면서 알게된 내용, 프로젝트 분석 및 개발 과정을 정리한 글이다.

프로젝트 생성

CSA라고 해야하나 React는 CRA를 제공하는 것처럼 svlete도 프로젝트 생성 시 기본 구성을 제공하고 있다.

나는 데모 프로젝트를 생성했고 아래와 같이 실행된다.

// 명령어를 실행한다.
npm create svelte@latest .

create-svelte version 3.1.2

┌  Welcome to SvelteKit!
│	// 프로젝트 생성할거면 엔터치면 됨
◇  Where should we create your project?
│    (hit Enter to use current directory)
│
│	// 이거는 내가 이미 빈 프로젝트를 생성한 상태에서 설치하려고 나오는 문구이다.
◇  Directory not empty. Continue?
│  Yes
│
│ // 이 때 제안해주는 방법이 세 가지이다.
│ // 데모 프로젝트로 생성, 기본 라이브러리가 있는? 프로젝트 생성, 빈 프로젝트로 생성
◇  Which Svelte app template?
│  SvelteKit demo app
│
│	// 타입체크를 할거냐고 물어보는데 이 때 제안도 세 가지로 해줌
│	// 타입스크립트 사용, 자바스크립트 주석을 사용한 타입 확인, 안함
│	// 내 기준에서 타입스크립트까지 하는건 일정상으로도 어려울 것 같아서 자바스크립트 주석을 사용하기로 함
◇  Add type checking with TypeScript?
│  Yes, using JavaScript with JSDoc comments
│	// 옵션으로 선택할 항목을 제안해준다. eslint, prettier, playwright, vitest
◇  Select additional options (use arrow keys/space bar)
│  Add ESLint for code linting, Add Prettier for code formatting, Add Playwright for browser testing, Add Vitest for unit testing
│
└  Your project is ready!

✔ Type-checked JavaScript
  https://www.typescriptlang.org/tsconfig#checkJs

✔ ESLint
  https://github.com/sveltejs/eslint-plugin-svelte3

✔ Prettier
  https://prettier.io/docs/en/options.html
  https://github.com/sveltejs/prettier-plugin-svelte#options

✔ Playwright
  https://playwright.dev

✔ Vitest
  https://vitest.dev

Install community-maintained integrations:
  https://github.com/svelte-add/svelte-add

// 생성 후에 실행 순서를 알려준다.
Next steps:
  1: npm install (or pnpm install, etc)
  2: git init && git add -A && git commit -m "Initial commit" (optional)
  3: npm run dev -- --open

To close the dev server, hit Ctrl-C

Stuck? Visit us at https://svelte.dev/chat
npm notice 
npm notice New minor version of npm available! 9.2.0 -> 9.6.1
npm notice Changelog: https://github.com/npm/cli/releases/tag/v9.6.1
npm notice Run npm install -g npm@9.6.1 to update!
npm notice 

// 위에서 알려주는대로 npm install을 실행한다.
npm install 
npm WARN deprecated @types/sass@1.45.0: This is a stub types definition. sass provides its own type definitions, so you do not need this installed.

added 206 packages, and audited 207 packages in 24s

34 packages are looking for funding
  run `npm fund` for details

found 0 vulnerabilities
npm notice 
npm notice New minor version of npm available! 9.2.0 -> 9.6.1
npm notice Changelog: https://github.com/npm/cli/releases/tag/v9.6.1
npm notice Run npm install -g npm@9.6.1 to update!
npm notice 

// install 후 프로젝트를 실행한다.
npm run dev -- --open

> project@0.0.1 dev
> vite dev --open


// 접속 url 정보와 참고할 정보를 알려준다.
Forced re-optimization of dependencies

  VITE v4.1.4  ready in 1458 ms

  ➜  Local:   http://localhost:5173/
  ➜  Network: use --host to expose
  ➜  press h to show help
3:30:38 PM [vite-plugin-svelte] ssr compile done.
package                 files     time     avg
project 		            5   	62.6ms  12.5ms

svelte 이해하기

레퍼런스에 svlete를 개발하기 위한 뉴비개발자를 위한 안내글이 있다.

바로 개발을 해보려했으나 프로젝트 구조가 이해가 잘 안돼서 구조 분석을 먼저했다.

vite?

  • Vite의 역할은 애플리케이션의 소스 파일을 가져와 다른 프로그램(우리의 경우 Svelte 포함)에 전달하고 브라우저에서 애플리케이션을 열 때 실제로 실행될 코드로 변환하는 것이라고 한다.
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="utf-8" />
	<link rel="icon" href="%sveltekit.assets%/favicon.png" />
	<meta name="viewport" content="width=device-width" />
	%sveltekit.head%
</head>
<body data-sveltekit-preload-data="hover">
<div style="display: contents">%sveltekit.body%</div>
</body>
</html>

이 코드는 스벨트 데모 프로젝트를 받으면 확인되는 app.html 코드인데 내가 여기서 궁금한건 %sveltekit.head%이거랑 %sveltekit.body% 이게 어디서 만들어져서 호출 되냐는 것이다.

Svelte Dev Reference에서 확인해보니 저 구문은 스벨트 문법으로 작성된 <svelte:head></svlelte:head> 와 같은 내용을 담아서 일괄적으로 렌더링 해주는 것이라고 한다.

 

 ❓여기서 궁금한 것은 %sveltekit.head%, %sveltekit.body%이게 없으면 구현이 안될까 라는 의문임

근데 구조적으로 보면 안될것같기는함, svelte 문법이 적용된 부분을 렌더링해주는 역할을 하는 것으로 보임 확인해야할듯함

 

 

 

 

설정 파일은 리액트랑 비슷한 구조인데 조금 다른 점은 svelte전용 설정파일과 아까 위에서 언급한 vite설정파일이 있다.

playwright 설정파일도 있는데 뭔지 잘 모르겠어서 분석해야함

일단 화면 구현이 우선순위가 높으니 이건 참고정도로 하고 구현이 된 후에 다시 정리할 예정임

svelte demo proejct architecturedemo project app
데모프로젝트 구조와 앱 화면

SvelteKit Docs이 문서에 스벨트의 소개와 데모 프로젝트의 설명이 자세하게 작성되어 있다.

프로젝트 구조에 대한 설명도 이 문서에 다 작성되어 있는데 내가 궁금한것들에 대한 내용이 여기에 거의 다 있어보인다.

레퍼런스에 기재되어 있는 프로젝트 구조는 다음과 같다.

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

 

글이 너무 길어지는 관계로 나눠서 작성해야겠다.

'tech > Frontend' 카테고리의 다른 글

Svelte 개발하기, Routing  (0) 2023.03.18
CSR, SSR  (0) 2023.03.18
Svelte 이해하기(2)  (0) 2023.03.18
ESLint, Prettier 차이점과 사용이유  (0) 2023.03.18
최근에 올라온 글
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함