博客列表 >vue3接口环境配置

vue3接口环境配置

阿杰
阿杰原创
2023年02月20日 15:25:111215浏览

前言

vue项目开发,会经历本地测试、打包、生产过程,其中不同阶段需要调试的api接口环境不同,要根据具体来设置。其实主要就是两个方面,配置‘本地运行’和‘打包运行’的api接口环境。

vue3项目的配置

  • vue3项目没有了config文件夹,需要在项目的根目录下创建相关文件

(1) 根目下创建指定文件
在项目的根目录新建3个文件夹,分别对应开发(dev),测试(test),生产(prod) 文件命名: .env.dev , .env.test , .env.prod

(2) 刚刚创建的三个文件对应的内容代码

  • .env.dev
  1. NODE_ENV = 'development'
  2. VUE_APP_CURRENTMODE = 'dev'
  3. VUE_APP_BASEURL = '本地开发api地址'
  • .env.prod
  1. NODE_ENV = 'production'
  2. VUE_APP_CURRENTMODE = 'prod'
  3. VUE_APP_BASEURL = '正式环境api地址'
  • .env.test
  1. NODE_ENV = 'production'
  2. VUE_APP_CURRENTMODE = 'prod'
  3. VUE_APP_BASEURL = '测试环境api地址'

(3) 修改package.json脚本

  1. "scripts": {
  2. "serve": "vue-cli-service serve",
  3. "build": "vue-cli-service build",
  4. "lint": "vue-cli-service lint",
  5. "dev":"vue-cli-service serve --mode dev",//本地运行命名
  6. "build:test":"vue-cli-service build --mode test",//测试环境打包命名
  7. "build:pro":"vue-cli-service build --mode prod"//正式环境打包命名
  8. },

(4) 项目中使用环境变量

  1. // 任意地方都可以使用
  2. console.log(process.env.VUE_APP_BASEURL)

(5) 运行命令

  1. 本地开发启动命令:npm run dev
  2. 测试环境打包:npm run build:test
  3. 正式环境打包:npm run build:pro

正式配置请求环境

1.项目根目录创建环境变量代码和指定文件

本地运行环境
(1) .env.dev

  1. # 本地环境
  2. NODE_ENV = 'development'
  3. # 本地环境模块名
  4. VUE_APP_CURRENTMODE = 'dev'
  5. # 本地环境,api前缀
  6. VUE_APP_BASE_API = '/api'
  7. # 本地测试环境,url地址
  8. VUE_APP_BASE_URL = '本地开发api地址'

本地运行测试环境
(2).env.dev_test

  1. # 本地测试环境
  2. NODE_ENV = 'development'
  3. # 本地测试环境模块名
  4. VUE_APP_CURRENTMODE = 'dev_test'
  5. # 本地测试环境,api前缀
  6. VUE_APP_BASE_API = '/api'
  7. # 本地测试环境,url地址
  8. VUE_APP_BASE_URL = '本地测试开发api地址'

打包正式环境
(3).env.prod

  1. # 线上环境
  2. NODE_ENV = 'production'
  3. # 线上环境模块名
  4. VUE_APP_CURRENTMODE = 'prod'
  5. # 线上环境,api前缀
  6. VUE_APP_BASE_API = '/api_production'
  7. # 线上环境,url地址
  8. VUE_APP_BASE_URL = '线上正式环境api地址'

打包测试环境
(4).env.prod_test

  1. # 线上环境
  2. NODE_ENV = 'production'
  3. # 线上测试环境模块名
  4. VUE_APP_CURRENTMODE = 'prod'
  5. # 线上测试环境,api前缀
  6. VUE_APP_BASE_API = '/api_test'
  7. # 线上测试环境,url地址
  8. VUE_APP_BASE_URL = '线上测试环境api地址'

项目结构如下

2.项目根目录创建vue.config.js,配置反向代理解决跨域

当前配置可以解决请求跨域 和打包页面白板

  1. module.exports = {
  2. // 设置代理(解决请求跨域)
  3. devServer:{
  4. host: '0.0.0.0', //本地地址
  5. port: 8080, //自定义端口
  6. https: false, //false关门https,true为开启
  7. open: false, //自动打开浏览器
  8. proxy:{
  9. [process.env.VUE_APP_BASE_API]:{
  10. target: process.env.VUE_APP_BASE_URL,
  11. ws: true,
  12. changeOrigin: true,
  13. pathRewrite:{
  14. ['^'+process.env.VUE_APP_BASE_API]:''
  15. }
  16. }
  17. }
  18. },
  19. // 解决打包页面白板
  20. publicPath: "./"
  21. }

3.封装axios配置环境变量,让请求本地运行的时候走代理服务器 发布线上的时候同时也可以兼容

src/utils/request.js

  1. import axios from 'axios'
  2. const service = axios.create({
  3. baseURL: process.env.NODE_ENV==='development'?process.env.VUE_APP_BASE_API:process.env.VUE_APP_BASE_URL,
  4. timeout: 5000
  5. })
  6. // 不需要token验证的 接口白名单
  7. // const APIWhite = ['users/login']
  8. // 请求拦截 设置统一header
  9. service.interceptors.request.use(
  10. config =>{
  11. return config;
  12. },
  13. error =>{
  14. return Promise.reject(error)
  15. }
  16. )
  17. // 响应拦截 401 token过期等处理
  18. service.interceptors.response.user(
  19. response =>{
  20. return response
  21. },
  22. error =>{
  23. return Promise.reject(error)
  24. }
  25. )
  26. export default service

api封装管理(vue3不能像vue2一样在main.js挂载全局变量)
scr/api/index.js

  1. import request from '@/utils/request'
  2. // 登录
  3. export function doLogin (data) {
  4. return request({url: '/index/envtest',method: 'POST', data})
  5. }

页面调用

  1. import { doLogin } from '../api/index'
  2. doLogin({},res=>{
  3. console.log(res);
  4. })

结果如下:

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议