vue项目配置环境变量与代理服务器

vue项目配置环境变量与代理服务器

环境变量

方式一:

使用一个config.js文件

或者是:./config/index.js 文件

//根据 process.env.NODE_ENV

let BASE_URL = ""
let BASE_NAME = ""

if(process.env.NODE_ENV === 'development'){
  BASE_URL = "http://..."
  BASE_NAME = "pan"
} else if(process.env.NODE_ENV === 'production'){
  BASE_URL = "http://..."
  BASE_NAME = "123465"
} else {
	BASE_URL = "http://..."
  BASE_NAME = "hhh"
}

export { BASE_URL, BASE_NAME }

方式二:

直接在根目录下创建对应的环境变量

创建一个 .env 文件,但是这个文件是在任何环境变量中使用的

为了区分环境,我们需要创建:

  • .env.development
  • .env.production
  • .env.test

创建上面的三个文件

里面我们注入的变量格式要求如下:

  • 首先以 VUE_APP_随便写
VUE_APP_BASE_URL = http://...
VUE_APP_BASE_NAME = pan

三个环境中的url和name可能不同

然后我们就可以在 main.js 中拿到我们定义的环境变量

//main.js
console.log(process.env.VUE_APP_BASE_URL)
console.log(process.env.VUE_APP_BASE_NAME)

配置代理服务器

跨域问题

1、什么是跨域问题?

浏览器从一个域名的网页去请求另一个域名的资源时,域名、端口、协议任一不同,都会导致跨域问题。即前端接口去调用不在同一个域内的后端服务器而产生的问题。

2、如何解决跨域问题? — 代理服务器

代理服务器的主要思想是通过建立一个端口号和前端相同的代理服务器进行中转,从而解决跨域问题。因为代理服务器与前端处于同一个域中,不会产生跨域问题;而且代理服务器与服务器之间的通信是后端之间的通信,不会产生跨域问题。

具体流程如下图所示,红色框代表浏览器,粉色框代表代理服务器,蓝色框代表后端的服务器。

在这里插入图片描述

3、如何实现代理服务器?-- 用vue-cli来实现


vue-cli配置代理的两种方法

方法一:在Vue.config.js中添加如下配置:

devServer:{
    proxy:"http://localhost:5000"
}

说明:

1、优点:配置简单,请求资源时直接发给前端(8080)即可

2、缺点:不能配置多个代理,不能灵活的控制请求是否走代理

3、工作方式:若按照上述配置代理,当请求了不存在的资源时,那么该请求就会转发给服务器(有限匹配前端资源)


方法二:编写vue.config.js配置具体代理规则

具体规则
  devServer: {
    // open: true,    //是否自动打开浏览器
    port: 8080,      //启动端口号
    https: false,    //是否开启https
    hotOnly: false,
    proxy: {
      // 配置跨域
      '/api': {
        target: 'http://www.xxxx/app',
        ws: true,
        changOrigin: true,    //是否开启代理
        pathRewrite: { //  /api开头的请求会去到target下请求
          '^/api': ''        //   替换/api 为空字符
        }
      }
    },
  },
  • eg:
import axios from 'axios';
axios.get('/api/versionInfo.json').then()
// 实际访问的是  http://www.xxxx/app/versionInfo.json

demo
module.exports = {
    devServer: {
        proxy: {
            '/api1': { // 匹配所有以'/api1' 开头的请求路径
                target: 'http://localhost:5000', // 代理目标的基础路径
                changeOrigin: true,
                pathRewrite: {'^/api1':''}
            },
            '/api2': { // 匹配所有以'/api2' 开头的请求路径
                target: 'http://localhost:5001',// 代理目标的基础路径
                changeOrigin: true,
                pathRewrite: {'^/api2':''}
            },
        }
    }
}

/*
    changeOrigin设置为true时,服务器收到的请求头中的host为:localhost:5000
    changeOrigin设置为false时,服务器收到的请求头中的host为:localhost:8080
    changeOrigin默认值为true
*/

说明:

1、优点:可以配置多个代理,并且可以灵活的控制请求是否走代理

2、缺点:配置略微繁琐,请求资源时必须加前缀。


相关文章:

【vue基础篇】一看就懂的vue环境变量配置

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Vue3中配置代理跨域可以通过修改vue.config.js文件来实现。在devServer中添加proxy配置项,示例如下: ```javascript module.exports = { devServer: { proxy: { '/api': { target: '跨域的地址', changeOrigin: true, pathRewrite: { '^/api': '' } } } } } ``` 其中,'/api'是代理标识,用于告诉node,url前面是/api的就是使用代理的。target是目标地址,一般是指后台服务器地址。changeOrigin设置为true表示开启跨域。pathRewrite的作用是把实际Request Url中的'/api'用""代替。 另外,为了方便管理多个接口的代理,最好在请求路径前面加一个统一前缀,比如使用'/api'作为统一前缀。这样可以配置一个代理就能把这些接口的请求都代理好。示例如下: ```javascript module.exports = { devServer: { proxy: { '/api': { target: 'https://gk.work/relax', changeOrigin: true, pathRewrite: { '^/api': '' } } } } } ``` 在这个示例中,前台跑在127.0.0.1:8080,想要请求https://gk.work/relax,那么代理配置应该是'/api'。 另外,如果你想使用Vue环境变量配置代理路径,可以使用process.env.VUE_APP_BASE_API。示例如下: ```javascript module.exports = { devServer: { proxy: { '/dev-api': { target: 'https://gk.work/relax', changeOrigin: true, pathRewrite: { \['^' + process.env.VUE_APP_BASE_API\]: '/api' } } } } } ``` 在这个示例中,代理路径使用了Vue环境变量process.env.VUE_APP_BASE_API,可以根据实际情况进行配置。 #### 引用[.reference_title] - *1* [VUE3跨域方案:配置代理](https://blog.csdn.net/qq_41760984/article/details/128334360)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Vue3 前端配置代理解决跨域](https://blog.csdn.net/qq_52697994/article/details/124620850)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序媛小y

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值