安装 axios:
|
| npm install axios --save-dev |
|
接着在src目录下创建一个http.js脚本中,导入axios并通过create方法实例化一个http请求对象,这样我们才能在组件中使用。
src/http.js,代码:
|
| import axios from "axios"; | | | | | | const $http = axios.create({ | | baseURL: 'http://wthrcdn.etouch.cn/', | | timeout: 1000, | | headers: {'X-Custom-Header': 'foobar'} | | }); | | | | export default $http; |
|
在src/components目录下构建Forecast组件,使用axios模块:
| 1 | | 2 | | 3 | | 4 | | 5 | | 6 | | 7 | | 8 | | 9 | | 10 | | 11 | | 12 | | 13 | | 14 | | 15 | | 16 | | 17 | | 18 | | 19 | | 20 | | 21 | | 22 | | 23 | | 24 | | 25 | | 26 | | 27 | | 28 | | 29 | | 30 | | 31 | | 32 | | 33 | | 34 | | 35 | | 36 | | 37 | | 38 | | 39 | | 40 | | 41 | | 42 | | 43 | | 44 | | 45 | | 46 | | 47 | | 48 | | 49 | | 50 | | 51 | | 52 | | 53 | | 54 | | 55 | | 56 | | 57 | | 58 | | 59 | | 60 | | 61 | | 62 | | 63 | | 64 | | 65 | | 66 | | 67 | | 68 | | 69 | | 70 | | 71 |
|
| <template> | | <div> | | <input type="text" v-model="city"> | | <button @click="get_weather">获取天气</button> | | <table v-if="weather_list.length>1"> | | <tr> | | <th>日期</th> | | <th>天气</th> | | <th>温度</th> | | <th>风向</th> | | </tr> | | <tr v-for="weather in weather_list"> | | <td>{{ weather.date }}</td> | | <td>{{ weather.type }}</td> | | <td>{{ weather.low }}~{{ weather.high }}</td> | | <td>{{ weather.fengxiang }}{{ showFengLi(weather.fengli) }}</td> | | </tr> | | </table> | | </div> | | </template> | | | | <script> | | import $http from "../http"; | | | | export default { | | name: "Forecast", | | data() { | | return { | | city: "北京", | | weather_list: [], | | } | | }, | | created() { | | // 任意一个组件中都可以获取查询参数 | | console.log(this.$route.query); // 获取所有的查询参数 | | if (this.$route.query.city) { | | this.city = this.$route.query.city | | } | | | | }, | | methods: { | | get_weather() { | | // 发送http请求获取天气 | | $http.get("http://wthrcdn.etouch.cn/weather_mini", { | | params: { | | city: this.city, | | } | | }).then(response => { | | console.log(response.data.data.forecast); | | this.weather_list = response.data.data.forecast; | | }).catch(error => { | | console.log(error); | | }) | | }, | | showFengLi(content) { | | return content.replaceAll("<![CDATA[", "").replaceAll("]]>", ""); | | }, | | } | | } | | </script> | | | | <style scoped> | | table { | | width: 800px; | | border-collapse: collapse; | | } | | | | td, th { | | border: 1px solid red; | | } | | </style> |
|
在Home.Vue更新为:
| 1 | | 2 | | 3 | | 4 | | 5 | | 6 | | 7 | | 8 | | 9 | | 10 | | 11 | | 12 | | 13 | | 14 | | 15 | | 16 | | 17 | | 18 | | 19 | | 20 | | 21 | | 22 | | 23 | | 24 |
|
| <template> | | <div class="home"> | | <!-- <img alt="Vue logo" src="../assets/logo.png">--> | | <!-- <HelloWorld msg="Welcome to Your Vue.js App"/>--> | | <Nav></Nav> | | <Forecast></Forecast> | | | | </div> | | </template> | | | | <script> | | // @ is an alias to /src | | import Nav from '@/components/Nav.vue' | | import Forecast from '@/components/Forecast.vue' | | | | export default { | | name: 'Home', | | components: { | | Nav, | | Forecast | | } | | } | | </script> |
|
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现