SvelteKit nous permet donc de travailler sur le serveur. Mais cela peut se révéler dangereux.
Fichiers de serveur
Le code qui s'exécute sur le serveur est souvent du code sensible. Il permet notamment de lire les
fichiers se trouvant sur votre serveur, et donc d'accéder à votre base de données, ainsi que vos
différents tokens d'accès, qui ne doivent jamais être accessibles sur le client.
SvelteKit vous aide à protéger ces informations, en vous permettant de créer des fichiers qui ne
pourront pas être importés dans du code devant être exécuté sur le client.
Ces fichiers protégés sont :
tous les fichiers se trouvant dans le dossier $lib/server/
tous les les fichiers se terminant par .server.ts
Stores et serveur (supprimer ?)
Nous sommes capables de créer des stores (des états globaux) grâce à la rune $state. Ceci est
pratique car cela permet de partager de l'état au travers d'une application. Mais cela peut s'avérer
problématique.
En effet, mettre à jour la valeur d'un store sur le serveur va rendre cette valeur accessible
potentiellement par tous les clients se connectant au serveur. Or les fichiers .svelte de page
étant construits sur le serveur avant d'être envoyés au client (c'est ce qu'on appelle le SSR), il
est très facile de créer un store accessible sur le serveur sans s'en rendre compte.
De manière générale, les stores devraient se cantonner à des données non sensibles et uniquement
mises à jour sur le client, n'ayant pas d'incidence sur le serveur.
Nous détaillerons plus tard pourquoi les stores peuvent
être problématiques.
Vous pouvez bien sûr tout à fait utiliser des stores sur le serveur, mais en sachant ce que vous
faites.