Ce tutoriel vous guide dans la création d'une application pratique de générateur de citations aléatoires, parfaite pour apprendre les bases du codage. Nous couvrirons chaque étape avec des exemples de code détaillés, ce qui permettra aux débutants de suivre facilement.
Cette application récupère des citations aléatoires à partir d'une API publique, les affiche et permet aux utilisateurs de les copier ou de les partager. Décomposons le processus et explorons la logique du code.
Nous commençons par créer la mise en page HTML :
<code class="language-html"><!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Random Quotes Generator</title> <link rel="stylesheet" href="styles.css"> </head> <body> <div id="app"> <!-- Content will be added here --> </div> <script src="index.js"></script> </body> </html></code>
Cela définit la structure de base, y compris les éléments pour afficher le devis, les boutons pour les nouveaux devis et les icônes pour la copie et le partage.
Pour accéder à l'API externe, nous avons besoin d'une solution CORS (Cross-Origin Resource Sharing). Un simple serveur proxy Express.js gère cela :
<code class="language-javascript">// proxy.js const express = require("express"); const fetch = require("node-fetch"); const cors = require("cors"); const app = express(); app.use(cors()); app.get("/api/quote", async (req, res) => { try { const response = await fetch("https://qapi.vercel.app/api/random"); const data = await response.json(); res.json(data); } catch (error) { res.status(500).json({ error: "API fetch failed" }); } }); const PORT = 4000; app.listen(PORT, () => console.log(`Proxy running on http://localhost:${PORT}`));</code>
Ce proxy local récupère les devis et évite les problèmes CORS.
Le bouton "Nouveau devis" déclenche une récupération de devis :
<code class="language-javascript">// index.js const quoteDisplay = document.getElementById("quote"); const authorDisplay = document.getElementById("author"); async function getQuote() { try { const response = await fetch('http://localhost:4000/api/quote'); const data = await response.json(); quoteDisplay.textContent = data.quote || "No quote found."; authorDisplay.textContent = data.author || "Unknown"; } catch (error) { console.error("Quote fetch error:", error); quoteDisplay.textContent = "Error fetching quote."; } }</code>
Ce script récupère les données, met à jour la citation et l'auteur dans l'interface utilisateur.
L'API Clipboard permet la copie de devis :
<code class="language-javascript">// copyQuote.js async function copyQuote() { try { const quoteText = `${quoteDisplay.textContent} - ${authorDisplay.textContent}`; await navigator.clipboard.writeText(quoteText); alert("Copied to clipboard!"); } catch (error) { console.error("Copy failed:", error); } }</code>
Cliquer sur l'icône de copie copie la citation et l'auteur.
L'API Navigator facilite le partage :
<code class="language-javascript">// shareQuote.js async function shareQuote() { const quoteText = `${quoteDisplay.textContent} - ${authorDisplay.textContent}`; try { await navigator.share({ text: quoteText }); } catch (error) { console.error("Share failed:", error); // Fallback for unsupported browsers alert(`Share this quote: ${quoteText}`); } }</code>
Ceci gère le partage, fournissant une solution de secours pour les navigateurs manquant de navigator.share
.
CSS stylise l'application pour son attrait visuel et sa réactivité (exemples de styles omis par souci de concision).
npm install
node proxy.js
index.html
dans votre navigateur.index.html
: interface utilisateur principaleproxy.js
: serveur proxy CORSindex.js
: Récupération et affichage des deviscopyQuote.js
: Fonctionnalité de copieshareQuote.js
: Fonctionnalité de partagestyles.css
: StylismeCitations fournies par l'API Quotes.
Ce didacticiel couvrait la création d'un générateur de citations aléatoires, démontrant l'intégration des API, la gestion CORS et les API du navigateur. C'est un excellent exercice pour apprendre l'interaction avec les API, les principes fondamentaux de JavaScript et les API du navigateur. Les commentaires sont les bienvenus !
GitHub | LinkedIn | X
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!