Quickstarters
Comment construire une interface Gatsby et la connecter à un backend ?
33 min
dans ce tutoriel, vous allez créer une application de liste de tâches en utilisant gatsby et la connecter à un backend robuste fourni par back4app ce guide est idéal pour ceux qui cherchent à intégrer des opérations crud essentielles (créer, lire, mettre à jour, supprimer) dans un site statique rapide à la fin, vous aurez une application entièrement fonctionnelle qui démontre comment tirer parti des services backend de back4app tout en utilisant gatsby pour un frontend ultra rapide construire une application full stack peut être un défi, avec des complexités telles que la configuration du backend, la gestion de la base de données, l'authentification et le déploiement pour simplifier ce processus, nous utilisons back4app—un solution de backend as a service (baas) évolutive —afin que vous puissiez vous concentrer sur la construction de votre site gatsby pendant qu'il gère l'hébergement, les bases de données et les api back4app offre une suite complète de services backend, y compris une base de données prête à l'emploi, l'authentification, le cloud code pour la logique côté serveur, et des intégrations sdk sans faille son support pour les déploiements conteneurisés en fait une excellente option pour les applications full stack modernes avec ces outils, vous pouvez rapidement développer et déployer des applications sans gérer l'infrastructure serveur principaux enseignements en suivant ce tutoriel, vous apprendrez à initialiser un projet gatsby moderne intégrer un service backend pour gérer les données de votre application mettre en œuvre des opérations crud de base pour une expérience utilisateur interactive déployer une application de liste de tâches fonctionnelle entièrement en utilisant des workflows conteneurisés sur back4app prérequis assurez vous d'avoir ce qui suit avant de commencer node js et npm installez la dernière version lts de node js depuis nodejs org https //nodejs org/ et vérifiez en exécutant node v et npm v dans votre terminal connaissances de base en gatsby une familiarité avec react, graphql et la couche de données de gatsby est attendue si vous êtes nouveau dans gatsby, 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 gatsby vérifiez que node js (version lts) est installé si nécessaire, téléchargez le depuis nodejs org https //nodejs org/ vérifiez votre installation node v npm v créez un nouveau projet gatsby en utilisant le gatsby cli exécutez la commande suivante (remplacez todo app par le nom de votre projet souhaité) npx gatsby new todo app accédez à votre répertoire de projet cd todo app démarrez le serveur de développement pour vérifier la configuration npx gatsby develop votre site gatsby devrait maintenant fonctionner localement ouvrez l'url fournie dans votre navigateur pour confirmer ensuite, vous configurerez votre backend sur back4app pour gérer le stockage des données et les interactions api création du backend todo back4app fournit 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 la sortie de la boîte cette section vous guidera dans la création d'un modèle de données de tâche pour stocker vos éléments à faire et le connecter à votre frontend gatsby 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, todogatsbyapp ) et sélectionnez 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 choisissez "personnalisé" nommez la classe tâche et définissez les permissions de niveau de classe pour permettre la lecture et l'écriture publiques (vous pouvez affiner ces paramètres plus tard) dans la classe tâche , ajoutez les champs suivants titre (string) – le titre de la tâche description (string) – détails sur la tâche terminé (boolean) – indique si la tâche est terminée datelimite (date) – la date limite pour la tâche cliquez sur "enregistrer" pour finaliser votre schéma intégrer back4app avec gatsby intégrez back4app dans votre projet gatsby en utilisant le parse javascript sdk installez le sdk via npm npm install parse configurez le sdk en l'initialisant avec votre id d'application et clé javascript récupérez ces identifiants depuis votre tableau de bord back4app sous paramètres de l'application > sécurité & clés dans votre projet, créez un fichier (par exemple, src/utils/parse config js ) et ajoutez la configuration suivante // src/utils/parse config js 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; export default parse; vous pouvez maintenant importer cette configuration dans vos pages et composants gatsby pour interagir avec votre backend développer le frontend avec gatsby maintenant que votre backend est connecté, construisez l'interface utilisateur de votre application de liste de tâches en utilisant gatsby vous allez créer des pages et des composants pour ajouter, afficher, mettre à jour et supprimer des tâches tout en utilisant react et graphql organiser vos composants votre application comprendra les composants clés suivants taskform js – gère l'ajout de nouvelles tâches tasklist js – affiche toutes les tâches et fournit des contrôles pour marquer les tâches comme complètes ou les supprimer taskitem js – représente une tâche individuelle avec des actions pour basculer l'achèvement ou la supprimer créez un dossier composants à l'intérieur de src et ajoutez ces fichiers mkdir src/components touch src/components/taskform js src/components/tasklist js src/components/taskitem js gérer l'état avec les hooks react utilisez les hooks react ( usestate et useeffect ) pour la gestion de l'état et les effets secondaires dans votre page principale (par exemple, src/pages/index js ), configurez l'état comme suit // src/pages/index js import react, { usestate, useeffect } from "react"; import parse from " /utils/parse config"; import taskform from " /components/taskform"; import tasklist from " /components/tasklist"; const indexpage = () => { const \[tasks, settasks] = usestate(\[]); 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); } }; useeffect(() => { fetchtasks(); }, \[]); return ( \<div classname="container"> \<h1>to do list\</h1> \<taskform fetchtasks={fetchtasks} /> \<tasklist tasks={tasks} fetchtasks={fetchtasks} /> \</div> ); }; export default indexpage; création du composant de formulaire de tâche dans taskform js , créez un formulaire contrôlé pour ajouter des tâches gérez les valeurs d'entrée en utilisant usestate et soumettez les données à back4app // src/components/taskform js import react, { usestate } from "react"; import parse from " /utils/parse config"; const taskform = ({ fetchtasks }) => { const \[title, settitle] = usestate(""); const \[description, setdescription] = usestate(""); 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(); fetchtasks(); settitle(""); setdescription(""); } catch (error) { console error("error adding task ", error); } }; return ( \<form onsubmit={handlesubmit}> \<input type="text" placeholder="task title" value={title} onchange={(e) => settitle(e target value)} required /> \<input type="text" placeholder="description" value={description} onchange={(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 js , affichez la liste des tâches en parcourant le tableau des tâches et en utilisant le taskitem composant // src/components/tasklist js import react from "react"; import taskitem from " /taskitem"; const tasklist = ({ tasks, fetchtasks }) => { return ( \<div> {tasks length === 0 ? ( \<p>no tasks available\</p> ) ( tasks map(task => ( \<taskitem key={task id} task={task} fetchtasks={fetchtasks} /> )) )} \</div> ); }; export default tasklist; création du composant task item dans taskitem js , créez un composant qui vous permet de marquer une tâche comme terminée ou de la supprimer // src/components/taskitem js import react from "react"; import parse from " /utils/parse config"; const taskitem = ({ task, fetchtasks }) => { const handlecomplete = async () => { try { const query = new parse query("task"); const tasktoupdate = await query get(task id); tasktoupdate set("completed", !task completed); await tasktoupdate save(); fetchtasks(); } catch (error) { console error("error updating task ", error); } }; const handledelete = async () => { try { const query = new parse query("task"); const tasktodelete = await query get(task id); await tasktodelete destroy(); fetchtasks(); } catch (error) { console error("error deleting task ", error); } }; return ( \<div classname={`task item ${task completed ? "completed" ""}`}> \<h3>{task title}\</h3> \<p>{task description}\</p> \<button onclick={handlecomplete}> {task completed ? "undo" "complete"} \</button> \<button onclick={handledelete}>delete\</button> \</div> ); }; export default taskitem; styliser votre application créez un styles css fichier dans le src dossier avec un style de base / src/styles css / 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 ce css dans votre mise en page ou page gatsby (par exemple, dans gatsby browser js ) // gatsby browser js import " /src/styles css"; finaliser l'interface utilisateur votre application de liste de tâches gatsby 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 garantissant une communication efficace entre le frontend et le backend ensuite, vous déploierez votre site gatsby 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 back4app offre un environnement entièrement géré et conteneurisé pour héberger vos applications avec des déploiements basés sur docker, vous pouvez empaqueter votre site gatsby et le déployer sans effort configurer gatsby pour la production gatsby génère un site statique par défaut construisez votre site prêt pour la production avec npx gatsby build créer un dockerfile pour votre site avant de créer un dockerfile , créez d'abord un dockerignore dans le répertoire racine de votre projet et ajoutez ces lignes de code git node modules eslint prettier git vscode readme md dockerfile docker compose yml public cache ensuite, créez un docker compose yml pour utiliser les commandes docker compose l'objectif du fichier doit être l'étape de déploiement dans votre dockerfile votre docker compose yml doit contenir les commandes ci dessous version '3' services app image todo app gatsby build context dockerfile dockerfile target deploy ports \ "8000 80" maintenant, créez un dockerfile dans la racine du projet pour conteneuriser votre site gatsby from node 20 as build workdir /usr/src/app copy run npm install run npm run build from nginx 1 18 alpine as deploy workdir /usr/share/nginx/html run rm rf / copy from=build /usr/src/app/public entrypoint \[ "nginx", " g", "daemon off;" ] tester le conteneur localement avant le déploiement, construisez et testez votre conteneur docker docker build t todo gatsby frontend exécutez le conteneur docker run p 8000 80 todo gatsby frontend visitez http //localhost 8000 dans votre navigateur pour vérifier que votre site est servi 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 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 todo gatsby dépôt choisissez déploiement dockerfile et confirmez les paramètres de construction cliquez sur "déployer" pour initier 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épannage surveiller les performances des conteneurs et l'utilisation des ressources déclencher des redéploiements sur de nouveaux commits configurer des domaines personnalisés si nécessaire tester et déboguer votre application une fois déployé, testez soigneusement votre site gatsby vérifiez la connectivité api ouvrez la console de développement de votre 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 pour confirmer la persistance des données dans le navigateur de base de données back4app tester les opérations crud assurez vous que le marquage des tâches comme complètes et la suppression se reflètent correctement dans le backend gérer les cas particuliers validez les entrées de formulaire et simulez des conditions de réseau lent à l'aide des outils de développement si des problèmes surviennent, consultez les journaux de back4app ou vérifiez 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 lot pour plusieurs opérations et interrogez uniquement les champs nécessaires sécuriser les données sensibles stockez les identifiants comme l'id d'application et la clé javascript dans des variables d'environnement avec gatsby, créez un env fichier gatsby parse app id=your app id gatsby parse js key=your js key activation de l'auto scaling activez l'auto scaling dans le déploiement web de back4app pour gérer un trafic élevé amélioration de la sécurité restreindre les autorisations au niveau de la classe (clps) pour contrôler les modifications de données et configurer les acl selon les besoins utilisation du cloud code déchargez la logique complexe vers le cloud code pour de meilleures performances et une exposition réduite de l'api conclusion vous avez maintenant construit une application de liste de tâches full stack en utilisant gatsby pour le frontend et les services backend robustes de back4app ce tutoriel vous a guidé à travers la configuration d'un projet gatsby, l'intégration du sdk parse et le déploiement de votre site en utilisant des workflows conteneurisés sur back4app alors que vous continuez à développer, 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 plus d'informations et de support, référez vous à la documentation de back4app https //www back4app com/docs