
兩個 script 標簽搞定 axios CDN 引入選型、鎖定版本與兜底方案【免費下載鏈接】axiosPromise based HTTP client for the browser and node.js項目地址: https://gitcode.com/GitHub_Trending/ax/axios不想裝構建工具只想讓一個靜態(tài) HTML 頁直接發(fā)出 HTTP 請求axios CDN 引入是最快的路子挑一個 CDN、貼一行 script 標簽、鎖死版本號瀏覽器里立刻能用。這篇教你30 秒在 jsDelivr 和 unpkg 之間做出選擇把版本號鎖死并給頁面加一條備用 CDN 的兜底邏輯拿到兩段能直接粘貼的 GET / POST 代碼30 秒速覽先選型再動手兩個平臺默認入口都是壓縮后的dist/axios.min.js差別在速度和緩存行為維度jsDelivrunpkg節(jié)點分布全球 CDN 分發(fā)國內(nèi)訪問快npm 官方托管按請求轉(zhuǎn)發(fā)國內(nèi)偏慢版本鎖定支持版本號支持版本號緩存行為強緩存 定期刷新依賴瀏覽器緩存首屏偶有延遲說白了國內(nèi)部署選 jsDelivr海外用戶為主選 unpkg本文代碼默認走 jsDelivr。落地第一步寫對 script 標簽版本號必須寫進 URL——這是 CDN 引入 axios 最容易翻車的一點。axios 1.x 內(nèi)部接口有過多次調(diào)整不鎖版本等于把頁面穩(wěn)定性交給運氣。寫法是路徑前加1.6.7以后要升級只改一個數(shù)字。標簽下面緊跟兩行兜底邏輯如果 jsDelivr 掛了document.write會同步從 unpkg 拉同一個版本加載成功的正常情況不會觸發(fā)第二行。落地第二步發(fā)第一個 GET 請求標簽寫對后全局變量axios就有了。下面這個最小片段可以整段粘進任意靜態(tài)頁!-- 鎖定版本號的寫法1.6.7升級只改這里 -- script srchttps://cdn.jsdelivr.net/npm/axios1.6.7/dist/axios.min.js/script !-- 三行代碼實現(xiàn)備用 CDN主源加載失敗才同步執(zhí)行 -- scriptwindow.axios || document.write(script srchttps://unpkg.com/axios1.6.7/dist/axios.min.js\/script)/script script // 發(fā)第一個 GET 請求響應體自動解析成 JSON axios.get(https://httpbin.org/get) .then(function (response) { console.log(response.status, response.data); }) .catch(function (err) { // 網(wǎng)絡錯誤和 4xx/5xx 都會走到這里 console.error(請求失敗, err.message); }); /script項目倉庫里的 官方 GET 示例 用的就是這種script 標簽 全局 axios的用法把它里的本地路徑換成上面的 CDN 地址即可。落地第三步再發(fā)一個 POST 請求發(fā)數(shù)據(jù)時不用手動JSON.stringifyaxios 看到對象會自動序列化成 JSON并把請求頭設為application/json你只要傳對象就行script // data 是任意對象axios 自動轉(zhuǎn) JSON 并帶上 Content-Type axios.post(https://httpbin.org/post, { name: 張三, email: zhangsanexample.com }) .then(function (res) { // 服務端回顯的內(nèi)容就在 res.data 里 console.log(res.data); }) .catch(function (err) { console.error(提交失敗, err.message); }); /script? 三個高頻坑現(xiàn)象、原因、解法現(xiàn)象控制臺報 CORS errorresponse.data永遠拿不到。原因瀏覽器禁止跨域讀響應這是服務端策略不是 axios 的問題。解法讓接口方給目標域名加 CORS 響應頭接口不支持跨域時改走同源代理?,F(xiàn)象頁面里axios方法時靈時不靈攔截器互相看不見。原因多個 script 標簽引入了不同版本的 axios后加載的覆蓋了先加載的。解法全項目統(tǒng)一同一版本號的寫法只保留一個加載入口。現(xiàn)象CDN 腳本加載失敗axios is not defined頁面白屏。原因網(wǎng)絡波動或 CDN 節(jié)點故障標簽加載是靜默失敗的。解法保留上面的備用 CDN 兜底上線前再手動打開一次控制臺確認window.axios存在。? 進階一瞥攔截器生產(chǎn)代碼里每個請求帶 token、401 統(tǒng)一跳登錄這種橫切邏輯放在攔截器里最合適寫一次全局生效// 請求攔截器發(fā)出去之前統(tǒng)一加工配置 axios.interceptors.request.use(function (config) { config.headers.Authorization Bearer token; return config; }); // 響應攔截器401 在這里統(tǒng)一處理業(yè)務代碼不用重復寫 axios.interceptors.response.use( function (response) { return response; }, function (error) { if (error.response error.response.status 401) { location.href /login; } return Promise.reject(error); } );收尾一行鎖定版本的 script 標簽加上備用 CDN 的兜底邏輯就是 axios CDN 集成的全部家當選型、鎖版本、留后路三件事做完頁面就交給你自己的業(yè)務代碼了。參考資料Axios 官方文檔 README參考資料jsDelivrcdn.jsdelivr.net參考資料unpkgunpkg.com參考資料倉庫內(nèi) examples 目錄的 GET / POST 示例【免費下載鏈接】axiosPromise based HTTP client for the browser and node.js項目地址: https://gitcode.com/GitHub_Trending/ax/axios創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考