vue3在public下封装config.js自定义配置动态数据,可在打包后直接修改,方便后端部署及后续维护

前端项目打包后,后端或维护人员可直接在dist中修改配置内容,一键更新项目,不需要重新编译,推荐用于请求地址、外链资源、主题风格、前后端数据对照等需要动态调整的场景

一、封装配置文件

  1. public下新建文件config.js,自定义配置数据(约定键名大写,仅可修改数据值):
javascript 复制代码
/* public/config.js */
window.customConfig = {
  // API 基础 URL(+请求端点)
  VUE_APP_BASE_API: "https://your-production-api.com",
  // API 请求端点
  VUE_APP_API_ENDPOINT: "/endpoint",
  // API 请求超时(毫秒)
  VUE_APP_API_TIMEOUT: 10000,
  // 添加更多项目......
  ERR_CODES: {
    NOT_FOUND: 404,
  },
}
  1. index.html中优先引入配置文件:
html 复制代码
<!-- public/index.html -->
<!DOCTYPE html>
<html lang="">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width,initial-scale=1.0">
    <!-- 优先引入配置文件 -->
    <script src="<%= BASE_URL %>config.js"></script>
    <link rel="icon" href="<%= BASE_URL %>favicon.ico">
    <title><%= htmlWebpackPlugin.options.title %></title>
  </head>
  <body>
    <noscript>
      <strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
    </noscript>
    <div id="app"></div>
    <!-- built files will be auto injected -->
  </body>
</html>
  1. main.js中挂载配置到全局:
javascript 复制代码
/* src/main.js */

// 确保 config.js 加载成功
if (typeof window !== "undefined" && window.customConfig) {
  // 定义为全局属性后可在组件中使用 this.$config 获取
  app.config.globalProperties.$config = window.customConfig
} else {
  console.warn("window.customConfig is not defined!")
}

二、获取配置内容

  • 组件中获取(示例):
javascript 复制代码
/* example.vue */

if (this.$config) {
  window.open(this.$config.VUE_APP_BASE_API + this.$config.VUE_APP_API_ENDPOINT)
}
  • 其他配置文件中获取(示例):
javascript 复制代码
/* src/api/index.js */

// 确保 config.js 加载成功
const config = () => {
  if (typeof window !== "undefined" && window.customConfig) {
    return window.customConfig
  }
}
// 应用自定义配置
const axios = require("axios").default
const instance = axios.create({
  baseURL: config ? config.VUE_APP_BASE_API + config.VUE_APP_API_ENDPOINT : "https://example-api.com/endpoint",
  timeout: config ? config.VUE_APP_API_TIMEOUT : 15000,
})
相关推荐
zyplayer-doc1 小时前
VuePress类静态文档站和动态知识库怎么选:两种技术路线的适用场景
javascript·人工智能·后端·安全·智能手机
2601_965780182 小时前
当平台房间爆满,如何稳定游玩求生之路2浩方联机版?
经验分享
紫禁玄科2 小时前
Shai-Hulud:npm生态的自我复制蠕虫风暴
前端·npm·node.js
东风破_2 小时前
后端API没写好,前端难道干等着吗?
前端
用户938515635072 小时前
从前后端分离到前端接口工程:React + MockJS + Vite 解析
前端·后端·全栈
用户938515635073 小时前
从零在浏览器里跑 DeepSeek-R1:WebGPU + Transformers.js 全链路实战(三)
前端·react.js·typescript
excel3 小时前
当前端行情变差,我们为什么还要坚持?
前端
鸿是江边鸟,曾是心上人3 小时前
快速搭建HTTPS本地开发环境
前端
To_OC4 小时前
写了 5 个表单 Demo 后,我终于彻底搞懂了 React 受控与非受控组件
前端·react.js·前端框架
Sterting4 小时前
第9课 Vue Router 路由
前端·vue.js