SvelteKit ์œผ๋กœ ๋ธ”๋กœ๊ทธ๋ฅผ ๊ฐœ์„คํ•ด ๋ณด์•˜๋‹ค

Published at 2024. 5. 16.

3 min read

#sveltekit#svelte

Table of Contents

์†Œ๊ฐœ

SvelteKit 2 + Svelte 5(preview) ์กฐํ•ฉ์œผ๋กœ ๋ญ” ๋งŒ๋“ค์–ด๋ณผ๊นŒ ์ƒ๊ฐํ•˜๋‹ค๊ฐ€.. ๋งˆ์นจ ๋ธ”๋กœ๊ทธ๋ฅผ ์‹œ์ž‘ํ•ด์•ผ๊ฒ ๋‹ค ์‹ถ์€ ์ƒ๊ฐ์ด ๋“ค์–ด์„œ ์ด ์กฐํ•ฉ์œผ๋กœ ๋ธ”๋กœ๊ทธ๋ฅผ ๋งŒ๋“ค์–ด ๋ณด๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ๋‹ค.

๋ธ”๋กœ๊ทธ ๋งŒ๋“œ๋Š” ๋ฒ•์€ ๋‹ค์Œ ์˜์ƒ์„ ์ฐธ๊ณ ํ–ˆ๋‹ค.

Features

๐Ÿ”ฅ Open Props ๋„์ž…

์š”๋ฒˆ์—๋Š” ๋Š˜์ƒ ์“ฐ๋˜ TailwindCSS ๋Œ€์‹ ์— Open Props๋ผ๋Š” ๊ฒƒ์„ ์จ๋ณด์•˜๋‹ค. TailwindCSS๊ฐ€ ์ฃผ๋Š” verboseํ•˜๊ณ  inline-style ๊ฐ™์€ ๋Š๋‚Œ์„ ๋œ ๋ฐ›์œผ๋ฉด์„œ design token ๊ธฐ๋ฐ˜์œผ๋กœ CSS๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ์‹์ด๋‹ค.

๐Ÿ”ฅ Dark/Light mode

์ผ๋‹จ ์–ด๋Š ๋ธ”๋กœ๊ทธ์—๋‚˜ ์žˆ๋Š” theme toggle ๊ธฐ๋Šฅ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ํƒ‘์žฌํ–ˆ๋‹ค. ๊ฐœ์ธ์ ์œผ๋กœ๋Š” ์–ด๋–ค ์†Œํ”„ํŠธ์›จ์–ด๋“  dark theme์„ default๋กœ ๋†“๊ณ  ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์–ด์„œ light theme์„ ์“ฐ์ง„ ์•Š์ง€๋งŒ.. ๊ทธ๋ƒฅ ๋„ฃ์–ด๋’€๋‹ค.

๐Ÿ”ฅ Code block syntax highlighting

์•„๋ž˜์ฒ˜๋Ÿผ code block์— ๋Œ€ํ•ด syntax highlighting์ด ์ž˜ ๋˜๋„๋ก ์„ค์ •ํ•ด์ฃผ์—ˆ๋‹ค. syntax highlighting์„ ํ•ด์ฃผ๊ธฐ ์œ„ํ•ด์„œ shiki ๋ผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ™œ์šฉํ–ˆ๊ณ , light theme์—์„œ๋Š” github-light ์„, dark theme์—์„œ๋Š” github-dark ๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค. code๊ด€๋ จ font๋Š” JetBrains Mono font๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค.

function greet(name: string) {
	console.log('Hello, Sveltekit!')
}

๐Ÿ”ฅ Markdown rendering

๊ธฐ๋ณธ markdown ๋ฌธ๋ฒ•์— ๋”ํ•ด, Svelte component๋ฅผ .md ํŒŒ์ผ ์•ˆ์—์„œ ๋ Œ๋”๋ง ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์คฌ๋‹ค.

์ฆ‰, ์•„๋ž˜์ฒ˜๋Ÿผ Svelte component๋ฅผ .md ํŒŒ์ผ ๋‚ด์—์„œ ์ง์ ‘ import ํ•  ์ˆ˜ ์žˆ๋‹ค.

// markdown file

<script>
  import Counter from './counter.svelte'
</script>

<Counter />

๊ทธ๋Ÿฌ๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด svelte component๊ฐ€ ๋™์ž‘ํ•˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ”ฅ Reading time UX ์ถ”๊ฐ€

mdsvex plugin์„ ํ†ตํ•ด post๋ฅผ ์ฝ๋Š”๋ฐ ๊ฑธ๋ฆด ์˜ˆ์ƒ ์†Œ์š”์‹œ๊ฐ„์„ ํ‘œ์‹œํ•ด์ฃผ๋Š” UX๋ฅผ ์ถ”๊ฐ€ํ•ด์ฃผ์—ˆ๋‹ค.

๐Ÿ”ฅ Page transition effect

svelte์— ๋‚ด์žฅ๋œ transition ๊ด€๋ จ ๋„๊ตฌ๋กœ url์ด ๋ณ€๊ฒฝ๋  ๋•Œ ๋งˆ๋‹ค GNB, footer๋ฅผ ์ œ์™ธํ•œ ์˜์—ญ์— transition ํšจ๊ณผ๊ฐ€ ์ ์šฉ๋˜๋„๋ก ํ–ˆ๋‹ค.

๐Ÿ”ฅ RSS xml ์„ ๋ฐ˜ํ™˜ํ•˜๋Š” API route ์ถ”๊ฐ€

๋ญ.. ๋‚ด ๋ธ”๋กœ๊ทธ๋ฅผ RSS ๋ฆฌ๋”์— ๋„ฃ๊ณ  ์ฑ™๊ฒจ๋ณผ ์‚ฌ๋žŒ์€ ์—†๊ฒ ์ง€๋งŒ ์‹ฌ์‹ฌํ•ด์„œ ๋„ฃ์–ด๋ด„.


์ผ๋‹จ ๊ธฐ๋ณธ์ ์ธ๊ฒƒ๋งŒ ๊ฐ–์ถ”์–ด ๋‘๊ณ , ์ถ”ํ›„ ์ ์ง„์ ์œผ๋กœ ๊ฐœ์„ ํ•ด ๋‚˜๊ฐˆ ์˜ˆ์ •!

Slow But Steady ยฉ 2024