- Hvem er jeg?
- Kristian
- KomTek 4. klasse
- Hvorfor snakke om Svelte?
commit b9129dfedbda60305e5643b97ad558fd0b2e2ead
Author: Kristian <[email protected]>
Date: Thu Mar 4 03:27:28 2021 +0100
init
- Hva er Svelte
- Hva er Sapper
- Hvorfor bry seg om performance?
- Et par eksempler
- Nok kunnskap til å starte et nytt prosjekt
adjective /svelt/
attractively thin, graceful and stylish
- Enklere kode
- Mindre boilerplate
- Raskt og ressurseffektivt
- Ingen Virtual DOM
- Reaktiv oppdatering av variabler
- God støtte for CSS
Typisk Svelte komponent:
Legg merke til:
- Enkel HTML kode
- Reaktiv:
- Ingen states, hooks eller andre unødvendige wrappers
- Ingen update funksjoner, binder til native HTML element
import React, { useState } from 'react';
export default () => {
const [a, setA] = useState(1);
const [b, setB] = useState(2);
function handleChangeA(event) {
setA(+event.target.value);
}
function handleChangeB(event) {
setB(+event.target.value);
}
return (
<div>
<input type="number" value={a} onChange={handleChangeA}/>
<input type="number" value={b} onChange={handleChangeB}/>
<p>{a} + {b} = {a + b}</p>
</div>
);
};
Jeeez, så mye boilerplate!
<template>
<div>
<input type="number" v-model.number="a">
<input type="number" v-model.number="b">
<p>{{a}} + {{b}} = {{a + b}}</p>
</div>
</template>
<script>
export default {
data: function() {
return {
a: 1,
b: 2
};
}
};
</script>
React | 442 |
Vue | 263 |
Svelte | 145 |
| Generel basis: Svelte 40% mindre code enn React
Gjør det rett i samme komponent!
Untak:
- shouldComponentUpdate
- React.PureComponent
- useMemo
- useCallback
^ Dette burde jo være jobben til kompilatoren
^ Lett å gjøre feil
- React setState (gammel)
- React UseState (ny)
Vue:
data: () => ({count: 0})
this.count += 1
Under-the-hood skjer det en del magi her i runtime.
Dette er dessverre regler for javascript 😕
Men svelte bryr seg ikke! Svelte er en compiler tross alt!
https://rethinking-reactivity.surge.sh/#slide=24
https://rethinking-reactivity.surge.sh/#slide=25
- React: Next.js, Gatsby
Eksempel prosjekt:
https://github.com/kristianvld/abakusrevyen-streamsite
<h1>Hello World!</h1>
Server -> Browser -> DOM
const h1 = document.createElement('h1');
h1.innerText = 'Hello World!';
document.body.appendChild(h1);
Server -> Browser -> Javascript Engine -> DOM
# For Rollup
npx degit "sveltejs/sapper-template#rollup" my-app
# For webpack
npx degit "sveltejs/sapper-template#webpack" my-app
cd my-app
npm install
npm run dev
# Åpne http://localhost:3000
- Abakus Discord:
Kristian in't Veld
- Eller still spørsmål i
#koseprogg
Slides og eksempel prosjekt finnes her:
https://github.com/kristianvld/svelte-wtf