DEV Community

V Sai Harsha
V Sai Harsha

Posted on • Edited on

7

Svelte.js Cheatsheet

Svelte.js is a modern JavaScript framework that simplifies web development by compiling components at build time rather than running them in the browser. This cheatsheet provides a quick reference to key concepts and features in Svelte.js for developers at beginner and intermediate levels.

Getting Started

Installation

To start using Svelte.js, you need to set up a development environment. You can create a new Svelte project using the official template:

npm create svelte@latest myapp
cd myapp
npm install
npm run dev
Enter fullscreen mode Exit fullscreen mode

Svelte Components

Svelte applications are built using components. Each component is defined in a .svelte file and encapsulates its HTML, CSS, and JavaScript logic.

<!-- HelloWorld.svelte -->
<script>
  let name = 'Svelte';
</script>

<h1>Hello, {name}!</h1>

<style>
  h1 {
    color: blue;
  }
</style>
Enter fullscreen mode Exit fullscreen mode

Data Binding

Variables

You can declare and use variables in your Svelte components. Variable updates automatically trigger reactivity.

<script>
  let count = 0;
</script>

<button on:click={() => count += 1}>Increment</button>
<p>Count: {count}</p>
Enter fullscreen mode Exit fullscreen mode

Two-Way Binding

You can achieve two-way binding using the bind directive:

<script>
  let name = 'Svelte';
</script>

<input bind:value={name} />
<p>Your name is: {name}</p>
Enter fullscreen mode Exit fullscreen mode

Conditionals and Loops

Conditional Rendering

You can conditionally render elements using {#if} and {:else}:

{#if loggedIn}
  <p>Welcome, {user.name}!</p>
{:else}
  <p>Please log in.</p>
{/if}
Enter fullscreen mode Exit fullscreen mode

List Rendering

You can loop through arrays using {#each}:

<ul>
  {#each items as item}
    <li>{item}</li>
  {/each}
</ul>
Enter fullscreen mode Exit fullscreen mode

Events and Event Handling

Event Listeners

You can listen for DOM events and handle them with functions:

<button on:click={handleClick}>Click Me</button>

<script>
  function handleClick() {
    alert('Button clicked!');
  }
</script>
Enter fullscreen mode Exit fullscreen mode

Event Modifiers

Svelte provides event modifiers like preventDefault and stopPropagation:

<a href="/example" on:click|preventDefault={handleClick}>
  Clicking this link won't navigate.
</a>
Enter fullscreen mode Exit fullscreen mode

Component Communication

Props

You can pass data from parent to child components using props:

<!-- Parent.svelte -->
<script>
  let message = 'Hello from Parent!';
</script>

<Child message={message} />

<!-- Child.svelte -->
<script>
  export let message;
</script>

<p>{message}</p>
Enter fullscreen mode Exit fullscreen mode

Custom Events

Child components can communicate with parents using custom events:

<!-- Child.svelte -->
<script>
  import { createEventDispatcher } from 'svelte';

  const dispatch = createEventDispatcher();

  function notifyParent() {
    dispatch('customEvent', 'Data from Child');
  }
</script>

<button on:click={notifyParent}>Notify Parent</button>
Enter fullscreen mode Exit fullscreen mode
<!-- Parent.svelte -->
<script>
  let dataFromChild = '';

  function handleCustomEvent(event) {
    dataFromChild = event.detail;
  }
</script>

<Child on:customEvent={handleCustomEvent} />
<p>Data from Child: {dataFromChild}</p>
Enter fullscreen mode Exit fullscreen mode

Lifecycle Methods

Svelte components have lifecycle methods like onMount, beforeUpdate, and afterUpdate:

<script>
  import { onMount } from 'svelte';

  onMount(() => {
    console.log('Component mounted');
  });
</script>
Enter fullscreen mode Exit fullscreen mode

Stores

Svelte provides stores for shared state management:

<script>
  import { writable } from 'svelte/store';

  const count = writable(0);

  function increment() {
    $count += 1;
  }
</script>

<button on:click={increment}>Increment</button>
<p>Count: {$count}</p>
Enter fullscreen mode Exit fullscreen mode

Routing

You can implement client-side routing in Svelte using libraries like svelte-routing.

CSS

Svelte supports scoped styles using <style> blocks within components.

Dev Tools

Svelte has a browser extension for debugging and inspecting components.

Conclusion

Svelte.js offers a straightforward and efficient way to build web applications with a focus on reactivity and simplicity. This cheatsheet covers essential concepts and features to help beginners and intermediate developers get started with Svelte development.

Estimated Reading Time: 6 minutes

AWS GenAI LIVE image

How is generative AI increasing efficiency?

Join AWS GenAI LIVE! to find out how gen AI is reshaping productivity, streamlining processes, and driving innovation.

Learn more

Top comments (0)

nextjs tutorial video

Youtube Tutorial Series 📺

So you built a Next.js app, but you need a clear view of the entire operation flow to be able to identify performance bottlenecks before you launch. But how do you get started? Get the essentials on tracing for Next.js from @nikolovlazar in this video series 👀

Watch the Youtube series

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay