📖 Scenario: You are building a simple website with multiple pages using SvelteKit. You want to use file-based routing to create pages that users can visit by URL.
🎯 Goal: Create a SvelteKit project structure with file-based routing by adding page files in the src/routes folder. Build a homepage and an about page that users can navigate to by URL.
📋 What You'll Learn
Create a src/routes/+page.svelte file for the homepage
Create a src/routes/about/+page.svelte file for the about page
Add simple content in each page to identify it
Use file-based routing conventions of SvelteKit
💡 Why This Matters
🌍 Real World
File-based routing is used in modern web frameworks to simplify creating multiple pages without manual route configuration.
💼 Career
Understanding file-based routing is essential for building scalable web apps with frameworks like SvelteKit, Next.js, or Nuxt.js.
Progress0 / 4 steps
1
Create the homepage file
Create a file called src/routes/+page.svelte with a <h1> heading that says Home Page.
Svelte
Hint
This file defines the homepage content. The filename +page.svelte inside src/routes makes it the root page.
2
Create the about page folder and file
Create a folder called about inside src/routes. Inside it, create a file called +page.svelte with a <h1> heading that says About Page.
Svelte
Hint
Folders inside src/routes create URL paths. The file +page.svelte inside about folder becomes the /about page.
3
Add navigation links to homepage
In src/routes/+page.svelte, add a navigation link to the about page using an <a> tag with href="/about" and link text About below the <h1> heading.
Svelte
Hint
Use a normal anchor tag with href set to /about to link to the about page.
4
Add navigation link back to homepage on about page
In src/routes/about/+page.svelte, add a navigation link back to the homepage using an <a> tag with href="/" and link text Home below the <h1> heading.
Svelte
Hint
Use an anchor tag with href / to link back to the homepage.
Practice
(1/5)
1. What does a +page.svelte file inside src/routes represent in SvelteKit?
easy
A. A page that users can visit via a URL
B. A component that cannot be accessed directly
C. A configuration file for routing
D. A style sheet for the app
Solution
Step 1: Understand the role of +page.svelte
In SvelteKit, +page.svelte files define pages that users can visit through URLs.
Step 2: Connect file location to URL
Files inside src/routes map directly to URL paths, so +page.svelte creates a page at that path.
Final Answer:
A page that users can visit via a URL -> Option A
Quick Check:
File-based routing means files = pages [OK]
Hint: Remember: +page.svelte files become pages [OK]
Common Mistakes:
Thinking +page.svelte is just a component
Confusing routing config with page files
Assuming styles are defined in +page.svelte
2. Which of the following is the correct way to create a dynamic route for a user profile page in SvelteKit?
easy
A. src/routes/user/id/+page.svelte
B. src/routes/user/{id}/+page.svelte
C. src/routes/user/:id/+page.svelte
D. src/routes/user/[id]/+page.svelte
Solution
Step 1: Identify dynamic route syntax in SvelteKit
SvelteKit uses square brackets [param] to define dynamic route parameters.
Step 2: Match the correct folder structure
The folder src/routes/user/[id] captures the id part dynamically for user profiles.
Final Answer:
src/routes/user/[id]/+page.svelte -> Option D
Quick Check:
Dynamic routes use square brackets [OK]
Hint: Use square brackets for dynamic route folders [OK]
Common Mistakes:
Using curly braces or colons instead of square brackets
Placing dynamic parameter in file name instead of folder
What URL will render the blog/[slug]/+page.svelte page when visiting /blog/hello-world?
medium
A. /blog/slug/hello-world
B. /blog/[slug]
C. /blog/hello-world
D. /blog/hello-world/+page
Solution
Step 1: Understand dynamic route matching
The folder blog/[slug] matches any URL starting with /blog/ followed by any value as slug.
Step 2: Match URL to folder structure
The URL /blog/hello-world matches the dynamic route [slug] with slug = 'hello-world'.
Final Answer:
/blog/hello-world -> Option C
Quick Check:
Dynamic folder matches URL part directly [OK]
Hint: Dynamic folders match URL parts exactly [OK]
Common Mistakes:
Confusing literal folder names with dynamic parameters
Expecting the URL to include brackets
Adding extra path segments incorrectly
4. You created a file src/routes/blog/[id].svelte instead of src/routes/blog/[id]/+page.svelte. What will happen when you visit /blog/123?
medium
A. The page will not load; routing fails because the file is misplaced
B. The page loads correctly showing the blog with id 123
C. A syntax error occurs during build
D. The app shows a 404 page
Solution
Step 1: Check correct file placement for routing
SvelteKit requires dynamic routes to be folders with +page.svelte inside, not files named with brackets.
Step 2: Understand routing failure
Placing [id].svelte as a file breaks routing because SvelteKit expects [id] as a folder.
Final Answer:
The page will not load; routing fails because the file is misplaced -> Option A
Quick Check:
Dynamic routes need folders with +page.svelte [OK]
Hint: Dynamic routes must be folders with +page.svelte inside [OK]
Common Mistakes:
Naming dynamic routes as files instead of folders
Expecting SvelteKit to accept bracketed filenames
Ignoring folder structure rules for routing
5. You want to create nested routes for category pages (/shop/electronics) and product pages (/shop/electronics/123) with a dynamic category and product ID. Which folder structure correctly implements this in SvelteKit?
hard
A. src/routes/shop/[category]/[product]/+page.svelte
B. src/routes/shop/[category]/+page.svelte and src/routes/shop/[category]/[product]/+page.svelte
C. src/routes/shop/[category]-[product]/+page.svelte
D. src/routes/shop/+page.svelte with query params for category and product
Solution
Step 1: Understand nested dynamic routes
To handle URLs like /shop/electronics (category) and /shop/electronics/123 (product), you need nested folders: one for [category] and inside it one for [product].
Step 2: Confirm folder structure with pages
Each folder can have its own +page.svelte. So src/routes/shop/[category]/+page.svelte can show category info, and src/routes/shop/[category]/[product]/+page.svelte shows product details.
Final Answer:
src/routes/shop/[category]/+page.svelte and src/routes/shop/[category]/[product]/+page.svelte -> Option B
Quick Check:
Nested folders for nested dynamic routes [OK]
Hint: Use nested folders for nested dynamic routes [OK]
Common Mistakes:
Putting multiple params in one folder name
Using query params instead of folder structure
Not nesting folders for nested routes
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.