vue请求数据的三种方式


Posted in Javascript onMarch 04, 2020

请求数据的方式:

  • vue-resource 官方提供的 vue的一个插件
  • axios
  • fetch-jsonp

一,vue-resource请求数据

介绍:vue-resource请求数据方式是官方提供的一个插件

使用步骤:

1、安装vue-resource模块

cnpm install vue-resource --save

加--save是为了在package.json中引用,表示在生产环境中使用。因为我们在日常开发中,如果我们要打包代码给其他人或者上传到github,又或者要发布代码时,package.json就是安装所需要的包。如果只在开发环境中使用,则只需要--save-dev,有一些只在开发环境中用,有一些要在生产环境中用。

2、在 main.js 引入 vue-resource

import VueResource from 'vue-resource';
Vue.use(VueResource);

3、在组件里面直接使用

this.$http.get(地址).then(function(){

})

注意:this.$http.get()等等的各种http请求都是继承promise的。promise是异步的请求;其次,.then箭头函数里的this代表的是上下文。根据箭头函数this的定义,只在函数定义时就已经赋值可知,this,指代的是定义函数的对象,在vue中对象就是methods当前页面。所以this指导的是data里面的数据。如果想要获取包裹函数外函数的数据,即闭包的概念。实现方法就是在外层函数加一个var that =  this;将外层的this先储存到that中。

实例:

Info.vue

<template>
  <div id="info">
    <button @click="getData">获取数据</button>
    <ul>
      <li v-for="(item,index) in list" v-bind:key="index">
        {{item.title}}
      </li>
    </ul>
  </div>
</template>

<script>
  export default {
    name: "Info",
    data() {
      return {
        list: []
      }
    },
    methods: {
      getData: function () {
        let api = 'http://www.phonegap100.com/appapi.php?a=getPortalList&catid=20&page=1';
        //此处推荐使用箭头函数。
        this.$http.get(api).then((res)=>{
          this.list = res.body.result;
        }, (err)=>{
          console.log(err);
        });
      }
    },
    mounted() {
      this.getData();
    }
  }
</script>

如果getData()中不适用箭头函数,就需要注意this问题。

getData: function () {
  let api = 'http://www.phonegap100.com/appapi.php?a=getPortalList&catid=20&page=1';
  const _this = this;
  this.$http.get(api).then(function (res) {
    _this.list = res.body.result;
  }, function (err) {
    console.log(err);
  });
}

二,axios请求数据

介绍:这是一个第三方的插件 github地址:https://github.com/axios/axios

axios 与 fetch-jsonp 同为第三方插件

1、安装

cnpm install axios --save

直接调用。和vue-resource的区别是:aixos是每在一个页面用一次就要在该页面调用一次。vue-resource是绑定了全局的了。

2、哪里用哪里引入axios

Axios.get(api).then((response)=>{
  this.list=response.data.result;
}).catch((error)=>{
  console.log(error);
})

关于axios的跨域请求

在config->index.js->proxyTable配置如下:target填写自己想要的地址

vue请求数据的三种方式

如下配置,url为地址后面所带的参数,配置好后,现在npm run dev 运行就行。

vue请求数据的三种方式

关于多个并发请求:

vue请求数据的三种方式

上面这个是同一地址的跨域,如果要拿不同地址的跨域,只需要更改config->index.js->proxyTable的配置,增加地址块就行。

三,关于fetch-jsonp

github地址:https://github.com/camsong/fetch-jsonp

1、安装

cnpm install fetch-jsonp --save

2、哪里用哪里引入fetch-jsonp

fetchJsonp('/users.jsonp')
 .then(function(response) {
  return response.json()
 }).then(function(json) {
  console.log('parsed json', json)
 }).catch(function(ex) {
  console.log('parsing failed', ex)
 })

