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,
})
相关推荐
jktantan5 小时前
Vue keep-alive 切标签后滚动位置回顶?因为 onDeactivated 里读到的 scrollTop 是 0
前端·javascript·vue.js
总要学点什么6 小时前
第89篇:三维特效-螺旋圆效果——让螺旋臂卷起一圈圈外扩的涟漪
开发语言·javascript·ecmascript·webgl·cesium·空间分析·1024程序员节
2601_962885726 小时前
quotes 字段全解:涨跌幅、振幅、换手率的口径与单位
java·前端·spring
excel7 小时前
encodeURI 和 encodeURIComponent 有什么区别?
前端
前端精髓7 小时前
调用openrouter的免费API模型
java·前端·javascript
赛博守夜人7 小时前
AI安全攻防与治理之十四:AI 安全测试不能脱离传统安全,Web、API、移动端与模型攻击面的组合拳
前端·人工智能·安全
开开心心_Every7 小时前
快速隐藏程序工具自定义快捷键一键切换
java·开发语言·前端·spring·智能手机·word·intellij-idea
networknomad8 小时前
OpenReplay:自己搭的会话回放工具,给前端排错用的
前端·其他
缓慢更新8 小时前
AI 辅助生成单测:从接口定义到用例的流水线
java·服务器·前端·网络·数据库·人工智能
陈随易9 小时前
AI 运维服务器,安全又可靠的方法
前端·后端·程序员