Svelteã®å§ãæ¹ â SvelteKitã§ãã±ããææ°ãšåèšã衚瀺ãã
ææ°ãå€ãããšãåèšãå€ãã
- çŸè¡sv CLIã§ç·Žç¿çšãããžã§ã¯ããäœã
- $stateãš$derivedã§ææ°ã»åèšã衚瀺ãã
- åèªã¿èŸŒã¿ã»ããŒããŒãæäœã»ãã«ãã確èªãã
æåã®ç®æšïŒãã¿ã³ã§1æãã3æãžãåèšãå€ãã
ãã±ããã¯1æ150åãšããŸãããã¿ã³ã2åæŒããšãææ°ïŒ3æããåèšïŒ450åãã«ãªãããšããå°ããªããŒãžãäœããŸããè³Œå ¥ã»æ±ºæžã»ããŒã¿ä¿åã¯æ±ããŸããã
Node.jsãšnpmãçšæããç°å¢ã§ãæ¢åã®ãããžã§ã¯ããšã¯å¥ã®ç©ºã®å Žæããå§ããŸããããã§ã¯Node.js 24ç³»ã§ã®ç¢ºèªäŸã§ãã䜿ããã³ãã¬ãŒããèŠæ±ããNode.jsã®ç¯å²ã確èªããŠãã ããã
npx sv create hiyopen-svelte --template minimal --types ts --no-add-ons --install npm
cd hiyopen-svelte
sv create ãæåããäŸåé¢ä¿ãå°å
¥ãããããæ¬¡ã®ãã¡ã€ã«ãç·šéããŸãã察話ãåºãå Žåããç·Žç¿çšã®æ°èŠãã©ã«ããŒãšæå®å
容ã確èªããŠé²ããŸãã
+page.svelteãäžžããšçœ®ãæãã
src/routes/+page.svelte ã«æ¬¡ãä¿åããŸãã
<script lang="ts">
let quantity = $state(1);
let total = $derived(quantity * 150);
</script>
<svelte:head>
<title>ãã±ããã®ææ°</title>
</svelte:head>
<main>
<h1>ãã±ããã®ææ°</h1>
<p>1æ150åã§ãã</p>
<button onclick={() => quantity += 1}>
1æå¢ãã
</button>
<div aria-live="polite">
<p>ææ°ïŒ{quantity}æ</p>
<p>åèšïŒ{total}å</p>
</div>
</main>
<style>
main {
max-width: 32rem;
margin: 2rem auto;
padding: 1rem;
font-family: sans-serif;
line-height: 1.7;
}
button {
padding: .75rem 1rem;
border: 2px solid #24629b;
border-radius: .5rem;
background: #eaf3fc;
color: #2c3e50;
font: inherit;
cursor: pointer;
}
button:focus-visible {
outline: 3px solid #996000;
outline-offset: 3px;
}
</style>
éçºãµãŒããŒãèµ·åããŸãã
npm run dev
衚瀺ãããããŒã«ã«URLãéããŸããæ¢å®ã®5173ã䜿çšäžã®å Žåã¯å¥ã®ããŒãã«ãªãããšããããããã¿ãŒããã«ã®è¡šç€ºã«åãããŸããçµäºã¯ãã®ã¿ãŒããã«ã§Ctrl+Cã§ãã
3ã€ã®ç¢ºèªã§ãç¶æ ãšèšç®ãçè§£ãã
- ååã¯1æã»150åãã
- ãã¿ã³ã2åæŒããš3æã»450åããTabãšEnterã§ãæäœã§ãããã
- åèªã¿èŸŒã¿ã§1æã»150åãžæ»ããã
$state ãææ°ã$derived ãææ°ããæ±ããåèšã§ããåèšã ãå¥ã«æžãæããã®ã§ã¯ãªããèšç®ã®é¢ä¿ã衚ããŸããåèªã¿èŸŒã¿ã§æ»ãã®ã¯ããã®äŸã«æ°žç¶åã®åŠçããªãããã§ãã
Runesã¯SvelteãåŠçããæ§æã§ããä»»æã®æ®éã®JavaScriptãã¡ã€ã«ãžåãèšè¿°ã貌ãã ãã§åããã®ã§ã¯ãããŸãããSvelte 4ã®èª¬æãSvelte 5ã®ã¬ã¬ã·ãŒã¢ãŒãã®èª¬æãšããã®äŸã®æ¹åŒãåºå¥ããŸãããã
ããŒãžã»éšåã»å ¬éãžé²ãé çª
ããŒãžãå¢ãããªããsrc/routes/about/+page.svelte ã /about ã«ãªããŸããå
±éã®ã¬ã€ã¢ãŠã㯠+layout.svelteããµãŒããŒåŽã®ããŒã¿ååŸã¯ +page.server.ts ãªã©ããã¡ã€ã«ã®åœ¹å²ãåãããŠããŸãã
éšåãžåããpropsãTypeScriptã§åãåããšãã¯ãå¿ èŠãªå€ã®åã宣èšããŸããä»åã®æåã®äŸã¯1ãã¡ã€ã«ã§å®çµãããŠããŸãã
<!-- src/lib/Greeting.svelte ã®å°ããªéšåäŸ -->
<script lang="ts">
let { name }: { name: string } = $props();
</script>
<p>ããã«ã¡ã¯ã{name}ããïŒ</p>
ãã®éšåãäœ¿ãæ®µéã§ã¯ãããŒãžåŽã§èªã¿èŸŒã¿ãäŸãã° name="ã²ãã" ãæž¡ããŸãããã¡ã€ã«ãäœã£ãã ãã§ã¯ããŒãžã«è¡šç€ºãããŸããã
å ¬éåã«æ¬¡ãå®è¡ããŸãã
npm run check
npm run build
SvelteKitã®æ¢å®ã®SSRãšããã«ãæã«ããŒãžãäœãprerenderã¯åºå¥ããŸããéçå ¬éã§ã¯å¯Ÿè±¡ããŒãžãäºåçæã§ãããã確ããããµãŒããŒåŠçãå¿ èŠãªãå ¬éå ã«åãã¢ããã¿ãŒãéžã³ãŸãããSvelteãªãå¿ ãJavaScriptãäžèŠããã©ã®å ¬éå ã§ãåãèšå®ã§ç¡æããšã¯èããŸããã
JSã®å€æ°ã颿°ã§è¿·ã£ããJavaScriptå ¥éãããŒãžã®æ§é ãè²ã®ä»ãæ¹ã¯HTML/CSSå ¥éãžæ»ããšããã®äŸã®çè§£ã«ã€ãªãããŸãã
åèè³æ
- Svelte â sv create â çŸè¡CLIãšäœæãªãã·ã§ã³
- Svelte â $state â Runesã®ç¶æ
- Svelte â $derived â ç¶æ ããã®èšç®
- Svelte â $props â å€ã®åãåããšå
- SvelteKit â Routing â ãã¡ã€ã«ãšURLã»ãµãŒããŒã®åœ¹å²
- SvelteKit â Page options â SSRã»prerenderã®åºå¥
- SvelteKit â Adapters â å ¬éç°å¢ã«åããããã«ã