Vue配置文件vue.config.js配置前端代理方式

当我们在开发Vue项目时,有时候需要通过前端代理方式来解决跨域的问题。在Vue项目中实现前端代理的方式有很多种,本文将详细介绍如何通过配置Vue的配置文件vue.config.js实现前端代理方式。

vue.config.js文件

vue.config.js是一个可选的配置文件,如果项目的根目录中存在该文件,则该文件会被@vue/cli-service自动加载。该文件需要导出一个对象或一个函数,用于设置webpack的配置项,以及其他一些项目相关的配置。在该文件中,我们可以通过配置devServer项来实现前端代理。

使用前端代理

具体来说,我们可以通过如下步骤来配置前端代理:

  1. 在项目的根目录下创建vue.config.js文件

  2. 导出一个对象,在对象中配置devServer项

javascript
module.exports = {
devServer: {
proxy: {
//配置代理服务器
'/api': {
target: 'http://localhost:3000', // 代理服务器的域名和端口号
ws: true, //websocket
changeOrigin: true, // 是否跨域
pathRewrite: {
'^/api': '' // 去掉api路径
}
}
}
}
}

在上述配置中使用了一个代理服务器,将以/api开头的请求代理到http://localhost:3000。

  • target:代理服务器的域名和端口号
  • ws:是否启用websocket跨域
  • changeOrigin:是否跨域
  • pathRewrite:代理的路径重写规则

  • 在Vue组件中使用代理

在Vue组件中,我们需要将接口请求的前缀改为/api,代理服务器就会将该请求代理到目标服务器。

javascript
axios.get('/api/data').then(res => {
console.log(res.data)
}).catch(error => {
console.log(error)
})

示例一:实现代理服务器

在示例中,我们需要使用一个代理服务器来解决跨域问题。具体代码如下:

// server.js
const express = require('express')
const app = express()

app.get('/api/data', (req, res) => {
  res.json({msg: 'Hello World'})
})

app.listen(3000, () => {
  console.log('Server is running at http://localhost:3000')
})

运行该服务器,访问http://localhost:3000/api/data将会得到{msg: 'Hello World'}的响应。

接下来在Vue项目中,创建vue.config.js文件,配置如下所示:

module.exports = {
  devServer: {
    proxy: {
      '/api': {
        target: 'http://localhost:3000',
        ws: true,
        changeOrigin: true,
        pathRewrite: {
          '^/api': ''
        }
      }
    }
  }
}

在Vue组件中使用代理:

axios.get('/api/data').then(res => {
  console.log(res.data)
}).catch(error => {
  console.log(error)
})

运行Vue项目,访问localhost:8080即可在控制台中看到{msg: 'Hello World'}的输出。

示例二:使用代理服务器

在示例中,我们需要使用一个已有的服务器来获取数据,但是该服务器存在跨域问题,需要通过代理服务器来解决。具体代码如下:

// server.js
const express = require('express')
const app = express()

app.use(express.static('public'))

app.use('*', (req, res) => {
  res.json({msg: 'Hello World'})
})

app.listen(3001, () => {
  console.log('Server is running at http://localhost:3001')
})

运行该服务器,访问http://localhost:3001 将会返回{msg: 'Hello World'}。

接下来,在Vue项目中,使用vue.config.js配置代理服务器:

module.exports = {
  devServer: {
    proxy: {
      '/api': {
        target: 'http://localhost:3001',
        ws: true,
        changeOrigin: true,
        pathRewrite: {
          '^/api': ''
        }
      }
    }
  }
}

在Vue组件中调用数据:

axios.get('/api/data').then(res => {
  console.log(res.data)
}).catch(error => {
  console.log(error)
})

