> 웹 프론트엔드 > CSS 튜토리얼 > 무작위 인용 생성기 구축: 코드를 사용한 단계별 가이드

무작위 인용 생성기 구축: 코드를 사용한 단계별 가이드

DDD
풀어 주다: 2025-01-22 04:46:21
원래의
467명이 탐색했습니다.

Building a Random Quotes Generator: A Step-by-Step Guide with Code

이 튜토리얼에서는 코딩 기초 학습에 적합한 실용적인 Random Quotes Generator 애플리케이션을 구축하는 과정을 안내합니다. 초보자도 쉽게 따라할 수 있도록 각 단계를 자세한 코드 예제로 설명하겠습니다.


사업개요

이 앱은 공개 API에서 임의의 인용문을 검색하여 표시하고 사용자가 이를 복사하거나 공유할 수 있도록 합니다. 프로세스를 세분화하고 코드 로직을 살펴보겠습니다.


1단계: HTML 구조

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>
로그인 후 복사

명언을 표시하는 요소, 새 인용문을 위한 버튼, 복사 및 공유를 위한 아이콘 등 기본 구조를 설정합니다.


2단계: 프록시를 사용한 CORS 처리

외부 API에 액세스하려면 CORS(Cross-Origin Resource Sharing) 솔루션이 필요합니다. 간단한 Express.js 프록시 서버가 이를 처리합니다.

<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>
로그인 후 복사

이 로컬 프록시는 견적을 가져오고 CORS 문제를 방지합니다.


3단계: JavaScript로 견적 가져오기

"새 견적" 버튼을 누르면 견적 가져오기가 시작됩니다.

<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>
로그인 후 복사

이 스크립트는 데이터를 가져오고 UI에서 인용문과 작성자를 업데이트합니다.


4단계: 복사 기능

Clipboard API를 사용하면 견적 복사가 가능합니다.

<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>
로그인 후 복사

복사 아이콘을 클릭하면 인용문과 저자가 복사됩니다.


5단계: 기능 공유

Navigator API는 공유를 용이하게 합니다.

<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>
로그인 후 복사

이는 공유를 처리하고 navigator.share 부족한 브라우저에 대한 대체 기능을 제공합니다.


6단계: CSS를 사용한 스타일링

CSS는 시각적 매력과 반응성을 높이기 위해 앱 스타일을 지정합니다(간결함을 위해 스타일 예시는 생략됨).


7단계: 앱 실행

  1. 저장소 복제: (실제 저장소 URL로 교체)
  2. 종속성 설치: npm install
  3. 프록시 서버 시작: node proxy.js
  4. 브라우저에서 index.html을 엽니다.

프로젝트 구조

  • index.html: 메인 UI
  • proxy.js: CORS 프록시 서버
  • index.js: 견적 가져오기 및 표시
  • copyQuote.js: 복사 기능
  • shareQuote.js: 공유 기능
  • styles.css: 스타일링

API 크레딧

Quotes API에서 제공하는 인용문입니다.


결론

이 튜토리얼에서는 Random Quotes Generator 구축, API 통합, CORS 처리 및 브라우저 API를 시연하는 방법을 다뤘습니다. API 상호 작용, JavaScript 기본 사항 및 브라우저 API를 학습하기 위한 훌륭한 연습입니다. 피드백을 환영합니다!

깃허브 | 링크드인 | 엑스

위 내용은 무작위 인용 생성기 구축: 코드를 사용한 단계별 가이드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