1.npm --save 和 --save-dev 有什么区别

发布到线上的叫生产环境~,在本地开发的时候叫开发环境,--save就是会打包到线上去并且在线上环境能用到的,比如你npm install 一个vue-router,这个在线上环境也是能用到的依赖,所以你要--save~ 比如vue-loader这个组件只需要在开发的时候编译就好,线上并不需用的到,所以就放在开发的--save-dev里就好~~~~

2.安装vue axios

axios 官方文档http://www.axios-js.com/

npm安装

npm install --save axios vue-axios

main.js 引入

import axios from 'axios'
import VueAxios from 'vue-axios'
Vue.use(VueAxios, axios)

### import 引用, Vue.use 注册到vue 实例上

vue.use 与Vue.prototype. $xx 区别

vue 组件的三种使用方式教程

Vue经典面试题: Vue.use和Vue.prototype.$xx有血缘关系吗?

index.vue 页面 中使用

## 方法一
this.axios.get(api).then((response) => {
console.log(response)
})
## 方法二
this.$http.get(api).then((response) => {
console.log(response)
})

### 在.vue文件中使用 this 代表当前vue , (response)=>{}采用的是es6写法 解决函数内this指向问题

3.vue部署apache 刷新页面 404

添加伪静态 ->新建文件.htaccess文件

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.html$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.html [L]
</IfModule>

4. axios 并发请求

 this.axios.all([this.axios.get('/api/index/index'),this.axios({
url:"/api/Address/index",
params:{
user_id:1
}
})]).then(res=>{
console.log(res);
})
## /api 更改为自己的地址
## 这里是两种get请求写法,第二个写法默认是get请求, get请求传参数必须使用params:{}
## 缺点 结果为下图 拿数据的话 只能 res[0],res[1]

this.axios.all([this.axios.get('/api/index/index'),this.axios({
url:"/api/Address/index",
params:{
user_id:1
}
})]).then(this.axios.spread((res1,res2)=>{
console.log(res1);
console.log(res2);
}))
## 使用 axios.spread
## 现在 数据是展开的状态 ,如下图

5.axios 全局配置

请求超时 在main.js 中设置

axios.defaults.timeout =  1000;

## 通过关键字 defaults 来设置

为什么要创建axios的实例呢?
当我们从axios模块中导入对象时, 使用的实例是默认的实例.
当给该实例设置一些默认配置时, 这些配置就被固定下来了.
但是后续开发中, 某些配置可能会不太一样.
比如某些请求需要使用特定的baseURL或者timeout或者content-Type等.
这个时候, 我们就可以创建新的实例, 并且传入属于该实例的配置信息.

常用配置项

请求地址

url: '/user',

请求类型

method: 'get',

请根路径

baseURL: 'http://www.mt.com/api',

请求前的数据处理

transformRequest:[function(data){}],

请求后的数据处理

transformResponse: [function(data){}],

自定义的请求头

headers:{'x-Requested-With':'XMLHttpRequest'},

URL查询对象

params:{ id: 12 }, 查询对象序列化函数
paramsSerializer: function(params){ }

request body
data: { key: 'aa'}, 超时设置s
timeout: 1000, 跨域是否带Token
withCredentials: false, 自定义请求处理
adapter: function(resolve, reject, config){}, 身份验证信息
auth: { uname: '', pwd: '12'}, 响应的数据格式 json / blob /document /arraybuffer / text / stream

responseType: 'json',

在一个项目里 创建不同的axios 实例

var instance = axios.create({
baseURL: 'https://some-domain.com/api/',
timeout: 1000,
headers: {'X-Custom-Header': 'foobar'}
});

axios 中文文档

6.axios封装

单独封装一个文件 request.js

import axios from 'axios'

export function request(config) {
// 1.创建axios的实例
const instance = axios.create({
baseURL: '/api',
timeout: 5000
})
return instance(config)
}
## 这里把封装好的 实例return出去,

.vue 文件

// 导入
import { request } from "@/network/request";
request({
url: "/Address/index",
params: {
user_id: 1
}
}) .then(res => {
console.log(res);
})
.catch(err => {
console.log(err);
});
### 封装好的实例本就就有。then catch 属性, 所有这里直接拿就行

### 迷惑 。。这里request 函数的 第一个参数 url + params 当 config 传给封装好的实例了,但是没有看到封装好的实例 用这个参数 ,于是我找到 axios 的源码看了一下,看下图。

编辑器 查看axios源码

7.axios 拦截

请求成功 /失败 拦截

响应成功 /失败 拦截

共四个拦截器

一.每次请求拦截

// 2.axios的拦截器
// 2.1.请求拦截的作用
instance.interceptors.request.use(config => {
console.log(config);
// 1.比如config中的一些信息不符合服务器的要求

// 2.比如每次发送网络请求时, 都希望在界面中显示一个请求的图标

// 3.某些网络请求(比如登录(token)), 必须携带一些特殊的信息
return config
## 必须return 吧结果返回过去
}, err => {
// console.log(err);
})