到此这篇关于vue请求数据的三种方式的文章就介绍到这了,更多相关vue 请求数据内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
js获取div高度的代码
Aug 09 Javascript
javascript 面向对象思想 附源码
Jul 07 Javascript
jquery如何根据值设置默认的选中项
Mar 17 Javascript
JS实现网页上随滚动条滚动的层效果代码
Nov 04 Javascript
JS在onclientclick里如何控制onclick的执行
May 30 Javascript
基于AngularJS实现iOS8自带的计算器
Sep 12 Javascript
利用webstrom调试Vue.js单页面程序的方法教程
Jun 06 Javascript
使用requirejs模块化开发多页面一个入口js的使用方式
Jun 14 Javascript
BootStrap入门学习第一篇
Aug 28 Javascript
小程序实现列表点赞功能
Nov 02 Javascript
JavaScript多种图形实现代码实例
Jun 28 Javascript
javascript实现下拉菜单效果
Feb 09 Javascript
使用Vue 自定义文件选择器组件的实例代码
Mar 04 #Javascript
JS中==、===你分清楚了吗
Mar 04 #Javascript
js数组相减简单示例【删除a数组所有与b数组相同元素】
Mar 04 #Javascript
通过实例了解Javascript柯里化流程
Mar 03 #Javascript
微信小程序getLocation 需要在app.json中声明permission字段
Mar 03 #Javascript
Javascript作用域和作用域链原理解析
Mar 03 #Javascript
JS数组方法reduce的用法实例分析
Mar 03 #Javascript
You might like
在Windows版的PHP中使用ADO
2006/10/09 PHP
PHP 日期加减的类,很不错
2009/10/10 PHP
Zend Framework教程之Zend_Form组件实现表单提交并显示错误提示的方法
2016/03/21 PHP
window.open的功能全解析
2006/10/10 Javascript
IE与FireFox的兼容性问题分析
2007/04/22 Javascript
js随机颜色代码的多种实现方式
2013/04/23 Javascript
探讨JavaScript中声明全局变量三种方式的异同
2013/12/03 Javascript
jQuery 仿百度输入标签插件附效果图
2014/07/04 Javascript
jQuery 删除或是清空某个HTML元素示例
2014/08/04 Javascript
JavaScript中获取鼠标位置相关属性总结
2014/10/11 Javascript
推荐25个超炫的jQuery网格插件
2014/11/28 Javascript
jQuery实现点击图片翻页展示效果的方法
2015/02/16 Javascript
js实现简单div拖拽功能实例
2015/05/12 Javascript
js实现的奥运倒计时时钟效果代码
2015/12/09 Javascript
jQuery实现的精美平滑二级下拉菜单效果代码
2016/03/28 Javascript
Bootstrap所支持的表单控件实例详解
2016/05/16 Javascript
微信小程序 数组中的push与concat的区别
2017/01/05 Javascript
详解VUE 对element-ui中的ElTableColumn扩展
2018/03/28 Javascript
nodejs 如何手动实现服务器
2018/08/20 NodeJs
JavaScript制作3D旋转相册
2020/08/02 Javascript
使用 Angular RouteReuseStrategy 缓存(路由)组件的实例代码
2019/11/01 Javascript
Python3里的super()和__class__使用介绍
2015/04/23 Python
实例讲解Python的函数闭包使用中应注意的问题
2016/06/20 Python
python下PyGame的下载与安装过程及遇到问题
2019/08/04 Python
django框架创建应用操作示例
2019/09/26 Python
如何获取Python简单for循环索引
2019/11/21 Python
详解pycharm自动import所需的库的操作方法
2020/11/30 Python
html5 canvas 画图教程案例分析
2012/11/23 HTML / CSS
HTML5+CSS3模仿优酷视频截图功能示例
2017/01/05 HTML / CSS
简述进程的启动、终止的方式以及如何进行进程的查看
2014/02/20 面试题
保安2014年终工作总结
2014/12/06 职场文书
教师廉洁自律个人总结
2015/02/10 职场文书
会议通知范文
2015/04/15 职场文书
2015年大班保育员工作总结
2015/05/18 职场文书
你真的会用Mysql的explain吗
2022/03/31 MySQL
vue实现省市区联动 element-china-area-data插件
2022/04/22 Vue.js