Exercice : "Carnet de Recettes"

Objectif : Créer un script Node.js qui permet à l'utilisateur de sauvegarder et de lire des recettes dans un carnet de recettes sous forme de fichier texte.

Partie 1: Écriture dans un fichier

  1. Initialisation du projet :

    • Créez un nouveau dossier nommé recipe_book.
    • Ouvrez un terminal, naviguez (cd) dans ce dossier.
  2. Création du script d'écriture :

    • Dans le dossier recipe_book, créez un fichier writeRecipe.js.
    • Écrivez un script qui utilise fs.writeFile pour créer un nouveau fichier de recette ou ajouter une recette à un fichier existant.
    const fs = require('fs');
    
    const recipe = {
      title: 'Pancakes',
      ingredients: ['2 cups all-purpose flour', '2 tablespoons sugar', '2 teaspoons baking powder', '1 teaspoon salt', '2 eggs', '1 1/2 cups milk', '4 tablespoons butter'],
      instructions: 'Mix all the ingredients in a bowl and cook on a hot griddle.'
    };
    
    fs.writeFile('recipes.txt', `${recipe.title}\n\nIngredients:\n${recipe.ingredients.join('\n')}\n\nInstructions:\n${recipe.instructions}\n\n`, { flag: 'a' }, err => {
      if (err) {
        console.error('Error writing to file', err);
      } else {
        console.log('Recipe saved!');
      }
    });
    

Partie 2: Lecture d'un fichier

  1. Création du script de lecture :

    • Créez un fichier readRecipe.js dans le même dossier.
    • Écrivez un script qui utilise fs.readFile pour lire le contenu du fichier recipes.txt et l'afficher dans la console.
    const fs = require('fs');
    
    fs.readFile('recipes.txt', 'utf8', (err, data) => {
      if (err) {
        console.error('Error reading file', err);
        return;
      }
      console.log(data);
    });
    

Partie 3: Gestion des erreurs

  1. Testez la gestion des erreurs :
    • Essayez de lire un fichier qui n'existe pas pour tester la gestion des erreurs.
    • Assurez-vous que le script affiche un message d'erreur approprié sans arrêter l'exécution de manière inattendue.

Partie 4: Opérations asynchrones vs. synchrones

  1. Comparaison des opérations :
    • Modifiez readRecipe.js pour utiliser fs.readFileSync et comparez le comportement avec fs.readFile.
    • Notez la différence dans l'exécution du code lors de l'utilisation de la version synchrone.

Partie 5: Défi supplémentaire (Optionnel)

  1. Amélioration du carnet de recettes :
    • Ajoutez la possibilité de passer le titre et les détails de la recette via la ligne de commande.
    • Utilisez le module readline ou process.argv pour collecter les entrées de l'utilisateur.
    • Ajoutez des fonctionnalités pour supprimer une recette ou rechercher une recette par titre.

Cet exercice permet aux apprenants de pratiquer la manipulation de fichiers, la gestion des erreurs et la distinction entre les opérations asynchrones et synchrones en Node.js.

Modifié le: mardi 7 novembre 2023, 09:50