目錄
專案概況
第 1 步:HTML 結構
第 2 步:使用代理處理 CORS
第 3 步:使用 JavaScript 取得報價
第 4 步:複製功能
第 5 步:共享功能
第 6 步:使用 CSS 設計樣式
第 7 步:啟動應用程式
專案結構
API 積分
結論
首頁 web前端 css教學 建立隨機報價產生器:帶有程式碼的逐步指南

建立隨機報價產生器:帶有程式碼的逐步指南

Jan 22, 2025 am 04:46 AM

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

本教程將指導您建立實用的隨機報價產生器應用程序,非常適合學習編碼基礎知識。 我們將用詳細的程式碼範例來介紹每個步驟,讓初學者可以輕鬆遵循。


專案概況

此應用程式從公共 API 檢索隨機報價,顯示它們,並允許使用者複製或共用它們。 我們來分解流程,探究一下程式碼邏輯。


第 1 步:HTML 結構

我們先建立 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>

這設定了基本結構,包括顯示報價的元素、新報價的按鈕以及用於複製和共享的圖示。


第 2 步:使用代理處理 CORS

為了存取外部API,我們需要一個CORS(跨來源資源共用)解決方案。 一個簡單的 Express.js 代理伺服器可以處理這個問題:

// 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}`));

此本地代理取得報價並避免 CORS 問題。


第 3 步:使用 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.";
    }
}

此腳本取得數據,更新 UI 中的引用和作者。


第 4 步:複製功能

剪貼簿 API 支援複製報價:

// 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);
    }
}

點選複製圖示可複製引用和作者。


第 5 步:共享功能

Navigator API 促進分享:

// 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}`);
    }
}

這處理共享,為缺少navigator.share的瀏覽器提供後備。


第 6 步:使用 CSS 設計樣式

CSS 樣式應用程式以提高視覺吸引力和回應能力(為簡潔起見,省略了範例樣式)。


第 7 步:啟動應用程式

  1. 複製儲存庫:(替換為您的實際儲存庫 URL)
  2. 安裝依賴項: npm install
  3. 啟動代理伺服器: node proxy.js
  4. 在瀏覽器中開啟index.html

專案結構

  • index.html:主介面
  • proxy.js:CORS 代理伺服器
  • index.js:報價取得並顯示
  • copyQuote.js:複製功能
  • shareQuote.js:共享功能
  • styles.css:造型

API 積分

由 Quotes API 提供的報價。


結論

本教學涵蓋了建立隨機報價產生器、示範 API 整合、CORS 處理和瀏覽器 API。 對於學習 API 互動、JavaScript 基礎知識和瀏覽器 API 來說,這是一個很好的練習。 歡迎反饋!

GitHub |領英 | X

以上是建立隨機報價產生器:帶有程式碼的逐步指南的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Stock Market GPT

Stock Market GPT

人工智慧支援投資研究,做出更明智的決策

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

如何使用純CSS創建下拉菜單 如何使用純CSS創建下拉菜單 Sep 20, 2025 am 02:19 AM

使用HTML和CSS可創建無需JavaScript的下拉菜單。 2.通過:hover偽類觸發子菜單顯示。 3.利用嵌套列表構建結構,CSS設置隱藏與懸浮顯示效果。 4.可添加過渡動畫提升視覺體驗。

如何防止圖像拉伸或縮小CSS 如何防止圖像拉伸或縮小CSS Sep 21, 2025 am 12:04 AM

useobject-fitormax-widthwithheight:自動置換式; object-fitControlshowimagesfillcontainersfillcontainerswhilepreservingaspectratios,andmax-width:100%;高度;高度:autoEsoensuresResresresResresRessersRessiveScalingScalingWithOutStertracterging。

如何使用CSS中的指針事件屬性 如何使用CSS中的指針事件屬性 Sep 17, 2025 am 07:30 AM

Thepointer-eventspropertyinCSScontrolswhetheranelementcanbethetargetofpointerevents.1.Usepointer-events:nonetodisableinteractionslikeclicksorhoverswhilekeepingtheelementvisuallyvisible.2.Applyittooverlaystoallowclick-throughbehaviortounderlyingelemen

如何使用CSS添加盒子陰影效果 如何使用CSS添加盒子陰影效果 Sep 20, 2025 am 12:23 AM

USETHEBOX-SHADOWPROPERTYTOADDDROPSHADOWS.DEFINEHORIZONTALANDVERTICALESTESETSETSETSETSETSETSETSETSETSETSETSETSETSETSETSETSETSETESTESTESTESTESTESTEMENG:MMULTIPLESHADOWSARECOMMA-SEPARAWS.MEULTIPLESHADOWSARECOMMA-SEPARATED.EXAMPL

如何將過濾器應用於CSS的圖像 如何將過濾器應用於CSS的圖像 Sep 21, 2025 am 02:27 AM

thecssfilterpropertyallowseasyagestylinglingwisslikeblur,亮度和格雷斯卡爾(Grayscale.UseFilter):濾波器函數(值)onimagesorbackgroundImages.commonfunctionsIncludeBlurblur(px),亮度(brightness),亮度(%),偏見(%),損壞(%),sancale(%),飽和度(%)

如何在CSS中添加梯度背景 如何在CSS中添加梯度背景 Sep 16, 2025 am 05:30 AM

要添加CSS漸變背景,使用background或background-image屬性配合linear-gradient()、radial-gradient()等函數即可;首先選擇漸變類型,設置方向與顏色,並可通過顏色停靠點、形狀、大小等參數精細控制,例如linear-gradient(toright,#ff7e5f,#feb47b)創建從左到右的線性漸變,radial-gradient(circle,#ff9a9e,#fecfef)創建圓形徑向漸變,還可通過repeating-linear-gr

如何在CSS中創建圓形圖像? 如何在CSS中創建圓形圖像? Sep 15, 2025 am 05:33 AM

使用border-radius:50%將等寬高的圖像變為圓形,結合object-fit和aspect-ratio確保形狀和裁剪,可添加邊框、陰影等樣式增強視覺效果。

如何在CSS網格佈局中創建空白? 如何在CSS網格佈局中創建空白? Sep 22, 2025 am 05:15 AM

使用gap、row-gap或column-gap屬性可在CSSGrid佈局中創建網格項之間的間距,gap是設置行列間距的簡寫屬性,可接受一個或兩個長度值,row-gap和column-gap則分別單獨控制行與列的間距,支持px、rem、%等單位。

See all articles