vue配置vue.config.js

2023-11-11

现在的 vue.config.js

const { defineConfig } = require('@vue/cli-service')

module.exports = defineConfig({

  transpileDependencies: true

  // 关闭eslint校验

  // lintOnSave: false

})

一、在src目录下创建 settings.js用于存放所有规则配置

module.exports = {

  title: 'Example示例',

  transpileDependencies: true

  // 关闭eslint校验

  // lintOnSave: false

}

在vue.config.js中添加以下语句引入settings.js文件

const defaultSettings = require('./src/settings.js')

 二、在vue.config.js文件中添加path模块

        path 模块,提供了一些工具函数,用于处理文件与目录的路径。path.join()方法用于连接路径,该方法会正确识别当前系统的路径分隔符,如Unix系统是”/“,Windows系统是”\“。__dirname 是node的一个全局变量,即获得当前文件所在目录的完整目录名。

const path = require('path')

function resolve(dir) {

    return path.join(__dirname, dir)

  }

三、在vue.config.js中添加端口和网址标题设置

const name = defaultSettings.title // 网址标题
const port = 8099 // 端口配置

四、在vue.config.js中配置module.exports及代理,并在前端解决跨域问题

const path = require('path')

const defaultSettings = require('./src/settings.js')

function resolve(dir) {

    return path.join(__dirname, dir)

  }

  const name = defaultSettings.title // 网址标题

  const port = 8099 // 端口配置

  module.exports = {

    // 配置基地址BASE_URL等于publicpath的值

    // NODE_ENV:Node.js 暴露给执行脚本的系统环境变量。通常用于确定在开发环境还是生产环境

    // 部署应用时的根路径(默认'/'),也可用相对路径(存在使用限制)

    publicPath: process.env.NODE_ENV === 'development' ? '/' : './',

    // publicPath: process.env.NODE_ENV === "production" ? "./" : "./",

    outputDir: 'dist', // 输出文件目录

    assetsDir: 'static', // // 放置静态资源

    lintOnSave: process.env.NODE_ENV === 'development',// true/false 设置为开发环境下每次保存代码时都启用 eslint验证

    productionSourceMap: false, // 如果你不需要生产环境的 source map,可以将其设置为false以加速生产环境构建

    devServer: {  // 配置开发服务器

      port: port,

    //   overlay: {  // 错误、警告在页面弹出

    //     warnings: false,

    //     errors: true

    //   },

      /* 跨域代理 */

      proxy: {

        // 第一种写法

        '/api': {

          /* 目标代理服务器地址 */

          target: 'http://localhost:8090/',

          /* 允许跨域 */

          changeOrigin: true,

          pathRewrite: {  // 标识替换

            '^/api': '/static/mock'  // 请求数据路径别名,这里是注意将static/mock放入public文件夹

          }

        },

        // 第二种写法

        [process.env.VUE_APP_BASE_API]: {  // 使用环境变量中的值

          target: 'http://127.0.0.1:9000/',

          changeOrigin: true,

          pathRewrite: {

            ['^' + process.env.VUE_APP_BASE_API]: '',

            '^/api': ''

          }

        }

      }

    }

  }

      至此前后端解决跨域的方法都有了,可只写一个,也可全写 

      devServer.proxy中的 pathRewrite说明:

  如图,pathRewrite设置了 '^/api': '' ,作用如下:

        使用代理,首先需要有一个标识,告诉程序这个连接要使用代理,不然的话,可能你的html、css、js、矢量图等静态资源都跑去代理。所以我们要通过一个唯一标识,让接口使用代理,静态资源文件使用本地。

        proxy中的 '/api':{······},就是告诉node,我的接口是要以 /api 开头的才使用代理。所有的接口都要写成 /api/xx/xx ,以 /api 开头,最后代理的接口路径路径就是 http://localhost:8090/api/xx/xxi

        但是例子中真实的后台数据接口里没有 /api,直接就是 http://localhost:8080/xx/xx ,所以就需要配置 pathRewrite,用'^/api': '' 将 /api 去掉,这样既有正确的标识,又能在真实请求接口的时候去掉 /api

五、创建上一步中的开发环境配置文件.env.development

        可对应配置相应的生产环境配置文件

 ENV = 'development'

VUE_APP_BASE_API = 'http://localhost:8090/api/'

六、修改request.js中的baseURL

import axios from "axios";

const service = axios.create({

    // baseURL: 'http://localhost:8090/api',

    baseURL: process.env.VUE_APP_BASE_API, // url = base url + request url

    timeout: 3000

})

export default service;

 七、启动项目测试

