Quickstarters
Comment construire un frontend Angular et le connecter à un backend ?
38 min
dans ce tutoriel, vous allez créer une application de liste de tâches en utilisant angular et la connecter à un service backend géré alimenté par back4app ce guide est conçu pour vous si vous souhaitez maîtriser les opérations crud essentielles (créer, lire, mettre à jour, supprimer) et créer une interface dynamique et réactive avec angular à la fin de ce tutoriel, votre application communiquera sans problème avec un backend qui gère le stockage des données, l'authentification, et plus encore construire une application full stack implique souvent une configuration backend complexe et une gestion de base de données pour simplifier votre flux de travail, nous utilisons back4app— un backend as a service robuste —pour que vous puissiez vous concentrer sur le développement d'un frontend angular riche en fonctionnalités back4app fournit une base de données nosql entièrement gérée, une authentification des utilisateurs, du cloud code pour une logique personnalisée, et des sdk pour une intégration transparente cela vous permet de construire et de déployer des applications évolutives sans gérer l'infrastructure serveur points clés à retenir en suivant ce tutoriel, vous allez initialiser un projet angular moderne en utilisant angular cli 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 dynamique liste de tâches déployer votre application entièrement fonctionnelle en utilisant des flux de travail conteneurisés sur back4app conditions préalables avant de commencer, assurez vous d'avoir node js et npm installés sur votre machine vérifiez les installations avec node v et npm v connaissances de base en angular , y compris les composants, les services et l'injection de dépendances un compte back4app pour gérer vos services backend inscrivez vous sur back4app https //www back4app com/ si vous ne l'avez pas déjà fait avec ces conditions préalables en place, vous êtes prêt à commencer à construire votre projet configuration du projet commencez par configurer votre environnement de développement local et initialiser un nouveau projet angular en utilisant angular cli assurez vous d'avoir node js (version lts) installé si ce n'est pas le cas, téléchargez le depuis nodejs org https //nodejs org/ installez l'angular cli globalement si vous ne l'avez pas déjà fait npm install g @angular/cli créer un nouveau projet angular ng new todo app routing style=css naviguez vers votre répertoire de projet cd todo app démarrez le serveur de développement pour vérifier la configuration ng serve ouvrez http //localhost 4200 dans votre navigateur pour voir votre application angular en action avec le frontend prêt, procédez à la création de votre backend sur back4app création du backend todo back4app propose un service backend entièrement géré alimenté par parse , y compris une base de données nosql, une authentification, du cloud code et des api auto générées suivez ces étapes pour configurer votre 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, todoapp ) et sélectionnez nodejs/parse comme type de backend accédez à "base de données" > "navigateur" , cliquez sur "créer une classe" , et choisissez "personnalisé" nommez la classe tâche et définissez les autorisations pour permettre la lecture et l'écriture publiques (vous pourrez affiner cela 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) – état d'achèvement de la tâche datelimite (date) – la date limite pour la tâche cliquez sur "enregistrer" pour créer le schéma intégration de back4app avec angular vous utiliserez le parse javascript sdk pour connecter votre application angular au backend de back4app installez le sdk parse npm install parse configurez le sdk dans votre projet angular ouvrez src/app/app module ts (ou créez un service dédié) et initialisez parse avec votre application id et javascript key depuis le tableau de bord back4app (trouvé sous app settings > security & keys ) par exemple, créez un service parse service ts dans le src répertoire import { injectable } from '@angular/core'; import parse from 'parse'; @injectable({ providedin 'root', }) export class parseservice { constructor() { const parse app id = "your application id"; const parse js key = "your javascript key"; parse initialize(parse app id, parse js key); (parse as any) serverurl = 'https //parseapi back4app com/'; } } ensuite, dans vos composants, injectez simplement parseservice dans le constructeur le service exécutera son constructeur une fois (au démarrage de l'application), initialisant parse pour vous avec votre backend connecté, vous pouvez maintenant construire l'interface utilisateur de la liste de tâches et implémenter des opérations crud développement du frontend votre application angular sera composée de composants et de services pour ajouter, afficher, mettre à jour et supprimer des tâches vous tirerez parti de l'architecture des composants d'angular et de l'injection de dépendances pour une gestion fluide des données structuration de vos composants générez les composants suivants en utilisant angular cli ng generate component components/task form ng generate component components/task list ng generate component components/task item taskformcomponent ce composant rend un formulaire pour ajouter de nouvelles tâches il capture l'entrée de l'utilisateur et soumet les données de la tâche à back4app add task // src/app/components/task form/task form component ts import { component, eventemitter, output } from '@angular/core'; import { formsmodule } from '@angular/forms'; import as parse from 'parse'; @component({ selector 'app task form', templateurl ' /task form component html', styleurls \[' /task form component css'], imports \[formsmodule] }) export class taskformcomponent { title = ''; description = ''; @output() refreshtasks = new eventemitter\<void>(); async onsubmit() { try { const task = parse object extend('task'); const task = new task(); task set('title', this title); task set('description', this description); task set('completed', false); await task save(); this refreshtasks emit(); this title = ''; this description = ''; } catch (error) { console error('error adding task ', error); } } } tasklistcomponent ce composant affiche une liste de tâches en itérant sur un tableau et en rendant chaque tâche à l'aide du taskitemcomponent no tasks available // src/app/components/task list/task list component ts import { component, input, oninit } from '@angular/core'; import { commonmodule } from '@angular/common'; import as parse from 'parse'; import { taskitemcomponent } from ' /task item/task item component'; @component({ selector 'app task list', templateurl ' /task list component html', styleurls \[' /task list component css'], imports \[commonmodule, taskitemcomponent] }) export class tasklistcomponent implements oninit { @input() tasks any\[] = \[]; @input() fetchtasks! () => void; ngoninit() void {} } taskitemcomponent ce composant représente une tâche individuelle et fournit des boutons pour basculer l'état d'achèvement ou supprimer la tâche {{ task title }} {{ task description }} {{ task completed ? 'undo' 'complete' }} delete // src/app/components/task item/task item component ts import { component, eventemitter, input, output } from '@angular/core'; import as parse from 'parse'; @component({ selector 'app task item', templateurl ' /task item component html', styleurls \[' /task item component css'] }) export class taskitemcomponent { @input() task any; @output() taskchanged = new eventemitter\<void>(); async togglecomplete() { try { const query = new parse query('task'); const tasktoupdate = await query get(this task id); tasktoupdate set('completed', !this task completed); await tasktoupdate save(); this taskchanged emit(); } catch (error) { console error('error updating task ', error); } } async deletetask() { try { const query = new parse query('task'); const tasktodelete = await query get(this task id); await tasktodelete destroy(); this taskchanged emit(); } catch (error) { console error('error deleting task ', error); } } } intégration du composant app dans votre composant principal, gérez l'état des tâches et intégrez les composants de tâche to do list // src/app/app component ts import { component, oninit } from '@angular/core'; import { parseservice } from ' /parse service'; import as parse from 'parse'; import { taskformcomponent } from ' /components/task form/task form component'; import { tasklistcomponent } from ' /components/task list/task list component'; @component({ selector 'app root', imports \[taskformcomponent, tasklistcomponent], templateurl ' /app component html', styleurl ' /app component css' }) export class appcomponent implements oninit { constructor(private parseservice parseservice) {} tasks any\[] = \[]; async fetchtasks() { try { const task = parse object extend('task'); const query = new parse query(task); const results = await query find(); this tasks = results map(task => ({ id task id, task tojson() })); } catch (error) { console error('error fetching tasks ', error); } } ngoninit() void { this fetchtasks(); } } styliser l'application créez ou mettez à jour les styles dans vos fichiers css de composant ou dans src/styles css / src/styles css / container { max width 600px; margin 40px auto; padding 0 20px; text align center; font family sans serif; } 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; } 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; } } déployer le frontend sur le déploiement web back4app le déploiement web back4app fournit un environnement conteneurisé pour héberger votre application angular configurer angular pour la production construisez votre application angular prête pour la production ng build cette commande génère un dist/ dossier contenant votre application angular compilée création d'un dockerfile créez un dockerfile à la racine de votre projet avec le contenu suivant from node 18 alpine as build workdir /app copy package json package lock json / run npm install g @angular/cli run npm install copy run ng build cmd \["ng", "serve", " host", "0 0 0 0"] tester le conteneur docker localement construisez votre image docker docker build t todo frontend exécutez le conteneur docker run p 4201 4200 todo frontend ouvrez http //localhost 4201 dans votre navigateur pour vérifier que votre application angular est servie correctement déploiement sur back4app initialisez un dépôt git, ajoutez vos fichiers de projet et validez 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 maingit 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 maingit 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 maingit 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 maingit 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 connectez vous à back4app web deployment https //www back4app com/containers cliquez sur "créer une nouvelle application" , fournissez le nom de votre projet et sélectionnez votre dépôt github autorisez back4app et choisissez dockerfile deployment confirmez les paramètres de construction et cliquez sur "déployer" pour commencer le processus de déploiement surveillance de votre déploiement 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 reconstructions sur de nouveaux commits configurer des domaines personnalisés si nécessaire accédez à votre application en direct à https //todoapp ku5ofg8s b4a run/ https //todoapp ku5ofg8s b4a run/ https //todoapp ku5ofg8s b4a run/ test et débogage après le déploiement, confirmez que votre frontend angular communique efficacement avec le backend back4app vérification de l'api utilisez les outils de développement de votre navigateur (f12 → réseau) pour inspecter les requêtes api opérations de tâches ajoutez, complétez et supprimez des tâches via l'interface utilisateur et vérifiez les mises à jour dans le navigateur de base de données back4app gestion des erreurs vérifiez les journaux de la console pour les erreurs et testez les cas limites tels que les soumissions vides tests de performance simulez des conditions de réseau lentes à l'aide des outils du navigateur pour évaluer la réactivité meilleures pratiques pour utiliser back4app avec angular pour optimiser votre application requêtes efficaces utilisez des opérations par lot pour gérer plusieurs tâches const tasks = \[task1, task2, task3]; parse object saveall(tasks); requêtes optimisées récupérer uniquement les champs nécessaires query select('title', 'completed'); gestion de l'environnement stocker les clés sensibles dans des variables d'environnement ng app parse app id=your app id ng app parse js key=your js key sécurité utiliser des acl pour restreindre l'accès aux données task setacl(new parse acl(parse user current())); déchargement du backend tirer parti du cloud code pour une logique complexe afin de réduire la charge du frontend conclusion vous avez maintenant construit une application de liste de tâches complète en créant un frontend angular, en l'intégrant avec le backend de back4app et en le déployant à l'aide de workflows conteneurisés ce tutoriel vous a guidé à travers chaque étape—du développement local au déploiement dans le cloud—assurant une interaction robuste entre votre interface utilisateur angular et les services backend en regardant vers l'avenir, envisagez des améliorations telles que des mises à jour en temps réel, une authentification améliorée et des intégrations tierces pour un apprentissage supplémentaire, visitez la documentation de back4app https //www back4app com/docs et explorez les ressources de la communauté