Quickstarters
Comment créer un frontend Solid.js et le connecter à un backend
34 min
dans ce guide, vous allez créer une application de liste de tâches en utilisant solid js et la connecter à un backend robuste alimenté par back4app ce tutoriel est conçu comme un point de départ idéal car il couvre les opérations crud fondamentales (créer, lire, mettre à jour, supprimer) et vous guide dans la conception d'une interface utilisateur claire et fonctionnelle à la fin, vous aurez une application entièrement opérationnelle qui démontre comment intégrer un service backend géré tout en utilisant solid js pour un frontend réactif développer une application full stack peut être difficile en raison des complexités liées à la configuration d'un backend, à la gestion d'une base de données, à la gestion de l'authentification et au déploiement de l'infrastructure pour simplifier ce processus, nous utilisons back4app, qui offre une solution évolutive de backend as a service (baas) , vous permettant de vous concentrer sur la création de votre frontend pendant qu'il gère l'hébergement, les bases de données et les api back4app fournit des services backend complets, y compris une base de données prête à l'emploi, l'authentification, le cloud code pour la logique côté serveur, et des sdk pour une intégration fluide il prend également en charge les déploiements conteneurisés, ce qui en fait un choix flexible pour l'hébergement d'applications full stack avec ces outils, vous pouvez rapidement développer et déployer des applications sans vous soucier de la maintenance des serveurs principaux enseignements en suivant ce tutoriel, vous apprendrez à initialiser un projet solid js moderne en utilisant vite intégrer sans effort un service backend pour gérer les données de votre application mettre en œuvre des opérations crud essentielles pour une interface utilisateur dynamique et interactive déployer une application liste de tâches entièrement fonctionnelle en utilisant des workflows conteneurisés sur back4app prérequis assurez vous d'avoir ces outils et compétences avant de commencer node js et npm installez node js (lts recommandé) depuis nodejs org https //nodejs org/ et vérifiez en exécutant node v et npm v dans votre terminal connaissances de base en solid js une familiarité avec les composants, les signaux réactifs (en utilisant createsignal ), et la syntaxe jsx est requise si vous êtes nouveau dans solid js, envisagez de revoir d'abord ses fondamentaux un compte back4app inscrivez vous sur back4app https //www back4app com/ pour configurer et gérer vos services backend avec ces prérequis en place, vous êtes prêt à configurer votre projet et à commencer à construire configuration du projet commencez par configurer votre environnement de développement local et initialiser votre projet solid js en utilisant vite pour une expérience de développement rapide vérifiez que node js (version lts) est installé sur votre machine si nécessaire, téléchargez et installez le depuis nodejs org https //nodejs org/ confirmez l'installation node v npm v initialisez votre projet solid js en utilisant vite exécutez la commande suivante dans votre terminal (remplacez todo app par le nom de votre projet souhaité) npm create vite\@latest todo app template solid changez de répertoire vers votre projet cd todo app installez toutes les dépendances nécessaires npm install démarrez le serveur de développement pour confirmer votre configuration npm run dev votre application solid js devrait maintenant fonctionner localement ouvrez l'url affichée dans votre navigateur pour vérifier ensuite, vous allez configurer votre backend sur back4app pour gérer le stockage des données et les interactions api création du backend todo back4app propose un service backend entièrement géré alimenté par parse , offrant une base de données nosql, une authentification, du cloud code et des api auto générées dès le départ cette section vous guide à travers la création d'un task modèle de données pour stocker vos éléments de liste de tâches et le lier à votre frontend solid js configuration de votre application backend connectez vous à votre tableau de bord back4app https //www back4app com/ et cliquez sur "créer une nouvelle application " nommez votre application (par exemple, todosolidapp ) et choisissez nodejs/parse comme type de backend une fois l'application créée, naviguez vers "base de données" > "navigateur" cliquez sur "créer une classe" et sélectionnez "personnalisé" nommez la classe task et définissez les permissions de niveau de classe pour permettre la lecture et l'écriture publiques (vous pouvez restreindre ces paramètres plus tard) dans la task classe, ajoutez les champs suivants titre (string) – le titre de la tâche description (string) – détails de la tâche terminé (boolean) – statut indiquant si la tâche est terminée datelimite (date) – date limite pour la tâche cliquez sur "enregistrer" pour finaliser votre schéma intégrer back4app avec solid js intégrez back4app dans votre projet solid js en utilisant le parse javascript sdk pour communiquer avec votre backend installez le sdk via npm npm install parse configurez le sdk en l'initialisant avec votre application id et javascript key récupérez les depuis votre tableau de bord back4app sous app settings > security & keys dans votre src/index jsx (ou fichier d'entrée équivalent), importez et configurez parse comme suit import { render } from "solid js/web"; import ' /index css' import app from " /app"; import parse from "parse/dist/parse min js"; const parse app id = 'your application id'; const parse js key = 'your javascript key'; const parse server url = 'https //parseapi back4app com/'; parse initialize(parse app id, parse js key); parse serverurl = parse server url; render(() => \<app />, document getelementbyid("root")); avec le backend configuré, vous êtes prêt à construire l'interface utilisateur de la liste de tâches dans solid js et à implémenter des opérations crud développer le frontend avec solid js maintenant que votre backend est connecté, construisez l'interface utilisateur de votre application de liste de tâches en utilisant solid js vous créerez des composants pour ajouter, afficher, mettre à jour et supprimer des tâches tout en gérant l'état avec des signaux réactifs organiser vos composants votre application se composera de ces composants clés taskform jsx – gère l'ajout de nouvelles tâches tasklist jsx – affiche toutes les tâches et offre des contrôles pour les compléter ou les supprimer taskitem jsx – représente une tâche individuelle avec des actions pour marquer comme complétée ou supprimer créez un components dossier à l'intérieur de src et ajoutez ces fichiers mkdir src/components touch src/components/taskform jsx src/components/tasklist jsx src/components/taskitem jsx gestion de l'état avec solid js utilisez createsignal et createeffect de solid js pour la gestion de l'état et les effets secondaires commencez par configurer l'état dans app jsx import { createsignal, onmount } from "solid js"; import taskform from " /components/taskform"; import tasklist from " /components/tasklist"; import parse from "parse/dist/parse min js"; function app() { const \[tasks, settasks] = createsignal(\[]); const fetchtasks = async () => { try { const task = parse object extend("task"); const query = new parse query(task); const results = await query find(); settasks(results map(task => ({ id task id, task tojson() }))); } catch (error) { console error("error fetching tasks ", error); } }; onmount(fetchtasks); return ( \<div class="container"> \<h1>to do list\</h1> \<taskform fetchtasks={fetchtasks} /> \<tasklist tasks={tasks()} fetchtasks={fetchtasks} /> \</div> ); } export default app; création du composant de formulaire de tâche dans taskform jsx , créez un formulaire contrôlé pour ajouter des tâches gérez les valeurs d'entrée avec createsignal et soumettez les données à back4app import { createsignal } from "solid js"; import parse from "parse/dist/parse min js"; function taskform(props) { const \[title, settitle] = createsignal(""); const \[description, setdescription] = createsignal(""); const handlesubmit = async (e) => { e preventdefault(); try { const task = parse object extend("task"); const task = new task(); task set("title", title()); task set("description", description()); task set("completed", false); await task save(); props fetchtasks(); settitle(""); setdescription(""); } catch (error) { console error("error adding task ", error); } }; return ( \<form onsubmit={handlesubmit}> \<input type="text" placeholder="task title" value={title()} oninput={(e) => settitle(e target value)} required /> \<input type="text" placeholder="description" value={description()} oninput={(e) => setdescription(e target value)} required /> \<button type="submit">add task\</button> \</form> ); } export default taskform; affichage de la liste des tâches dans tasklist jsx , affichez la liste des tâches en utilisant le composant taskitem pour chaque entrée import taskitem from " /taskitem"; function tasklist(props) { return ( \<div> {props tasks length === 0 ? ( \<p>no tasks available\</p> ) ( props tasks map(task => ( \<taskitem key={task id} task={task} fetchtasks={props fetchtasks} /> )) )} \</div> ); } export default tasklist; création du composant task item dans taskitem jsx , configurez des actions pour marquer une tâche comme terminée ou la supprimer import parse from "parse/dist/parse min js"; function taskitem(props) { const handlecomplete = async () => { try { const query = new parse query("task"); const tasktoupdate = await query get(props task id); tasktoupdate set("completed", !props task completed); await tasktoupdate save(); props fetchtasks(); } catch (error) { console error("error updating task ", error); } }; const handledelete = async () => { try { const query = new parse query("task"); const tasktodelete = await query get(props task id); await tasktodelete destroy(); props fetchtasks(); } catch (error) { console error("error deleting task ", error); } }; return ( \<div class={`task item ${props task completed ? "completed" ""}`}> \<h3>{props task title}\</h3> \<p>{props task description}\</p> \<button onclick={handlecomplete}> {props task completed ? "undo" "complete"} \</button> \<button onclick={handledelete}>delete\</button> \</div> ); } export default taskitem; styliser votre application ajoutez les styles suivants dans le index css fichier dans le src dossier / center the content and add spacing / container { max width 600px; margin 40px auto; padding 0 20px; text align center; font family sans serif; } container h1 { margin bottom 20px; } form { display flex; flex direction column; align items center; gap 10px; margin bottom 20px; } form input\[type="text"] { width 80%; max width 400px; padding 8px; box sizing border box; font size 1rem; } form button { padding 8px 16px; cursor pointer; font size 1rem; border none; background color #eaeaea; transition background color 0 2s ease; } form button\ hover { background color #ccc; } container p { font size 1rem; } task item { display flex; flex direction column; align items center; justify content center; gap 12px; border 1px solid #ccc; border radius 6px; padding 15px; margin 10px 0; background color #fafafa; text align center; transition background color 0 2s ease; } task item completed h3, task item completed p { text decoration line through; color #888; } task item h3 { margin 0; font size 1 1rem; } task item p { margin 0; font size 1rem; } task item button { padding 6px 12px; border none; background color #eaeaea; cursor pointer; font size 0 9rem; } task item button\ hover { background color #ccc; } @media (min width 600px) { task item { flex direction row; } } importez le fichier css dans votre src/index jsx import " /index css"; finaliser l'interface utilisateur votre application de liste de tâches solid js dispose désormais d'un frontend dynamique intégré à back4app et d'un style personnalisé l'application vous permet d'ajouter, d'afficher, de mettre à jour et de supprimer des tâches tout en maintenant une communication efficace entre le frontend et le backend ensuite, vous déploierez votre application solid js en utilisant la plateforme de déploiement web de back4app déploiement du frontend sur la plateforme de déploiement web de back4app le déploiement web de back4app offre un environnement entièrement géré et conteneurisé pour déployer vos applications avec des déploiements basés sur docker, vous pouvez empaqueter votre frontend solid js et le déployer sans effort configurer vite pour la production les applications solid js construites avec vite fonctionnent en mode développement par défaut pour la production, construisez une version statique et servez la avec un serveur web léger comme nginx mettez à jour votre vite config js pour définir le chemin de base approprié import { defineconfig } from 'vite'; import solidplugin from 'vite plugin solid'; export default defineconfig({ plugins \[solidplugin()], base ' /', // ensures correct asset paths in containerized environments }); générez des fichiers prêts pour la production npm run build créer un dockerfile pour votre application créez un dockerfile à la racine du projet pour définir comment votre application est conteneurisée \# use an official lightweight node js image to build the app from node 18 alpine as build workdir /app copy package json package lock json / run npm install copy run npm run build \# use nginx to serve the static files from nginx\ alpine \# copy custom nginx config for spa routing copy nginx conf /etc/nginx/conf d/default conf \# copy built app from build stage copy from=build /app/dist /usr/share/nginx/html expose 80 cmd \["nginx", " g", "daemon off;"] après avoir créé votre dockerfile, configurez nginx pour router correctement les requêtes vers le fichier index html racine de votre application solid js lorsque vous essayez d'accéder directement aux routes pour ce faire, créez un nginx conf dans le répertoire racine de votre projet et collez le bloc de code ci dessous server { listen 80; server name localhost; root /usr/share/nginx/html; index index html; \# gzip settings for better performance gzip on; gzip vary on; gzip min length 10240; gzip proxied expired no cache no store private auth; gzip types text/plain text/css text/xml text/javascript application/x javascript application/xml application/javascript; gzip disable "msie \[1 6]\\ "; \# handle static file requests location \\ (?\ jpg|jpeg|gif|png|ico|svg|woff2|woff|eot|ttf|css|js)$ { expires 30d; add header cache control "public, max age=2592000"; try files $uri =404; } \# redirect all requests to index html for spa routing location / { try files $uri $uri/ /index html; } \# error pages error page 404 /index html; error page 500 502 503 504 /50x html; location = /50x html { root /usr/share/nginx/html; } } tester le conteneur localement avant le déploiement, construisez et testez votre conteneur docker docker build t todo solid frontend exécutez le conteneur docker run p 8080 80 todo solid frontend visitez http //localhost 8080 dans votre navigateur pour confirmer que votre application est servie correctement pousser sur github et déployer via back4app poussez votre projet sur github git init git add git commit m "initial commit for back4app deployment" git branch m main git remote add origin \<your github repository url> git push u origin main ensuite, déployez en utilisant le déploiement web de back4app connectez vous à back4app web deployment https //www back4app com/containers cliquez sur "créer une nouvelle application" , fournissez un nom et sélectionnez dépôt github autorisez back4app à accéder à votre dépôt et sélectionnez le dépôt todo solid choisissez déploiement dockerfile et confirmez les paramètres de construction cliquez sur "déployer" pour commencer le processus de construction surveillance et gestion des déploiements après le déploiement, utilisez le tableau de bord back4app pour voir les journaux pour le débogage surveiller les performances des conteneurs et l'utilisation des ressources déclencher des redéploiements avec de nouveaux commits configurer des domaines personnalisés si désiré tester et déboguer votre application une fois déployée, testez votre application solid js en profondeur vérifiez la connectivité api ouvrez la console de développement du navigateur (f12 → réseau) pour vérifier les appels api lors des opérations de tâche ajouter et récupérer des tâches utilisez l'interface utilisateur pour ajouter des tâches, puis actualisez et confirmez la persistance des données dans le navigateur de base de données de back4app opérations crud testez le marquage des tâches comme complètes et la suppression, en vous assurant que les mises à jour se reflètent dans le backend gérer les cas particuliers validez les entrées de formulaire et simulez des conditions de réseau plus lentes en utilisant les outils de développement du navigateur si des problèmes surviennent, consultez les journaux de back4app ou examinez votre configuration api meilleures pratiques pour utiliser les services back4app améliorez les performances et la sécurité de votre application en optimiser les appels api utilisez des requêtes par lots pour plusieurs opérations et sélectionnez uniquement les champs nécessaires dans les requêtes sécuriser les variables d'environnement stockez les informations d'identification sensibles dans des variables d'environnement avec vite, créez un env fichier vite parse app id=your app id vite parse js key=your js key mise en œuvre de l'auto scaling activer l'auto scaling dans le déploiement web de back4app pour des scénarios de trafic élevé amélioration de la sécurité utiliser les autorisations au niveau de la classe (clp) pour restreindre les modifications de données et configurer les acl si nécessaire exploitation du cloud code décharger la logique complexe vers le cloud code pour améliorer les performances et réduire l'exposition de l'api conclusion vous avez maintenant construit une application de liste de tâches full stack en utilisant solid js pour le frontend et les services backend robustes de back4app ce tutoriel a couvert le parcours depuis l'initialisation d'un projet solid js et l'intégration du sdk parse jusqu'au déploiement de votre application via des workflows conteneurisés sur back4app au fur et à mesure de votre progression, envisagez d'ajouter des fonctionnalités telles que l'authentification avancée des utilisateurs, des mises à jour en temps réel et des intégrations tierces pour améliorer encore votre application pour plus de détails et de support, explorez la documentation de back4app https //www back4app com/docs