成功运行,并正常请求返回后端数据

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vue配置vue.config.js 的相关文章

  • 将 Javascript 对象的属性从 string 更改为 int

    我有一个对象数组 每个对象具有三个属性 年份 总计 人均 例子 0 Object per capita 125 8 total 1007 2 year 2009 这些属性是字符串 我想创建一个循环来遍历数组并将它们转换为 int 我尝试了以
  • 如何阻止直接访问我的 JavaScript 文件?

    我使用 Minify 来缩小并缓存所有脚本请求 我只希望我的用户能够访问 JavaScript 文件的缩小版本 缩小位于www example com min我的脚本位于www example com scripts 如何阻止直接访问doc
  • 浏览器视口大小(以设备像素为单位)

    Goal 我希望 Flash 能够获得有关浏览器视口宽度和高度 以设备像素为单位 的准确信息初始化 调整大小或浏览器缩放事件时 规格 我需要将 flash 嵌入到在 chrome safari firefox 等中运行的 html 页面中
  • 如何在没有 jQuery 的情况下删除 Javascript 中的元素

    我试图通过以下方式从 DOM 中删除 Div a 标签嵌套在其中 我想我正在寻找的是 jQuery 的纯 Javascript 版本 div remove 这是html设置 div a href Click me to remove the
  • 使用 Angular 指令禁用文本选择

    我正在学习 JavaScript 和 AngularJS 我想使用 Angular Directive 禁用文本选择 我有该函数的 JavaScript 代码 function clearSelection if document sele
  • 使用 Node.js 构建网站的最佳实践

    这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 我想知道如何使用 Node js 从头开始 开发一个网站 我明白我怎么能possibly
  • 为什么 window 与 Internet Explorer 中的 window.self 不同?

    关于我如何遇到这个问题有一个复杂的背景故事 但为什么self属性不完全等于窗口本身 在 Safari 和 Firefox 及其朋友中 结果如我所料 gt window window self true gt window window se
  • Number.IsNaN() 比 isNaN() 更糟糕吗

    Soooooo isNaNJavaScript 显然被破坏了 比如 isNaN isNaN isNaN true isNaN false isNaN 0 返回 false 当它们看起来都是 不是数字 在 ECMAScript 6 中 草案包
  • 如何在React Native Android中获取响应头?

    您好 我想在获取 POST 请求后获取响应标头 我尝试调试看看里面有什么response with console log response 我可以从以下位置获取响应机构responseData但我不知道如何获取标题 我想同时获得标题和正文
  • 本地推送通知到在应用程序内运行 JS 代码的 Win8 Live Tile

    我正在尝试将更新发送到我的应用程序的磁贴 当应用程序运行时 这可以正常工作 例如 当用户单击按钮时 我可以轻松地将磁贴更新通知发送到磁贴 我无法解决的是当应用程序无法运行时如何更新磁贴 我找到的唯一选择是使用以下命令从远程 Web 服务器拉
  • 导航栏下拉菜单(折叠)在 Bootstrap 5 中不起作用

    我在尝试使用以下命令创建响应式菜单或下拉按钮时遇到问题Bootstrap 5一切似乎都正常 导航图标和下拉图标出现 但它不起作用 当我单击nav图标或dropdown按钮 无dropdown menu apears 我想特别提到的是 我还包
  • 将 Firebase 云消息传递与 Windows 应用程序结合使用

    我在 Android 和 iOS 应用程序中使用 Firebase Cloud Messaging 但是我还有此应用程序的 Windows Mac OS 版本 我想保留相同的逻辑 我知道 Firebase Cloud Messaging 可
  • 使用 JavaScript 移动页面上的按钮

    我的按钮可以移动 但奇怪的是 我无法弄清楚偏移是否有问题 我希望我的按钮随着鼠标光标移动 但现在它的移动方式不是我想要的 有时它会消失 另外 创建的新按钮是重叠的 我不知道如何解决这个问题并拥有更好的外观 var coorA var coo
  • 使用 Google 日历源时如何禁用 FullCalendar 中的活动链接?

    我正在使用 FullCalendar 库从 Google 日历加载日历中的事件 不幸的是 事件添加到日历后 它们是可点击的 当您点击该活动时 您会自动重定向到 Google 日历页面以查看该特定活动 或者如果您有足够的访问权限 则可以直接对
  • 使用 Jade 评估自定义 javascript 方法 (CircularJSON)

    我想通过 Jade 将一个对象解析为客户端 JavaScript 通常这会起作用 script var object JSON parse JSON stringify object but my object is circular ht
  • Highcharts jQuery 渲染问题 - 所有浏览器

    我在尝试使用构建堆积柱形图时遇到了一个奇怪的问题高图表 http www highcharts com 当图表呈现时 在您调整浏览器大小之前 不会显示列无论如何 导致图表重绘 我认为 图表的其余部分显示 轴 标题等 但不显示列本身 我在 I
  • 滚动顶部不符合预期

    Note 由于上次忘记奖励而重新开放赏金 A Woff 大师已经给出答案 我想在用户展开某一行时到达该行 这样当最后一个可见行展开时 用户不必向下滚动即可查看内容 I used example tbody on click td green
  • 如何通过索引访问 JSON 对象中的字段

    我知道这不是最好的方法 但我别无选择 我必须通过索引访问 JSONObject 中的项目 访问对象的标准方法是只写this objectName or this objectName 我还找到了一种获取 json 对象内所有字段的方法 fo
  • 没有输入的 jQuery 日期选择器

    我有一个相当复杂的网络应用程序 我想向其中添加一些日期选择 UI 我遇到的问题是我无法从文档中弄清楚如何真正控制日期选择器的出现方式和时间 不涉及任何表单元素 不 我不会添加秘密表单字段 因此简单的开箱即用方法根本行不通 我希望有人可以提供
  • 使用velocity.js制作可拖动元素的动画

    我正在使用velocity js 为用户拖动的可拖动 SVG 元素设置动画 然而 velocity js 将先前的 mousemove 坐标排队并通过所有后续的 mousemove 坐标进行动画处理 我想要的是velocity js 不要对

随机推荐