Sveltekit
Getting started Link to heading
Create a new project Make sure node 18+ is installed.
npm create svelte@latest
At the prompt select:
Skeleton projectTypescript syntax- We can then select the option to install Eslint, Prettier, Playwrite and Vite.
Install the dependancies:
npm i
To run the application
npm run dev
Application Structure Link to heading
vite.config.ts contains the build configuration
svelte.config.ts contains the svelte configuration, this can be extended to deploy to numerous different environments.
static contains all the static assets for the project such as images, fonts and other assets.
src containst the source
The start page of the project is app.html
In the src folder create a lib folder, this will be accesible using the shorthand $lib through the application. We can place components and utilities in the folder and have a shorthand way to reference them.
Extensions Link to heading
Install the Svelte for VS Code extension. This has the ability to generate boiler plate pages, right click on a folder to access it though the context menu or bring up the command pallete and type sveltekit
## Routes
Sveltekit uses folder based routing, the url is determined by the folder structure.
Folders can be be:
- static -
hellowould route towww.mysite.com/hello - dynamic -
[username]svelte sees the variableusernameas a route parameter. We could use the codeparams.username = 'Bob'and Svelte would have the url route towww.mysite.com/bob
Page Types Link to heading
There are 4 types of files in svelte and each of these files can end with .svelte, .server.ts and .ts.
By default the first page load is rendered on the server, any navigation or updates after that will be handled by the client.
Page Link to heading
The building blocks of svelte
+page.svelte
- Used for: building UI
- Runs on: client & server
+page.ts
- Used for: data fetching
- Runs on: client & server
+page.server.ts
- Used for: data fetching
- Runs on: server ONLY
Layout Link to heading
UI can be shared across child routes
+layout.svelte
- Used for: building UI
- Runs on: client & server
+layout.ts
- Used for: data fetching
- Runs on: client & server
+layout.server.ts
- Used for: data fetching
- Runs on: server ONLY
Server Link to heading
+server.ts
- Used for: API routes
- Runs on: server ONLY
Error Link to heading
Error message for a page when data fetching fails
+error.svelte
- Used for: API routes
- Runs on: server ONLY