TP : Système de commentaire
Dans ce chapitre nous allons voir un cas concret d'utilisation de JavaScript pour créer un système de commentaires qui se charge dès lors que l'on descend suffisamment dans une page. On créera aussi un système de pagination infinie permettant de charger de nouveaux commentaire lorsque l'on descendra dans la page. Et on finira pas la gestion de l'ajout de nouveaux commentaire à l'aide d'un formulaire HTML.
Structure de base
Voici la structure HTML qui servira de base pour la réalisation de ce TP (j'ai directement mis les bon attributs "data-" pour vous simplifier le travail).
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Commentaires</title> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/css/bootstrap.min.css" rel="stylesheet"> <script src="app.js" type="module" defer></script> </head> <body> <div class="container"> <article> <h1>Titre de notre article</h1> <p> Lorem ipsum dolor sit, amet consectetur adipisicing elit. Provident atque sed nihil soluta rem, totam ipsum et perspiciatis, alias molestias temporibus aut rerum? Facere facilis consectetur unde culpa, ipsam reiciendis! </p> <ul> <li>Lorem, ipsum dolor sit amet consectetur adipisicing elit. At, voluptatibus ad? Quis, architecto eum corrupti cum sit perspiciatis quo quam aliquid, ad quae voluptas quasi porro ullam obcaecati voluptate unde?</li> <li>Laborum eaque, inventore recusandae voluptate maxime tenetur deleniti nisi perferendis, voluptatibus eligendi sapiente id? Maxime, similique? Pariatur doloremque dolorem numquam enim recusandae incidunt harum nobis, minima praesentium aspernatur consectetur voluptate?</li> <li>Suscipit hic pariatur mollitia, odio quaerat iste minus repudiandae a, rerum tempore praesentium recusandae qui aliquam quidem sed saepe laborum adipisci exercitationem est cum. Porro eaque illum illo obcaecati distinctio!</li> </ul> <p> Lorem ipsum dolor sit amet consectetur adipisicing elit. Nihil quam beatae eos, eaque suscipit quos fugiat. Culpa eos, eius quasi unde fugit facilis ipsa provident pariatur exercitationem officia impedit iste. </p> <p> Lorem ipsum dolor sit amet consectetur, adipisicing elit. Officiis accusamus asperiores aperiam aut, rem voluptatem consequatur. Fuga voluptates et quidem nesciunt, sint ex dolore eos veniam quo numquam est? Dignissimos. </p> <h2>Ipsum dolor sit amet.</h2> <p>Lorem ipsum dolor sit amet consectetur, adipisicing elit. Sequi vel nostrum amet enim consectetur doloremque. Sed sapiente deserunt vitae quibusdam quaerat amet deleniti minima vero autem. Vero praesentium quam tempore?</p> <p>Facilis at sapiente voluptates assumenda quia provident earum blanditiis excepturi similique vel nobis sunt enim aut itaque dolor iste asperiores obcaecati doloremque voluptatem nemo, ea laborum molestiae! Impedit, ex non?</p> <h2>Sed sapiente deserunt</h2> <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Possimus quod dicta veniam nobis dolores rerum, tenetur est porro illum numquam ipsam suscipit minima incidunt velit nesciunt saepe consequatur accusamus excepturi?</p> <p>Eaque accusamus quo in consectetur enim dolorem sequi doloremque itaque repellendus! Voluptatum porro illum maiores laboriosam neque, eum minima reprehenderit mollitia delectus, animi aspernatur, obcaecati sequi dolorum vitae repellendus! Numquam.</p> <hr> <h2>Les commentaires</h2> <template id="alert"> <div class="alert alert-dismissible fade show" role="alert"> <div class="js-text"></div> <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button> </div> </template> <form action="" class="js-form-fetch" data-endpoint="https://jsonplaceholder.typicode.com/comments" data-template="#comment" data-target=".comments" data-elements='{"name": ".js-username", "body": ".js-content"}' > <div class="row mb-2"> <div class="col-sm"> <input name="name" type="text" class="form-control" placeholder="Votre pseudo"> </div> <div class="col-sm"> <input name="email" type="text" class="form-control" placeholder="Votre pseudo"> </div> </div> <textarea name="body" class="form-control mb-2" style="min-height: 150px;"></textarea> <button class="btn btn-primary">Envoyer</button> </form> <hr> <div class="comments"></div> <template id="comment"> <article class="mb-4"> <div class="mb-1"><strong class="js-username"></strong></div> <p class="js-content"></p> </article> </template> <div data-endpoint="https://jsonplaceholder.typicode.com/comments?_limit=10" data-template="#comment" data-target=".comments" data-elements='{"name": ".js-username", "body": ".js-content"}' class="text-center js-infinite-pagination"> <div class="spinner-border" role="status"></div> </div> </article> </div> </body> </html>
Évaluation
0
0
Il n'y a aucune réaction pour le moment.
Rejoindre ce cours
pour être le premier à laisser un commentaire.