天天看點

Vue 3 和 Axios 快速入門

作者:架構筆記

上一章使用Vite 快速建立了Vue 3項目。本文将介紹使用 axios 發送網絡請求。

Vue 3 和 Axios 快速入門

Axios 是什麼?

Axios 是一個基于 promise 網絡請求庫,作用于node.js 和浏覽器中。 它是 isomorphic(同構) 的,也就是同一套代碼可以運作在浏覽器和node.js中。在服務端它使用原生 node.js http 子產品, 而在用戶端 (浏覽端) 則使用 XMLHttpRequests。

一、安裝 axios

參考如下指令:

npm install moduleName --save

簡寫 -s,将子產品安裝到項目 node_modules 目錄下,也會将子產品依賴寫入 dependencies 節點,同時運作 npm install 初始化項目時會将子產品下載下傳到項目目錄下。

在vs code 中,打開終端,敲入下面的安裝指令:

npm install axios --save

Vue 3 和 Axios 快速入門

安裝完成之後,打開 package.json 檔案,在dependencies 中可以看到加入的網絡請求庫:axios。

dependencies 類似于android 的Gradle ,添加依賴庫,所有的依賴庫均會在這裡。

Vue 3 和 Axios 快速入門

二、使用axios入門

找到一個需要加入網絡請求的頁面,比如 App.vue。

App.vue 檔案是一個單檔案元件,包含了元件代碼、模闆代碼和CSS樣式規則。還引入了HelloWord元件,然後在template中使用它。

如下是更新後的App.vue 檔案,示例代碼如下所示:

<script setup>
import HelloWorld from './components/HelloWorld.vue'
import axios from 'axios'

const handleClick=()=>{
 axios
 .get("http://localhost:3000/posts")
 .then(function (response) {
 console.log(response.data);
 console.log("-----")
 console.log(response.status);
 console.log(response.statusText);
 console.log(response.headers);
 console.log(response.config);
 })
 .catch(function (error) {
 console.log(error);
 })
}
</script>

<template>
 <div>
 <a href="https://vitejs.dev" target="_blank">
 <img src="/vite.svg" class="logo" alt="Vite logo" />
 </a>
 <a href="https://vuejs.org/" target="_blank">
 <img src="./assets/vue.svg" class="logo vue" alt="Vue logo" />
 </a>
 </div>
 <div>
 <button v-on:click="handleClick">擷取資料</button>
 </div>
 <HelloWorld msg="Vite + Vue" />
</template>

<style scoped>
.logo {
 height: 6em;
 padding: 1.5em;
 will-change: filter;
}
.logo:hover {
 filter: drop-shadow(0 0 2em #646cffaa);
}
.logo.vue:hover {
 filter: drop-shadow(0 0 2em #42b883aa);
}
</style>           

首先,在template部分,添加一個按鈕以及對應click 事件。

接着,導入axios:

import axios from 'axios'

最後,編寫點選事件的handleClick方法,使用axios 發起GET 請求。其中,axios 請求的URL:http://localhost:3000/posts 是通過json-server 快速搭建的。

Vue 3 和 Axios 快速入門

json-server 是一個 node.js 子產品,運作 Express 伺服器,你可以指定一個 json 檔案作為 API 的資料源。

簡單的說,它可以模拟小型背景API 接口,在一個JSON檔案中操作資料。

指令:json-server --watch db.json

json-server 預設是開啟 CORS(跨域請求)支援。可以通過--nc 參數進行調整:

--no-cors, --nc Disable Cross-Origin Resource Sharing

指令:json-server --nc true --watch db.json

關于json-server 的使用,可以檢視連結:https://www.npmjs.com/package/json-server

三、測試驗證

成功啟動項目之後,通過浏覽器通路URL,會顯示【擷取資料】的按鈕。

Vue 3 和 Axios 快速入門

浏覽器控制台輸出結果,如圖所示:

Vue 3 和 Axios 快速入門

繼續閱讀