, 17 tweets, 9 min read
Always wanted to check out @sveltejs (aka. "the next big thing in web dev") but never got time for it? ⏰

🔥 I've got a 10-tweet crash course for you! 👇

(Spoiler alert: Svelte is so intuitive and easy to use that you may feel like you already know it! 🥳)

#javascript #svelte
1/10
How Svelte works:

- Compiler: Doesn't ship a Svelte "library" to users, but build-time optimized plain JS
- Components: App is made up of composable UI elements
- Reactive: Event/User interaction triggers chain of state changes, autoupdating components throughout entire app
2/10
UI is a component tree. A component defines how your app should interpret some abstract "state" values, so that it can turn them into DOM elements in your browser, and ultimately pixels on your screen.
3/10
Each .svelte file contains a single component, consisting of 3 parts:

- <script> is component logic in JS
- <style> is CSS styling, scoped and applied to only the current component
- Svelte template, based on HTML but can use custom components and inline logic (like JSX)
4/10
The Svelte template allows us to use our own custom components in addition to HTML elements. The `.svelte` file extension is optional if there's no ambiguity, but the first letter of a custom component MUST be in uppercase.

We can use JS expressions inside curly braces { }.
5/10
A common way to "control" how a child component behaves is to pass data into it as props (properties).

To accept a prop, expose a variable with `export`. It's important to use `let` because `const` is not reassignable.

Setting a prop is just like doing normal HTML.
6/10
User actions trigger events. `on:` lets us listen to events and fire functions to update states. State changes will auto-update the UI.

Data generally flows from a parent to a child, but we can use `bind:` to simplify the state-update logic by allowing two-way data flow.
7/10
"Reactive statements" are those marked by `$:`

Svelte analyzes which variables they depend on. When any of those dependencies changes, the corresponding reactive statements will be rerun. Very useful for declaring derived states, or triggering "side effects".
8/10
A reactive "store" makes it easy to share states across many components. It can exist in a separate JS file. To create a store, just wrap `writable` around a value.

In a component, we prefix store names with a `$` in order to directly use or update them. Compiler magic!
9/10
We can conditionally render elements with Svelte's template via {#if} and optionally {:else}.

To render everything in a list, we have {#each}.

Remember to always close a block with {/if} or {/each}!

(Should've used <ol> in the example, but I wanted to show index access.)
10/10
It's super easy to do asynchronous stuff like API requests with Svelte.

We can simply {#await} a Promise to resolve, displaying a "loading" placeholder before the result is ready.

Note that we await the Promise in the template section, so no `await` keyword in <script>.
BONUS/10
Svelte comes with neat animated transitions built-in. Try giving your components a `transition:fly` property! There're also other types like fade, slide etc. You can use also `in:` `out:` to separately define intro/outros.

Attached to the transition prop are the params.
👆 That's it - everything you need to get started with @sveltejs. 😁

Have fun! 🥳

(Thread crash course format inspired by @chrisachard 😁)
I made a mistake here 🙈 It should be `bind:value` instead of `bind:input`. Sorry! 🙈🙈

Corrected pic 👇
Missing some Tweet in this thread? You can try to force a refresh.

Enjoying this thread?

Keep Current with Xiaoru Li || Leo

Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

Twitter may remove this content at anytime, convert it as a PDF, save and print for later use!

Try unrolling a thread yourself!

how to unroll video

1) Follow Thread Reader App on Twitter so you can easily mention us!

2) Go to a Twitter thread (series of Tweets by the same owner) and mention us with a keyword "unroll" @threadreaderapp unroll

You can practice here first or read more on our help page!

Follow Us on Twitter!

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just three indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3.00/month or $30.00/year) and get exclusive features!

Become Premium

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal Become our Patreon

Thank you for your support!