GitHub SvelteJS du cours
Documentation Svelte
<script>
// Variables
let name = 'Yann';
let color ="cyan";
let isUpper = false;
$: upper = "Hello "+name +"!";
$: txtFinal = isUpper ? upper.toUpperCase() : upper;
</script>
<h1>Hello {name}!</h1>
<label for="name">Name</label>
<input id="name" name="name" bind:value={name}/>
<label for="color">color</label>
<input type="color" name="color" id="color" bind:value={color} />
<br>
<!-- checkbox to enable uppercases -->
<input type="checkbox" name="upper" id="upper" bind:checked={isUpper}/> Uppercase
<!-- h1 modifying -->
<h1 style="color:{color}">
{isUpper ? upper.toUpperCase() : upper}
</h1>
<!-- same shit but with variable -->
<h1 style="color:{color}">
{txtFinal}
</h1>
<!-- say the choosed color & say if uppercase is enabled -->
<p>
La couleur choisie est {color}, la case à cocher est sur {isUpper}
</p>
let : private
var : public
type="color"
= mettre un selecteur de couleur
bind:value={name}
= modifier une variable
on peux mettre und bind d'une value pour assigner une valeur à l'élément de la page
une variable qui se modifie en fonction d'une autre variable
$: area = pi * radius * radius;
$: perimeter = 2 * pi * radius;
importer un composant peut se révéler utile pour modifier le contenu d'une page par exemple. Tout se trouve dans un autre fichier.
import Clock from "./Clock.svelte";
use the component :
<Clock />
Le code suivant s'exécute chaque 1000ms soit chaque secondes
// imports and exports for components
export let color = "blue";
// variables
let time = new Date();
$: hours = time.getHours();
$: minutes = time.getMinutes();
$: seconds = time.getSeconds();
// each 1s
setInterval(() => {
time = new Date().toLocaleTimeString();
}, 1000);
Le onMount comme sur la doc n'est pas nécessaire
/routes/clock/+page.svelte
il suffit de créer un dossier dans routes avec un fichier +page.svelte à l'intérieur. Puis de modifier l'url avec /clock par exemple.
notes anexes : petite feuille #1
app.html = ne pas toucher, d'autre pages permettent de modifier le contenu d'un div qui se trouve dans le body, qui lui même est dans le app.html.
javascript
let i = 0;
function incrementCounter() {
++i;
console.log("la valeur du compteur est de : " + i);
}
html
<br/>
<h1> Compteur de clicks </h1>
<button on:click={incrementCounter}>Cliquez</button>
<p> nombre de clicks sur le bouton : {i}</p>
$lib clock folder
<script>
export let color = "blue";
let time = "";
setInterval(() => {
time = new Date().toLocaleTimeString();
}, 1000);
</script>
<p style="color:{color}">Il est {time}</p>
<style>
p {
font-family: 'Courier New', Courier, monospace;
font-size: 40px;
}
</style>
if / else with svelte
{#if}
<h1> hello world </h1>
{:else}
<h1> hellou werld </h1>
{/if}
exemple >
JAVSCRIPT
{#if size > 0} // size is a variable defined higher in the page.
// some html code
{:else}
// another html code
{/if }
{product.description}
{product.price} CHF
{/each}{user.email}
{/each} ```+page.js - shop
```js
export async function load({fetch}) {
const fetchProducts = async () => {
const res = await fetch('https://dummyjson.com/products?limit=10');
const productsData = await res.json();
return productsData.products
}
const fetchUsers = async () => {
const res = await fetch('https://dummyjson.com/users?limit=10');
const usersData = await res.json();
return usersData.users
}
return { products : fetchProducts(), users : fetchUsers() }
}