Quickstarters
Comment créer un frontend Remix et le connecter à un backend ?
22 min
dans ce tutoriel, vous allez créer une application de liste de tâches en utilisant remix et la connecter à un service backend géré sur back4app ce guide étape par étape est conçu pour vous aider à maîtriser les opérations crud essentielles et à concevoir une interface utilisateur dynamique en utilisant remix construire une application full stack implique de configurer à la fois un frontend et un backend en utilisant back4app, vous pouvez tirer parti d'un backend as a service (baas) évolutif, afin de vous concentrer sur la création d'une expérience utilisateur convaincante sans vous enliser dans la configuration du serveur back4app fournit une base de données prête à l'emploi, une authentification, des fonctions cloud et des sdk pour une intégration transparente avec ces capacités, vous pouvez rapidement prototyper, construire et déployer votre application remix principaux enseignements en suivant ce tutoriel, vous allez initialiser un projet remix moderne en utilisant des outils standard de l'industrie connecter votre frontend remix à un backend back4app en utilisant le sdk parse implémenter des opérations crud pour gérer votre liste de tâches conteneuriser votre application remix et la déployer via le déploiement web de back4app prérequis avant de commencer, assurez vous d'avoir ce qui suit node js et npm installés sur votre système vérifiez en exécutant node v et npm v dans votre terminal connaissances de base en remix , y compris le routage, les chargeurs et les actions une familiarité avec les concepts de react est utile car remix s'appuie sur react un compte back4app pour configurer et gérer vos services backend inscrivez vous sur back4app https //www back4app com/ si vous ne l'avez pas déjà fait avec ces outils à votre disposition, vous êtes prêt à créer votre application remix et à l'intégrer à un backend robuste configuration du projet tout d'abord, configurez votre environnement de développement local et initialisez votre projet remix cela garantira que vous disposez d'une base propre et efficace pour votre application commencez par installer le projet remix en utilisant la commande suivante remplacez todo app par le nom de projet souhaité npx create remix\@latest todo app naviguez dans votre nouveau répertoire de projet cd todo app exécutez le serveur de développement pour vérifier que tout fonctionne npm run dev ouvrez l'url fournie dans votre terminal pour confirmer que votre application remix fonctionne correctement configuration du backend todo sur back4app back4app offre un puissant backend géré alimenté par parse vous créerez un modèle de données pour vos tâches, qui servira de colonne vertébrale pour votre application de liste de tâches créer 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, todoremixapp ) et sélectionnez nodejs/parse comme type de backend dans la section "base de données" > "navigateur" , cliquez sur "créer une classe" et choisissez "personnalisé " nommez la classe tâche et définissez ses autorisations de niveau de classe pour permettre la lecture et l'écriture publiques (vous pouvez affiner ces paramètres plus tard) ajoutez les champs suivants à la classe tâche titre (string) – le nom de la tâche description (string) – détails sur la tâche terminé (boolean) – indique si la tâche est terminée datelimite (date) – date limite pour la tâche cliquez sur "enregistrer" pour finaliser le schéma intégrer back4app avec remix vous utiliserez le sdk javascript parse pour connecter votre application remix à back4app installez le sdk en exécutant npm install parse ensuite, configurez parse dans votre application remix ouvrez le fichier app/root tsx et ajoutez le code d'initialisation suivant en haut remplacez 'your application id' et 'your javascript key' par vos identifiants du tableau de bord back4app (sous app settings > security & keys ) // app/root tsx import parse from "parse"; import react from "react"; 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 as any) serverurl = parse server url; pour vous assurer que parse est entièrement initialisé lorsque votre fonction de chargement s'exécute, en particulier côté serveur ajoutez ce code à votre layout fonction dans le root tsx fichier // app/root tsx export function layout({ children } { children react reactnode }) { react useeffect(() => { if (typeof window !== 'undefined') { parse initialize(parse app id, parse js key); (parse as any) serverurl = "https //parseapi back4app com/"; } }, \[]); // rest of the layout function } cette configuration permet à vos routes et actions remix d'interagir avec votre backend back4app de manière transparente construire le frontend avec remix avec votre backend configuré, vous allez maintenant construire l'interface de la liste de tâches en utilisant remix cela implique de créer des routes, des chargeurs et des actions pour gérer la récupération et les mutations de données structurer vos itinéraires dans remix, chaque itinéraire correspond à un fichier sous le app/routes répertoire ouvrez app/routes/ index tsx et ajoutez le code suivant pour définir la structure de la page et les opérations de données // app/routes/ index tsx import { json, redirect } from "@remix run/node"; import { useloaderdata, form } from "@remix run/react"; import as parse from "parse"; export const loader = async () => { if (typeof window === "undefined") { try { const response = await fetch( "https //parseapi back4app com/classes/task", { headers { "x parse application id" "your application id", "x parse javascript key" "your javascript key", }, } ); const data = await response json(); return json({ tasks data results map((task) => ({ id task objectid, task })), }); } catch (error) { console error("error fetching tasks ", error); return json({ tasks \[] }); } } else { try { const task = parse object extend("task"); const query = new parse query(task); const results = await query find(); const tasks = results map((task) => ({ id task id, task tojson() })); return json({ tasks }); } catch (error) { console error("error fetching tasks ", error); return json({ tasks \[] }); } } }; export const action = async ({ request }) => { const formdata = await request formdata(); const actiontype = formdata get("actiontype"); // parse server details const parseserverurl = "https //parseapi back4app com"; const headers = { "x parse application id" "your application id", "x parse javascript key" "your javascript key", "content type" "application/json", }; try { if (actiontype === "add") { const title = formdata get("title"); const description = formdata get("description"); // create task using rest api const response = await fetch(`${parseserverurl}/classes/task`, { method "post", headers, body json stringify({ title, description, completed false, }), }); if (!response ok) { throw new error(`failed to add task ${response status}`); } } else if (actiontype === "toggle") { const id = formdata get("id"); // first get the current task to check its completed status const getresponse = await fetch(`${parseserverurl}/classes/task/${id}`, { headers, }); if (!getresponse ok) { throw new error(`failed to get task ${getresponse status}`); } const task = await getresponse json(); const updateresponse = await fetch( `${parseserverurl}/classes/task/${id}`, { method "put", headers, body json stringify({ completed !task completed, }), } ); if (!updateresponse ok) { throw new error(`failed to update task ${updateresponse status}`); } } else if (actiontype === "delete") { const id = formdata get("id"); const deleteresponse = await fetch( `${parseserverurl}/classes/task/${id}`, { method "delete", headers, } ); if (!deleteresponse ok) { throw new error(`failed to delete task ${deleteresponse status}`); } } return redirect("/"); } catch (error) { console error("error processing action ", error); return json({ error error message }, { status 400 }); } }; export default function todoroute() { const { tasks } = useloaderdata(); return ( \<div classname="container"> \<h1>to do list\</h1> \<form method="post" classname="form"> \<input type="hidden" name="actiontype" value="add" /> \<input type="text" name="title" placeholder="task title" required /> \<input type="text" name="description" placeholder="description" required /> \<button type="submit">add task\</button> \</form> \<div classname="tasks"> {tasks length === 0 ? ( \<p>no tasks available\</p> ) ( tasks map(task => ( \<div key={task id} classname={`task item ${task completed ? "completed" ""}`}> \<h3>{task title}\</h3> \<p>{task description}\</p> \<form method="post"> \<input type="hidden" name="actiontype" value="toggle" /> \<input type="hidden" name="id" value={task id} /> \<button type="submit">{task completed ? "undo" "complete"}\</button> \</form> \<form method="post"> \<input type="hidden" name="actiontype" value="delete" /> \<input type="hidden" name="id" value={task id} /> \<button type="submit">delete\</button> \</form> \</div> )) )} \</div> \</div> ); } cette route utilise les chargeurs et actions de remix pour récupérer des tâches depuis back4app et gérer les interactions utilisateur telles que l'ajout, le basculement et la suppression de tâches styliser votre application remix créez un fichier css à app/global css pour définir l'apparence de base de votre application / app/global 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; 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; } tasks p { font size 1rem; } task item { display flex; flex direction column; align items 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 app/root tsx en ajoutant // app/root tsx import " /global css"; votre application remix a maintenant une interface de liste de tâches fonctionnelle qui interagit avec le backend de back4app containeriser et déployer votre application remix sur back4app le déploiement web de back4app offre un environnement containerisé pour vos applications vous allez empaqueter votre application remix dans un conteneur docker et la déployer configurer remix pour la production avant de containeriser, construisez votre application remix en un bundle prêt pour la production npm run build création d'un dockerfile créez un dockerfile à la racine de votre projet avec le contenu suivant \# stage 1 build the remix app from node 18 alpine as builder workdir /app copy package json package lock json / run npm install copy run npm run build \# stage 2 serve the app using a lightweight node server from node 18 alpine workdir /app copy from=builder /app/build /build copy from=builder /app/package json / run npm install production expose 3000 cmd \["npm", "run", "start"] ce dockerfile construit votre projet remix et le prépare pour la production en utilisant un runtime node js minimal construction et test de votre conteneur docker construisez votre image docker localement docker build t todo remix frontend exécutez le conteneur pour tester le déploiement docker run p 8080 3000 todo remix frontend visitez http //localhost 8080 dans votre navigateur pour vérifier que votre application remix fonctionne correctement déploiement via back4app web deployment 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, connectez vous à back4app web deployment https //www back4app com/containers et suivez ces étapes cliquez sur "créer une nouvelle application" et nommez votre projet sélectionnez dépôt github et autorisez back4app choisissez votre dépôt todo remix sélectionnez déploiement dockerfile et confirmez les paramètres de construction cliquez sur "déployer" pour commencer votre construction après le déploiement, surveillez votre conteneur via le tableau de bord back4app vous pouvez consulter les journaux, gérer les constructions et configurer des domaines personnalisés tester et déboguer votre application une fois déployée, assurez vous que votre application fonctionne comme prévu voici comment vérifier l'intégration frontend backend connectivité api ouvrez la console de développement de votre navigateur (f12) et vérifiez les requêtes réseau lors de l'ajout, du basculement ou de la suppression de tâches persistance des données ajoutez des tâches via l'interface utilisateur et actualisez la page pour confirmer qu'elles sont enregistrées vérifiez les modifications dans le navigateur de base de données back4app sous la classe "task" opérations crud testez le basculement de l'état d'achèvement et la suppression de tâches si des problèmes surviennent, inspectez la console et les journaux api gestion des cas particuliers essayez de soumettre des entrées vides pour vous assurer que vos validations sont efficaces meilleures pratiques et conseils d'optimisation suivez ces recommandations pour améliorer la sécurité, les performances et l'évolutivité optimiser les appels api utilisez des requêtes par lot et sélectionnez uniquement les champs nécessaires dans les requêtes variables d'environnement stockez les clés sensibles (id d'application et clé javascript) dans un fichier env et référencez les de manière sécurisée contrôle d'accès mettez en œuvre des acl dynamiques pour restreindre les modifications de données aux utilisateurs authentifiés code cloud déchargez la logique complexe vers le code cloud de back4app pour améliorer les performances et la sécurité conclusion vous avez réussi à construire une application de liste de tâches full stack avec remix et à la connecter à un backend back4app ce tutoriel vous a guidé à travers l'initialisation d'un projet remix, l'intégration d'un service de gestion pour les interactions backend, et la conteneurisation de votre application pour le déploiement maintenant que votre application est en ligne, envisagez d'élargir ses fonctionnalités avec une gestion avancée des utilisateurs, des mises à jour en temps réel ou des intégrations tierces pour plus de conseils, explorez la documentation back4app https //www back4app com/docs et les ressources remix