vue3获取天气预报
时间: 2025-06-21 11:19:51 浏览: 16
### Vue3 天气预报 API 调用示例
以下是基于 Vue3 的组合式 API 实现天气预报功能的一个完整示例。此示例通过高德地图的天气接口获取实时天气数据,并将其展示到页面上。
#### 安装依赖
为了简化 HTTP 请求的操作,可以安装 Axios 库来发送网络请求。
```bash
npm install axios
```
#### 示例代码
以下是一个完整的组件实现:
```vue
<template>
<div v-if="weatherData">
<h1>当前天气</h1>
<p>城市: {{ weatherData.city }}</p>
<p>温度: {{ weatherData.temperature }}°C</p>
<p>湿度: {{ weatherData.humidity }}%</p>
<p>风向: {{ weatherData.winddirection }}</p>
<p>风力等级: {{ weatherData.windpower }}</p>
</div>
<div v-else>
<p>加载中...</p>
</div>
</template>
<script setup>
import { ref, onMounted } from 'vue';
import axios from 'axios';
const weatherData = ref(null);
onMounted(async () => {
await fetchWeatherData();
});
async function fetchWeatherData() {
try {
const url = `https://restapi.amap.com/v3/weather/weatherInfo?city=上海&key=d77b4c08b2718e4e06def82570d3e834&extensions=base`;
const response = await axios.get(url);
if (response.data && response.data.lives && response.data.lives.length > 0) {
weatherData.value = response.data.lives[0];
}
} catch (error) {
console.error('获取天气失败', error);
}
}
</script>
<style scoped>
h1 {
color: #333;
}
p {
margin: 5px 0;
font-size: 16px;
}
</style>
```
---
#### 关键点解析
1. **`ref` 响应式变量**
- 使用 `ref` 创建了一个响应式的 `weatherData` 变量用于存储从 API 获取的数据[^3]。
2. **生命周期钩子 `onMounted`**
- 在组件挂载完成后自动调用 `fetchWeatherData()` 方法发起 API 请求[^3]。
3. **Axios 发起 GET 请求**
- 利用 Axios 向高德地图提供的天气接口发出请求,并将返回的结果赋值给 `weatherData`[^1]。
4. **错误处理**
- 如果请求过程中发生异常,则会在控制台打印错误日志以便调试[^2]。
5. **模板绑定**
- 将 `weatherData` 中的各项属性动态渲染到页面上的对应位置。
---
#### 注意事项
- 替换 URL 参数中的 `city` 字段为你想要查询的城市名称。
- 确保已申请有效的高德地图开发者密钥(即 `key`),并将该密钥替换为实际使用的值。
---
阅读全文
相关推荐


















