Blogger Information
Blog 87
fans 1
comment 0
visits 58329
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
vue3接口环境配置
阿杰
Original
1217 people have browsed it

前言

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. })

结果如下:

Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post