├── src/ # 源代碼文件夾
│ ├── index.js # 主入口文件,應用啟動的起點
│ └── ... # 其他源代碼文件
├── public/ # 靜態資源文件夾,如HTML、CSS、圖片等
│ └── index.html # 若有前端部分,這是默認的HTML入口文件
├── package.json # 項目配置文件,包含了依賴信息和腳本命令
├── .gitignore # Git忽略文件列表
├── README.md # 項目說明文檔
├── node_modules/ # 自動下載的Node.js依賴庫(不包含在版本控制中)
└── scripts/ # 可能包含自定義構建或腳本工具

在該項目中,src/index.js 是應用的主入口文件,負責啟動程序并處理核心邏輯。package.json 文件中定義了項目的依賴關系和啟動腳本。開發者可以根據項目需求調整配置文件和代碼結構。

項目的啟動文件介紹

啟動文件主要是 src/index.js。在Node.js環境中,通過 require 或其他導入機制來組織代碼,處理路由、業務邏輯等。若項目采用現代JavaScript標準如ES6 modules,則可能入口文件會有所不同,例如 index.mjs 或使用特定的打包配置指定入口。

項目的配置文件介紹

主要關注點通常在 package.json 文件:

此外,項目可能會涉及數據庫連接、API密鑰、環境變量等高級配置,可能會有額外的 .env 文件或是專門的配置文件(如 .config.js, config.yml),但具體取決于項目的實際實現。

Fetch基本用法

fetch() 的功能與 XMLHttpRequest 基本相同,但有三個主要的差異:

  1. 使用 Promise:fetch 使用 Promise,不使用回調函數,因此大大簡化了寫法,寫起來更簡潔。
  2. 模塊化設計:fetch 采用模塊化設計,API 分散在多個對象上(Response 對象、Request 對象、Headers 對象),更合理一些。
  3. 數據流處理:fetch 通過數據流(Stream 對象)處理數據,可以分塊讀取,提高網站性能表現,減少內存占用。

在用法上,fetch() 接受一個 URL 字符串作為參數,默認向該網址發出 GET 請求,返回一個 Promise 對象?;居梅ㄈ缦拢?/p>

fetch(url)
  .then(response => response.json())
  .then(json => console.log(json))
  .catch(err => console.log('Request Failed', err));

Response對象:處理HTTP回應

Response 對象對應服務器的 HTTP 回應,包含的數據通過 Stream 接口異步讀取。它還包含一些同步屬性,對應 HTTP 回應的標頭信息(Headers),可以立即讀取。

可以通過以下代碼獲取Response對象的同步屬性:

const response = await fetch(url);
console.log(response.status);
console.log(response.statusText);

判斷請求是否成功

fetch 發出請求后,只有網絡錯誤,或無法連接時,fetch 才會報錯,其他情況都不會報錯,而是認為請求成功。需要通過 Response.status 屬性,得到 HTTP 回應的真實狀態碼,才能判斷請求是否成功。

async function fetchText() {
  let response = await fetch('/readme.txt');
  if (response.status >= 200 && response.status < 300) {
    return await response.text();
  } else {
    throw new Error(response.statusText);
  }
}

另一種方法是判斷 response.ok 是否為 true。

讀取內容的方法

Response 對象根據服務器返回的不同類型的數據,提供了不同的讀取方法:

這些讀取方法都是異步的,返回的都是 Promise 對象。必須等到異步操作結束,才能得到服務器返回的完整數據。

Response.clone() 多次讀取

Stream 對象只能讀取一次,讀取完就沒了。這意味著,前一節的五個讀取方法,只能使用一個,否則會報錯。Response 對象提供 Response.clone() 方法,創建 Response 對象的副本,實現多次讀取。

const response1 = await fetch('flowers.jpg');
const response2 = response1.clone();

const myBlob1 = await response1.blob();
const myBlob2 = await response2.blob();

FAQ

  1. 問:Fetch API 和 XMLHttpRequest 有什么區別?

  2. 問:如何判斷 Fetch 請求是否成功?

  3. 問:如何在 Fetch 中上傳文件?

  4. 問:Fetch API 如何處理跨域請求?

  5. 問:如何取消正在進行的 Fetch 請求?

通過本指南,開發者可以更深入地理解 Fetch API 的安裝與使用,掌握其核心功能和最佳實踐,實現高效的網絡請求處理。

上一篇:

FastAPI 與 Flask 在機器學習方面的對比

下一篇:

探索 Fabric API Key 的使用與安全管理
#你可能也喜歡這些API文章!

我們有何不同?

API服務商零注冊

多API并行試用

數據驅動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內容創意新穎性、情感共鳴力、商業轉化潛力

25個渠道
一鍵對比試用API 限時免費

#AI深度推理大模型API

對比大模型API的邏輯推理準確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費