Vue系列教程(12)- 异步通信(Axios)

简介: Vue系列教程(12)- 异步通信(Axios)

1. 引言

通过前面的章节,我们已经学会了vue的组件,有兴趣的同学可以参阅下:

本文主要讲解的是Vue的异步通信框架Axios,学习之前,先贴上一张Vue的生命周期图(可以类比于Android里的Activity生命周期)。

2. Axios

2.1 什么是Axios

Axios是一个开源的可以用在浏览器端和node.JS的异步通信框架, 主要作用就是实现ajax异步通信,其功能特点如下:

  • 从浏览器中创建XMLHttpRequests
  • node.js创建http请求
  • 支持Promise API[JS中链式编程]
  • 拦截请求和响应
  • 转换请求数据和响应数据
  • 取消请求
  • 自动转换JSON数据
  • 客户端支持防御XSRF(跨站请求伪造)

2.2 Axios案例

2.2.1 创建模拟数据

首先创建模拟从网络返回的json数据,data.json内容如下:

{
    "name": "码云",
    "url": "https://gitee.com/",
    "page": 1,
    "isNonProfit": true,
    "address": {
      "street": "天河",
      "city": "广州",
      "country": "中国"
    },
    "links": [
      {
        "name": "Axios中文文档",
        "url": "http://www.axios-js.com/zh-cn/docs/"
      },
      {
        "name": "百度",
        "url": "https://www.baidu.com/"
      }
    ]
  }

2.2.2 代码实现

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!--引入js文件-->
    <script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.min.js"></script>
    <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
    <!--v-cloak 解决闪烁问题-->
    <style>
        [v-cloak] {
            display: none;
        }
    </style>
</head>
<body>
    <div id="vue">
        <div>地名:{{info.name}}</div>
        <div>地址:{{info.address.country}}--{{info.address.city}}--{{info.address.street}}</div>
        <a v-bind:href="info.url" >点击跳转{{info.url}}</a>
    </div>
    <script type="text/javascript">
        var vm = new Vue({
            el: "#vue",
            //data:属性:vm
            data() {
                return {
                    // 请求的返回参数的格式,必须和Json字符串一样
                    info: {
                        name: null,
                        address: {
                            country: null,
                            city: null,
                            street: null
                        },
                        url: null
                    }
                }
            },
            mounted() {//钩子函数
                axios.get('data.json').then(response => (this.info = response.data));
            }
        });
    </script>
</body>
</html>

运行结果如下:

当然如果如下报错,是浏览器设置的问题,解决方案https://blog.csdn.net/sanlingwu/article/details/79193213

3. 小结

  • 在这里使用了v-binda:href的属性值与Vue实例中的数据进行绑定
  • 使用axios框架的get方法请求AJAX并自动将数据封装进了Vue实例的数据对象中
  • 我们在data中的数据结构必须和Ajax响应回来的数据格式匹配
目录
相关文章
|
4天前
|
JavaScript
vue封装axios(用interceptors封装)
vue封装axios(用interceptors封装)
14 0
|
3天前
|
JavaScript 前端开发 开发者
Vue的事件处理机制提供了灵活且强大的方式来响应用户的操作和组件间的通信
【5月更文挑战第16天】Vue事件处理包括v-on(@)指令用于绑定事件监听器,如示例中的按钮点击事件。事件修饰符如.stop和.prevent简化逻辑,如阻止表单默认提交。自定义事件允许组件间通信,子组件通过$emit触发事件,父组件用v-on监听并响应。理解这些机制有助于掌握Vue应用的事件控制。
16 4
|
4天前
|
资源调度 JavaScript 前端开发
【vue】vue中的路由vue-router,vue-cli脚手架详细使用教程
【vue】vue中的路由vue-router,vue-cli脚手架详细使用教程
|
4天前
|
JavaScript 前端开发
vue3+ts+element home页面侧边栏+头部组件+路由组件组合页面教程
这是一个Vue.js组件代码示例,展示了带有侧边栏导航和面包屑导航的布局。模板中使用Element Plus组件库,包含可折叠的侧边栏,其中左侧有 Logo 和导航列表,右侧显示更具体的子菜单。`asideDisplay`控制侧边栏宽度。在`script`部分,使用Vue的响应式数据和生命周期钩子初始化路由相关数据,并从localStorage恢复状态。样式部分定义了组件的颜色、尺寸和布局。
23 1
|
4天前
|
存储 JavaScript 前端开发
父子组件通信:有效地在Vue组件树中传递数据
【4月更文挑战第24天】Vue.js中的组件通信是实现可维护和可扩展代码的关键。遵循单向数据流原则,数据从父组件通过`props`传给子组件,子组件通过`$emit`触发事件响应。常用通信方式包括:1) `Props`和`Events`基础通信;2) `Provide / Inject`跨级通信;3) 使用Vuex管理复杂状态;4) 共享祖先组件或Vuex处理非父子组件通信;5) 少量使用`ref`和`$parent / $children`直接访问。选择合适的方式能优化应用性能和用户体验。
|
4天前
|
JSON JavaScript 前端开发
< 每日份知识快餐:axios是什么?如何在Vue中 封装 axios ? >
本文介绍了前端开发中常用的HTTP客户端库Axios,它基于Promise,支持浏览器和Node.js,特点是功能强大、支持Promise API和并发请求,并能拦截请求和响应。文章强调了理解Axios的内部原理和优化使用的重要性,不仅讲解了基本的安装、导入和使用方法,还阐述了为何选择Axios,包括其丰富的配置选项和良好的浏览器支持。此外,文章探讨了封装Axios的必要性,以减少重复代码和提高代码维护性,并给出了设置接口请求前缀、请求头、超时时间以及封装请求方法和拦截器的示例。通过封装,开发者可以更高效地管理和使用Axios,适应不同项目需求。
|
4天前
|
JSON 前端开发 JavaScript
Vue+Axios+SpringBoot后端同时接收文件和json作为请求参数
Vue+Axios+SpringBoot后端同时接收文件和json作为请求参数
39 0
|
4天前
Vue3系列教程之插槽slot详解
Vue3系列教程之插槽slot详解
13 0
|
4天前
|
JavaScript 定位技术 容器
Vue项目中引入地图的详细教程
Vue项目中引入地图的详细教程
|
4天前
|
前端开发 应用服务中间件 nginx
Vue+SpringBoot+Axios的跨域问题
Vue+SpringBoot+Axios的跨域问题
21 0