vue新建环境变量以及网络请求工具axios的二次封装详解

 更新时间:2023年06月20日 11:08:49   作者:风中凌乱的男子  
这篇文章主要为大家介绍了vue新建环境变量以及网络请求工具axios的二次封装详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

1. 【环境变量】背景:

  • 在我们的实际项目开发中,一般会区分几个环境,分别是开发环境测试环境生产环境,当然不排除分的比较细的还有预发布环境,一般来说这四个环境就足够我们使用了。

2. 新建环境步骤:

2.1 在根目录下新建4个环境变量文件:

  • .env.dev【开发环境】
  • .env.test【测试环境】
  • .env.uat【预发布环境】
  • .env.prod【生产环境】
  • 四个环境内的文件内容如下:
//.env.dev文件
NODE_ENV = dev
# base url
VUE_APP_BASE_URL = "https://dev.it98k.cn"
--------------------------------------------------------------
//.env.test文件
NODE_ENV = test
# base url
VUE_APP_BASE_URL = "https://test.it98k.cn"
--------------------------------------------------------------
//.env.uat文件
NODE_ENV = uat
# base url
VUE_APP_BASE_URL = "https://uat.it98k.cn"
--------------------------------------------------------------
//.env.prod文件
NODE_ENV = prod
# base url
VUE_APP_BASE_URL = "https://prod.it98k.cn"
--------------------------------------------------------------

2.2 修改package.json【scripts】下的启动命令:

"scripts": {
    "serve": "vue-cli-service serve --mode dev",
    "build:test": "vue-cli-service build --mode test",
    "build:uat": "vue-cli-service build --mode uat",
    "build:prod": "vue-cli-service build --mode prod"
  },
  • 这样修改完,本地启动项目命令依然是:npm run serve
  • 打包测试环境的命令是:npm run build:test
  • 打包预发布环境的命令是:npm run build:uat
  • 打包生产环境的命令是:npm run build:prod

3. 【基于axios的二次封装】背景:

  • 在实际开发项目中,网络请求基本上使用axios网络请求工具,但是单纯的使用像axios.get('http://xxxxx.com')来请求接口,随着项目越来越大,页面越来越多,功能越来越完善,我们势必会写大量的axios请求,每次都这么写,费时费力,也不方便统一管理,所以,需要将axios进行二次封装,以达到我们开发项目的时候省时、省力、省心。

3.1新建utils/request.js文件

第一步,在src目录下,新建utils/request.js文件,文件内容如下:

//首先引入axios
import axios from 'axios'
//然后通过create方法来创建一个请求服务
//然后create方法内有一些配置项,比如接口域名`baseURL`、接口请求超时时间`timeout`
//接口url`url`
//接口请求方式`method`等等,需要我们按需传入
// create an axios instance
const service = axios.create({
  baseURL: process.env.VUE_APP_BASE_URL, // 完整的api地址 = 接口域名+ 接口路径
  timeout: 5000 // 请求超时时间 5s
})
//下面会定义两个拦截器,分别是 `请求拦截器`,`响应拦截器`
//`请求拦截器`是前端请求后端接口前处理的一些逻辑,比如开启loading,配置header请求头等等
//`响应拦截器`就是后端响应我们前端,返回回来的数据,比如我们可以在这响应拦截器内拿到status Code
//拿到后端接口返回的code,关闭loading、根据code码处理一些详细的逻辑等等一系列操作
//request interceptor   请求拦截器  
service.interceptors.request.use(
  config => {
    // do something before request is sent。在发送请求之前做一些事情
    config.headers['token'] = "xxxxxx"
    return config
  },
  error => {
    // do something with request error
    console.log(error) // for debug
    return Promise.reject(error)
  }
)
// response interceptor  响应拦截器
service.interceptors.response.use(
  response => {
    const res = response.data
    // if the custom code is not 20000, it is judged as an error.
    if (res.code !== 200) {
      alert(res.message || 'Error')
      return Promise.reject(new Error(res.message || 'Error'))
    } else {
      return res
    }
  },
  error => {
    console.log('err' + error) // for debug
    alert(res.message || 'Error')
    return Promise.reject(error)
  }
)
// 最后暴露我们声明的 service 服务
export default service

4. api的封装与使用

  • api请求方法,也是要做一个封装的,封装流程如下

4.1 在src目录下新建api/index.js文件

文件内容如下:

import request from '../utils/request';
//登录接口,post方式传参用data
export function login(data) {
  return request({
    url: '/api/login',
    method: 'post',
    data
  })
}
//获取xx列表接口,get方式传参用params
export function getList(params) {
  return request({
    url: '/api/getList',
    method: 'get',
    params
  })
}

4.2 使用封装好的api

在需要的页面,比如我们的登录页面需要调用登录接口,我们就要这样用

//首先第一步要用import导入进来我们的登录接口
import { login } from '../api/index'
//然后直接调用login方法
login({username:'admin',password:"123456"}).then(res=>{
      console.log(res);
})

以上就是vue新建环境变量以及网络请求工具axios的二次封装详解的详细内容,更多关于vue axios封装的资料请关注脚本之家其它相关文章!

相关文章

  • vue-router项目实战总结篇

    vue-router项目实战总结篇

    vue-router 是 Vue.js 官方的路由库.这篇文章主要介绍了vue-router项目实战总结,需要的朋友可以参考下
    2018-02-02
  • 解决VUE项目使用Element-ui 下拉组件的验证失效问题

    解决VUE项目使用Element-ui 下拉组件的验证失效问题

    这篇文章主要介绍了解决VUE项目使用Element-ui 下拉组件的验证失效问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • Vue常用的几个指令附完整案例

    Vue常用的几个指令附完整案例

    越来越多的人在用Vue,刚开始接触vue的话常接触的指令就几个,统一归纳一下。感兴趣的朋友跟随小编一起看看吧
    2018-11-11
  • el-menu动态加载路由的实现

    el-menu动态加载路由的实现

    本文主要介绍了el-menu动态加载路由的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • 使用el-form-item设置标签长度

    使用el-form-item设置标签长度

    这篇文章主要介绍了使用el-form-item设置标签长度方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-10-10
  • 前端Vue select下拉框使用以及监听事件详解

    前端Vue select下拉框使用以及监听事件详解

    由于前端项目使用的是Vue.js和bootstrap整合开发,中间用到了select下拉框,这篇文章主要给大家介绍了关于前端Vue select下拉框使用以及监听事件的相关资料,需要的朋友可以参考下
    2024-03-03
  • Vue+Element树形表格实现拖拽排序示例

    Vue+Element树形表格实现拖拽排序示例

    本文主要介绍了Vue+Element树形表格实现拖拽排序示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • VUE使用DXFParser组件解析dxf文件生成图片的操作代码

    VUE使用DXFParser组件解析dxf文件生成图片的操作代码

    这篇文章主要介绍了VUE使用DXFParser组件解析dxf文件生成图片的操作代码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-09-09
  • 深入理解Vue transition源码分析

    深入理解Vue transition源码分析

    本篇文章主要介绍了深入理解Vue transition源码分析,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • Vue动态权限登录实现(基于路由与角色)

    Vue动态权限登录实现(基于路由与角色)

    很多应用都会需要对不同的用户进行权限控制,本文主要介绍了Vue动态权限登录实现(基于路由与角色),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05

最新评论