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 ou clés 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 fichiers se terminant par .server.ts
Stores et serveur
Nous sommes capables de créer 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 état global 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 état global accessible sur le serveur sans s'en rendre compte.
De manière générale, les états globaux 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 états
globaux sur le serveur peuvent être problématiques.
Vous pouvez bien sûr tout à fait utiliser des état globaux sur le serveur, mais en sachant ce que
vous faites.