vue05-Axios异步通信

什么是Axios

Axios 是一个开源的可以用在浏览器和Node.js的异步通信框架,它的主要作用就是实现异步通信,其功能如下:

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

为什么要使用Axios

    由于Vue.js是一个视图层框架,并且作者严格遵守了SoC(关注度分离原则),所以Vue.js并不包含AJAX的通信功能,为了解决通信问题,作者单独开发了一个名为vue-resource的插件,不过在进入2.0版本之后就停止对该插件的维护并推荐使用Axios,少用jQuery,因为他对Dom操作太频繁。

vue 生命周期

vue有一个完整的生命周期,也就是从开始创建,初始化数据,编译模版,挂载Dom,渲染->更新->渲从创建到销毁的过程就是生命周期。

有兴趣的小船夫可以通过以下网站去看一下官方文档:
h t t p s : / / c n . v u e j s . o r g / v 2 / g u i d e / i n s t a n c e . h t m l \color{#FF0000}{https://cn.vuejs.org/v2/guide/instance.html} https://cn.vuejs.org/v2/guide/instance.html
以下生命周期模型:
在这里插入图片描述

代码实例

json文件

{ "programmers": [

    { "firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" },
    
    { "firstName": "Jason", "lastName":"Hunter", "email": "bbbb" },
    
    { "firstName": "Elliotte", "lastName":"Harold", "email": "cccc" }
    
    ],
    
    "authors": [
    
    { "firstName": "Isaac", "lastName": "Asimov", "genre": "science fiction" },
    
    { "firstName": "Tad", "lastName": "Williams", "genre": "fantasy" }
        
    ],
    
    "musicians": [
    
    { "firstName": "Eric", "lastName": "Clapton", "instrument": "guitar" },
    
    { "firstName": "Sergei", "lastName": "Rachmaninoff", "instrument": "piano" }
    
    ] }

实例代码

接下来编写代码实例:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
<!-- view层 模版 -->
<div id="vue">
  <div>{{info.authors}}</div>
</div>
<!-- 1.导入vue.js -->
<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.min.js"></script>
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
<script type="text/javascript"></script>
<script>
  var vm = new Vue({
      // 数据
      el:"#vue",
      // data: vm 的属性
      data(){
          return {
              // 请求返回参数的格式 必须和json字符串格式一样
              info: {
                  authors: {
                      firstName: null,
                      lastName: null,
                      email: null
                  }
              }
          }
      },
      mounted(){//钩子函数,链式编程(其中then可以理解为·然后·),ES6
          //其中 => 可以理解为指向的含义 
          axios.get('../data.json').then(response=>(this.info=response.data));
      }
      
  });
</script>
</body>
</html>

运行结果为:
在这里插入图片描述

在这里有必要向小船夫提醒一下: 闪 烁 问 题 \color{#FF0000}{闪烁问题} ,那么什么是闪烁,如下图
在这里插入图片描述

其中在网速较慢的时候会出现模版,如果在正规开发出现这个问题虽然是非致命的,但是在面对客户的时候这样子就会展示出我们专业素养不是很高,尽量避免。直接上代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!-- v-clock解决闪烁问题 -->
    <style>
        [v-clock]{
            display: none;
        }
    </style>
</head>
<body>
<!-- view层 模版 -->
<div id="vue" v-clock>
    <div>{{info.authors}}</div>
</div>
<!-- 1.导入vue.js -->
<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.min.js"></script>
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
<script type="text/javascript"></script>
<script>
    var vm = new Vue({
        // 数据
        el:"#vue",
        // data: vm 的属性
        data(){
            return {
                // 请求返回参数的格式 必须和json字符串格式一样
                info: {
                    authors: {
                        firstName: null,
                        lastName: null,
                        email: null
                    }
                }
            }
        },
        mounted(){//钩子函数,链式编程(其中then可以理解为·然后·),ES6
            //其中 => 可以理解为指向的含义 
            axios.get('../data.json').then(response=>(this.info=response.data));
        }
        
    });
</script>
</body>
</html>

这只是其中一种方法,小船夫们可以接着学会去百度编程🤜

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

敏姐儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值