vue-07 接口环境设置

本文介绍了一种通过环境变量实现不同部署阶段跨域解决方案的方法。详细步骤包括:在项目根目录下创建env.js文件来根据不同环境设置API基础路径,修改package.json以支持不同环境的构建,以及在main.js中引入env配置并应用于axios请求。此方案适用于Vue项目的JSONP或CORS跨域场景。

目录

1.概述

1.1.JSONP跨域或者CORS跨域配置接口环境,代理跨域的话就不需要这么麻烦

1.1.1根目录添加env.js

1.1.2修改package.json

1.1.3main.js

1.1.4启动测试

 


1.概述

开发线上的不同阶段,需要不同的配置,不同的跨域方式配置不同,打包的时候统一注入环境变量,输出不同版本包; 

1.1.JSONP跨域或者CORS跨域配置接口环境,代理跨域的话就不需要这么麻烦

代理 https://blog.youkuaiyun.com/adminBfl/article/details/109564817 2.3章节

1.1.1根目录添加env.js

env.js

let baseUrl;
//node.js api process.evn.NODE_ENV获取进程穿的参数
switch (process.env.NODE_ENV) {
    case "development":
        baseUrl = "http://dev-mall-pre.springboot.cn/api";
        break;
    case "test":
        baseUrl = "http://test-mall-pre.springboot.cn/api";
        break;
    case "production":
        baseUrl = "http://mall-pre.springboot.cn/api";
        break;
    default:
        baseUrl = "http://mall-pre.springboot.cn/api";
        break;
}

1.1.2修改package.json

--mode=development", //开发
--mode=test",    //测试
--mode=production",    //生产 

名字是固定的不能随意改,可以自定义

 "scripts": {
    "serve": "vue-cli-service serve --mode=development",
    "test": "vue-cli-service serve --mode=test",
    "build": "vue-cli-service build --mode=production",
    "lint": "vue-cli-service lint"
  },

 

 

1.1.3main.js

import Vue from 'vue'
import router from "./router";
import axios from "axios";
import VueAxios from "vue-axios";
import App from './App.vue'
import env from './env'
//设置axios 基础值
//根据前端跨域做调整,使用代理可以把api给替换为空
axios.defaults.baseURL ='/api';
axios.defaults.baseURL =env.baseURI;

1.1.4启动测试

选择一个测试,我选择test测试一下

可以看到启动的时候==mode=test显示出来了

访问项目在main.js debug可以看到里面已经是测试环境了

env.js

 

 

 

### Vue-CLI 配置环境变量 #### 创建项目 使用 `vue create` 命令可以创建一个新的 Vue CLI 项目。命令格式如下: ```bash vue create project-name ``` 这会初始化一个新项目并自动配置好基础的构建工具链。 #### 环境文件定义 为了方便管理不同环境下的配置项,Vue CLI 支持通过特定命名规则来加载不同的`.env` 文件作为环境变量源[^1]。这些文件应该放置于项目的根目录下,并遵循以下命名约定: - `.env`: 默认情况下适用于所有环境- `.env.development`: 开发环境中使用的额外覆盖属性。 - `.env.production`: 生产环境中使用的额外覆盖属性。 - `.env.test`: 测试环境中使用的额外覆盖属性。 每个文件中的键值对会被解析成进程级别的环境变量,在应用启动时注入到进程中去。 #### 使用内置 NODE_ENV 变量 默认情况下,Vue CLI 已经预设好了 `NODE_ENV` 这样的重要环境标志位。具体来说, - 执行 `npm run serve` 或者其他任何带有 `--mode development` 参数的任务时,它会被设定为 `"development"`; - 而执行像 `npm run build` 这样带 `--mode production` 参数的操作,则其值变为 `"production"`;如果没有显式指定模式,默认采用的是 `"development"` 模式[^2]。 因此可以根据当前所处的不同阶段整应用程序的行为逻辑,比如切换 API 请求的基础 URL 地址等操作。 #### 自定义环境变量前缀 VUE_APP_ 除了上述提到的标准环境变量外,还可以自定义一些全局可用的应用级别参数供组件访问。需要注意的是只有那些以前缀 `VUE_APP_` 开始声明过的才会被纳入最终打包产物之中成为可读取的状态。例如可以在 .env 文件里加入这样的条目: ```plaintext VUE_APP_API_URL=http://api.example.com/ ``` 之后便能够在 JavaScript/TypeScript 中这样获取它们: ```javascript console.log(process.env.VUE_APP_API_URL); // 输出 http://api.example.com/ ``` 这样做不仅有助于保持代码整洁度同时也提高了安全性,因为未加此特殊标记的其它环境变量不会被打包进去从而暴露给客户端浏览器端脚本。 #### 实际案例演示 假设现在有一个需求是在生产环境下改变 Axios 库发起 HTTP 请求的目标服务器地址为例,那么就可以按照下面的方式来进行设置: 在 `.env.production` 文件中添加一行记录: ```plaintext VUE_APP_BASE_URL=https://prod.api.server.com ``` 接着修改发送网络请求的地方做相应的判断处理: ```javascript if (process.env.NODE_ENV === 'production') { axios.defaults.baseURL = process.env.VUE_APP_BASE_URL; } else { axios.defaults.baseURL = 'http://localhost:8080'; } ``` 如此一来就能实现根据不同部署场景灵活变动接口用路径的目的了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值