二 响应拦截

  // 2.2.响应拦截
instance.interceptors.response.use(res => {
// console.log(res);
return res.data
### 配置每次响应成功 只返回data
}, err => {
console.log(err);
})

instance  是 文章一开始 封装的 axios 实例

vue axios 总结篇的更多相关文章

  1. vue项目搭建 (二) axios 封装篇

    vue项目搭建 (二) axios 封装篇 项目布局 vue-cli构建初始项目后,在src中进行增删修改 // 此处是模仿github上 bailicangdu 的 ├── src | ├── ap ...

  2. vue axios 取消上次请求

    axios.defaults.timeout = 1000 * 5axios.defaults.baseURL = baseUrlvar CancelToken = axios.CancelToken ...

  3. vue axios拦截器 + 自编写插件 实现全局 loading 效果;

    项目需求:用自定义的 .gif 图标实现全局 loading 效果:为避免在每个页面手动添加,且简单高效的实现,经查阅资料,最终采用了 vue axios拦截器 + 自编写 loading 插件:下面 ...

  4. vue axios使用form-data的形式提交数据的问题

    vue axios使用form-data的形式提交数据vue axios request payload form data由于axios默认发送数据时,数据格式是Request Payload,而并 ...

  5. Vue 框架-01- 入门篇 图文教程

    Vue 框架-01- 入门篇 图文教程 Vue 官网:https://cn.vuejs.org/ 关于 Vue 的基础大家可以在官网的[起步]去学习,本系列文章主要针对实例项目应用 一.Vue 的安装 ...

  6. VUE AXIOS 跨域问题

    背景: 后台跨域使用通配符:context.Response.Headers.Add("Access-Control-Allow-Origin", "*"); ...

  7. 基于Vue + axios + WebApi + NPOI导出Excel文件

    一.前言 项目中前端采用的Element UI 框架, 远程数据请求,使用的是axios,后端接口框架采用的asp.net webapi,数据导出成Excel采用NPOI组件.其业务场景,主要是列表页 ...

  8. vue Router——进阶篇

    vue Router--基础篇 1.导航守卫 正如其名,vue-router 提供的导航守卫主要用来通过跳转或取消的方式守卫导航.有多种机会植入路由导航过程中:全局的, 单个路由独享的, 或者组件级的 ...

  9. vue+axios新手实践实现登陆

    vue+axios新手实践实现登陆 https://segmentfault.com/a/1190000015201803 增加 利用HTML5的history.replacestate()修改当前页 ...

随机推荐

  1. Unix/Linux 从哪儿来?那些改变世界的人们...

    昨天看文章时发现自己对 linux 操作系统不够了解,还记得 17 年时听过老师的一些课,对 linux 的历史有一点了解,不过当时并没有记录笔记,现在已经忘的差不多了. 这次从网上找资料,又重新看了 ...

  2. 最新JetBrains PyCharm 使用教程--常用快捷键和设置PyCharm为Eclipse快捷键(四)

    PyCharm常用快捷键使用 Ctrl + D:复制当前行 Ctrl + Y:删除当前行 Ctrl + Z 撤销 Shift + Enter:快速换行 Ctrl + /:快速注释 Ctrl + F: ...

  3. linux 命令 | 常用命令导图(0)

  4. numpy---python数据分析

    最后大图可点开保存 文章目录 最后大图可点开保存 学习目标 3.1.1Numpy介绍 3.1.2 ndarray介绍 3.1.3 ndarray与Python原生list运算效率对比 3.1.4 nd ...

  5. linux引导之grub2

    先了解下什么是Bootloader 以下是百度百科释意 在嵌入式操作系统中,BootLoader是在操作系统内核运行之前运行.可以初始化硬件设备.建立内存空间映射图,从而将系统的软硬件环境带到一个合适 ...

  6. pat 1011 World Cup Betting(20 分)

    1011 World Cup Betting(20 分) With the 2010 FIFA World Cup running, football fans the world over were ...

  7. 磁盘配额管理disk quotas

    条件: a.确保系统内核支持,Linux一般都支持 b.确保分区格式支持,ext2都只持! c.安装有quota软件,centos默认都有! (1)检查内核是否打开磁盘配额支持 [root@cento ...

  8. Win32 COM组件 x Android Service (二)

    继续上一篇. 如果不使用AIDL(Android Interface Definition Language接口描述语言)编写服务接口的话,(COM组件,CORBA组件,ICE组件以及其它远程调用框架 ...

  9. Long, long ago

    Tell me the tales that to me were so dear; 请你给我讲那亲切的故事; Long, long ago; long, long ago.; 多年以前,多年以前; ...

  10. ArcGIS 用QueryTask查询上限1000的问题

    1.打开ArcGIS Server找到自己发布的服务,右键Service Properties,左侧点击Parameters,右侧有一个Maximum number of records return ...