RBAC前端架构-03:创建dotenv及config配置

1-dotenv

1-1.概念

在 Vue 项目中,.env.xxx文件是环境配置文件,用于管理不同环境下的配置变量

1-2.作用

  • .env.xxx 文件用于定义不同环境(如开发、测试、生产)下的环境变量
  • 这些变量可以在项目构建时被注入到 process.env 对象中,供应用程序使用

1-3.常见命名规则

Vue CLI 支持以下几种常见的 .env 文件命名方式:

文件名 适用环境 描述
.env 所有环境 默认环境变量,适用于所有环境。
.env.local 所有环境(本地) 本地覆盖文件,不会被 Git 提交。
.env.development 开发环境 仅在开发环境下生效。
.env.production 生产环境 仅在生产环境下生效。
.env.test 测试环境 仅在测试环境下生效。

1-4.过程

  • Vue CLI 在构建过程中会自动将 .env 文件中的变量注入到process.env对象中
  • 只有以VUE_APP_开头的变量才会被注入到客户端代码中
  • 这些变量在应用运行时可以通过process.env.VARIABLE_NAME访问

1-5.文件调整

  1. 新增frontend-vue2\.env.development

    #Vue CLI 在构建过程中会自动将 .env 文件中的变量注入到 process.env 对象中
    #只有以 VUE_APP_ 开头的变量才会被注入到客户端代码中
    #这些变量在应用运行时可以通过 process.env.VARIABLE_NAME 访问
    NODE_ENV=development
    VUE_APP_API_BASE_URL=http://localhost:8080/api
    VUE_APP_DEBUG=true

  2. 新增frontend-vue2\.env.production

    NODE_ENV=production
    VUE_APP_API_BASE_URL=http://175.24.130.242/api
    VUE_APP_DEBUG=false

2-config文件

用于统一管理系统的基本参数配置

  1. 新增frontend-vue2\src\config\index.js
js 复制代码
export default {
  // process.env 是 Node.js 提供的全局对象,用于访问系统环境变量
  baseURL: process.env.VUE_APP_API_BASE_URL || "http://localhost:8080/api",
  // 自定义debug标识
  debug: process.env.VUE_APP_DEBUG === "true",
  // 过期时间
  timeout: process.env.VUE_APP_TIMEOUT
    ? parseInt(process.env.VUE_APP_TIMEOUT)
    : 5000,
};
  1. 修改frontend-vue2\src\api\request.js,axios请求封装使用config的环境变量
js 复制代码
// axios 封装
import axios from "axios";
import store from "@/store";
import router from "@/router";
import config from "@/config";// 引入config

// 创建 axios 实例
const service = axios.create({
  // 使用环境变量配置
  baseURL: config.baseURL,
  // 请求超时时间
  timeout: config.timeout || 5000,
});

// 请求拦截器:每次请求都带上 token
service.interceptors.request.use(
  (config) => {
    // 从Vuex 获取 token
    const token = store.state.token;
    if (token) {
      config.headers["Authorization"] = `Bearer ${token}`;
    }
    return config;
  },
  (error) => {
    return Promise.reject(error);
  }
);

// 响应拦截器:统一处理错误
service.interceptors.response.use(
  (response) => {
    return response.data;
  },
  (error) => {
    if (error.response && error.response.status === 401) {
      // 401 未授权,说明 token 过期或无效
      store.dispatch("logout");
      router.push("/login");
    }
    return Promise.reject(error);
  }
);

export default service;
相关推荐
ayqy贾杰2 小时前
Agent First Engineering
前端·vue.js·面试
IT_陈寒2 小时前
SpringBoot实战:5个让你的API性能翻倍的隐藏技巧
前端·人工智能·后端
iceiceiceice3 小时前
iOS PDF阅读器段评实现:如何从 PDFSelection 精准还原一个自然段
前端·人工智能·ios
大金乄3 小时前
封装一个vue2的elementUI 表格组件(包含表格编辑以及多级表头)
前端·javascript
葡萄城技术团队4 小时前
【性能优化篇】面对万行数据也不卡顿?揭秘协同服务器的“片段机制 (Fragments)”
前端
程序员阿峰4 小时前
2026前端必备:TensorFlow.js,浏览器里的AI引擎,不写Python也能玩转智能
前端
Jans4 小时前
Shipfe — Rust 写的前端静态部署工具:一条命令上线 + 零停机 + 可回滚 + 自动清理
前端
徐小夕4 小时前
JitWord 2.3: 墨定,行远
前端·vue.js·github
南果梨4 小时前
OpenClaw 完整教程!从安装到使用(官方脚本版)
前端·git·开源
大雨还洅下4 小时前
前端手写: new操作符
前端