📖 Scenario: You are learning about modern web development frameworks. You want to understand why Svelte was created and what problem it solves compared to other frameworks.
🎯 Goal: Build a simple Svelte component that explains why Svelte exists by showing a short message on the page.
📋 What You'll Learn
Create a Svelte component with a message variable
Add a configuration variable to control message visibility
Use Svelte's reactive syntax to show or hide the message
Complete the component with semantic HTML and accessibility
💡 Why This Matters
🌍 Real World
Understanding why Svelte exists helps you appreciate its design choices and how it improves web app performance and simplicity.
💼 Career
Knowing the motivation behind frameworks like Svelte is useful for frontend developers to choose the right tools and explain their choices to teams or clients.
Progress0 / 4 steps
1
DATA SETUP: Create a message variable
Create a Svelte component and declare a variable called message with the exact text: "Svelte exists to make web apps faster and simpler."
Svelte
Hint
Use let message = "..."; inside the <script> tag.
2
CONFIGURATION: Add a visibility flag
Add a boolean variable called showMessage and set it to true inside the <script> tag.
Svelte
Hint
Declare let showMessage = true; inside the <script> tag.
3
CORE LOGIC: Use Svelte's if block to show the message
Use Svelte's {#if showMessage} block to display the message inside a <p> tag only when showMessage is true.
Svelte
Hint
Wrap the <p> tag with {#if showMessage} and {/if}.
4
COMPLETION: Add semantic and accessible HTML
Wrap the message inside a <main> tag and add an aria-label attribute with the value "Why Svelte exists message" to the <main> tag.
Svelte
Hint
Use a <main> tag with aria-label="Why Svelte exists message" wrapping the if block.
Practice
(1/5)
1. Why does Svelte exist as a framework for building web apps?
easy
A. To force developers to write more complex code
B. To add more runtime code for better animations
C. To compile code ahead of time and reduce browser work
D. To replace HTML with a new markup language
Solution
Step 1: Understand Svelte's main goal
Svelte compiles your app code before it runs in the browser, reducing the work the browser must do.
Step 2: Compare options to this goal
Only To compile code ahead of time and reduce browser work describes compiling ahead of time to reduce browser work, which matches Svelte's purpose.
Final Answer:
To compile code ahead of time and reduce browser work -> Option C
Quick Check:
Compile ahead = less browser work [OK]
Hint: Remember Svelte compiles before running, not during runtime [OK]
Common Mistakes:
Thinking Svelte adds more runtime code
Believing Svelte changes HTML syntax
Assuming Svelte makes code more complex
2. Which of the following is the correct way to start a Svelte component file?
easy
A.
B. function Component() { return
Hello
; }
C. class Component extends React.Component {}
D.
Hello
Solution
Step 1: Identify Svelte component syntax
Svelte components use a <script> tag to declare variables and logic.
Step 2: Check options for Svelte style
<script> export let name; </script> uses <script> with export let, which is correct Svelte syntax. Others are React or Vue syntax.
Final Answer:
<script> export let name; </script> -> Option A
Quick Check:
Svelte uses <script> with export let [OK]
Hint: Svelte components start with <script> tag, not functions or templates [OK]
Common Mistakes:
Using React or Vue syntax in Svelte files
Forgetting to export props with 'export let'
Trying to use class components in Svelte
3. Given this Svelte code, what will be shown in the browser?
<script>
let count = 0;
function increment() {
count += 1;
}
</script>
<button on:click={increment}>Clicked {count} times</button>
medium
A. A button showing 'Clicked 1 times' initially
B. A button that does not update the count when clicked
C. A syntax error because on:click is invalid
D. A button showing 'Clicked 0 times' that updates count on each click
Solution
Step 1: Understand the initial state and event
The count starts at 0. The button shows 'Clicked {count} times'. Clicking triggers increment() which adds 1 to count.
Step 2: Predict behavior on clicks
Initially, the button shows 'Clicked 0 times'. Each click increases count and updates the text.
Final Answer:
A button showing 'Clicked 0 times' that updates count on each click -> Option D
Quick Check:
Initial count 0, updates on click [OK]
Hint: Remember Svelte updates UI reactively when variables change [OK]
Common Mistakes:
Thinking on:click is invalid syntax
Assuming count starts at 1
Believing the button text won't update
4. What is wrong with this Svelte code snippet?
<script>
let name = 'Alice'
function greet() {
alert('Hello ' + name)
}
</script>
<button on:click={greet} >Greet</button>
medium
A. No error; code works as expected
B. The alert function is not allowed in Svelte
C. Missing semicolon after let name declaration
D. The on:click event handler syntax is incorrect
Solution
Step 1: Check JavaScript syntax in Svelte
JavaScript semicolons are optional; missing semicolon is not an error here.
Step 2: Verify event handler and alert usage
on:click={greet} is correct Svelte syntax. alert() is valid JavaScript and works in Svelte.
Final Answer:
No error; code works as expected -> Option A
Quick Check:
Optional semicolons and valid event syntax [OK]
Hint: JS semicolons optional; on:click syntax is correct [OK]
Common Mistakes:
Thinking missing semicolon causes error
Believing alert is disallowed in Svelte
Confusing event handler syntax with React
5. How does Svelte improve performance compared to frameworks like React or Vue?
hard
A. By running all code on the server instead of the browser
B. By compiling components to efficient JavaScript at build time, reducing runtime overhead
C. By using a virtual DOM to minimize updates
D. By requiring developers to write manual DOM updates
Solution
Step 1: Understand Svelte's compilation approach
Svelte compiles components into minimal JavaScript during build, so the browser does less work at runtime.
Step 2: Compare with other frameworks
React and Vue use virtual DOM at runtime, adding overhead. Svelte avoids this by compiling ahead.
Final Answer:
By compiling components to efficient JavaScript at build time, reducing runtime overhead -> Option B
Quick Check:
Compile time optimization = better performance [OK]
Hint: Svelte compiles ahead, no virtual DOM overhead [OK]
Common Mistakes:
Confusing Svelte with server-side rendering only
Thinking Svelte uses virtual DOM
Believing manual DOM updates are required
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.