登录  /  注册
博主信息
博文 98
粉丝 1
评论 0
访问量 77909
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
vue3接口环境配置
阿杰
原创
2112人浏览过

前言

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举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学