运行Vue项目,访问localhost:8080即可在控制台中看到{msg: 'Hello World'}的输出。由于使用代理服务器,请求将会被转发到http://localhost:3001/api,即http://localhost:3001,解决了跨域问题。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Vue配置文件vue.config.js配置前端代理方式 - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • 每天学点Vue源码之vm.$mount挂载函数

    讲解“每天学点Vue源码之vm.$mount挂载函数”的完整攻略。 什么是vm.$mount挂载函数? vm.$mount 是 Vue 实例的 $mount() 函数,用于把Vue实例挂载到页面中的元素上。该函数有两种使用方式: 1.手动挂载 在手动挂载时,可以通过引入 Vue.js,创建 Vue 实例并手动挂载到一个DOM上。具体代码如下: <!–…

    Vue 2023年5月28日
    00
  • javascript 进阶篇3 Ajax 、JSON、 Prototype介绍

    JavaScript 进阶篇3:Ajax、JSON、Prototype介绍 本文将向你介绍 JavaScript 中常用的 Ajax、JSON、Prototype 相关概念以及用法。 Ajax Ajax 是 Asynchronous JavaScript and XML 的简写,意为“异步 JavaScript 和 XML”。它是一种用于创建快速动态网页的技…

    Vue 2023年5月28日
    00
  • Vue中splice()方法对数组进行增删改等操作的实现

    在Vue中,我们可以使用数组的splice()方法对数组进行增删改等操作。splice()方法可以对数组进行任意位置的添加、删除、修改等操作,具体的使用方法如下: array.splice(index, howMany, [element1][, …, elementN]) 参数解释: index:必选参数,规定要添加/删除/修改的元素的位置。 howM…

    Vue 2023年5月28日
    00
  • 一步步详细讲解vue3配置ESLint

    下面是一步步详细讲解vue3配置ESLint的完整攻略: 步骤一:安装ESLint 首先,我们需要在项目中安装ESLint。可以使用下面的命令来进行安装: npm install eslint –save-dev 步骤二:安装Vue3的ESLint插件 接下来,我们需要安装Vue3的ESLint插件。可以使用下面的命令进行安装: npm install e…

    Vue 2023年5月28日
    00
  • vue 绑定对象,数组之数据无法动态渲染案例详解

    下面详细讲解“vue 绑定对象,数组之数据无法动态渲染案例详解”的攻略。 问题背景 在 Vue.js 中,我们通常会使用数据绑定来实现页面动态渲染。但是,在某些情况下,我们可能会遇到无法动态渲染的问题。例如,绑定的对象或数组中的数据被修改后,页面没有自动更新。这可能会导致用户体验不佳或功能无法正常使用。 原因分析 出现数据无法动态渲染的问题,通常有以下几种原…

    Vue 2023年5月28日
    00
  • vue-cli 3.0 版本与3.0以下版本在搭建项目时的区别详解

    下面详细讲解“vue-cli 3.0 版本与3.0以下版本在搭建项目时的区别详解”的完整攻略。 1. vue-cli 3.0 与 3.0 以下版本的区别 1.1 脚手架版本 vue-cli 3.0 与 3.0 以下版本最明显的区别是使用的脚手架是不同的。vue-cli 3.0 使用的是 @vue/cli,而 3.0 以下版本使用的是 vue-cli。因此,安…

    Vue 2023年5月28日
    00
  • vue使用中的内存泄漏【推荐】

    Vue 使用中的内存泄漏【推荐】 什么是内存泄漏 内存泄漏指的是在程序运行中,分配的内存没有释放,这样就会造成内存占用过高的问题。在 Vue 中,内存泄漏指的是在使用过程中,一些会影响页面性能的事件监听器、订阅等占用内存的功能没有被释放,最终导致页面卡顿、甚至崩溃。 如何解决内存泄漏问题 取消事件监听 在 Vue 中,无论是使用 @click、@scroll…

    Vue 2023年5月28日
    00
  • vue中实现路由跳转的三种方式超详细教程

    接下来我将为你详细讲解“vue中实现路由跳转的三种方式超详细教程”。 背景介绍 Vue是一款流行的JavaScript框架。Vue Router是Vue的官方路由管理器。在Vue中,可以使用Vue Router实现页面路由跳转。 本教程将介绍Vue Router中实现路由跳转的三种方式。这三种方式分别是: 使用<router-link>标签进行跳…

    Vue 2023年5月29日
    00
合作推广
合作推广
分享本页
返回顶部