前端环境变量配置

1)为什么要配置环境变量

在公司,一个项目一般会有开发版本、测试版本、灰度版本和线上版本,每个版本会对应相同或不同的数据库、API地址。为了方便管理,我们通常做成配置文件的形式,根据不同的环境,加载不同的文件。如果手动修改代码中加载配置文件的路径也可以,但是太麻烦,最重要的是很low(无形装逼,最为致命)。

2)实现原理

采用nodejs顶层对象中的process.env(进程环境,返回一个包含用户环境信息的对象。)属性,根据各个环境的配置文件区分和切换环境

3)具体操作(以vue项目为例)

        1、安装依赖:npm install process

        2、在根目录新增五个文件(根据自身情况增减), .env 和 .env.dev 和 .env.pre和 .env.prod和 .env.sit和 .env.uat,分别为默认配置、本地开发配置、灰度配置、生产配置、测试配置1、测试配置2,(ps: VUE_APP是统一标志,后面的拓展名可以任取)

        .env

VUE_APP_TITLE='dev'

         .dev

NODE_ENV = 'development'
VUE_APP_TITLE = 'development'

/*请求接口地址*/
VUE_APP_INTERFACE_URL="https://xxx"
 
/*首页地址*/
VUE_APP_URL="http://xxx"
 
/*proxy代理地址*/
VUE_APP_PROXYURL='http://xxx'
        .prod

NODE_ENV = production
VUE_APP_TITLE = 'prod'
 
/*请求接口地址*/
VUE_APP_INTERFACE_URL="https://xxx"
 
/*首页地址*/
VUE_APP_URL="http://xxx"


        3、设置项目启动时默认的环境

只需要在项目启动命令后面修改需要的环境就行,例如我这是npm run dev,把–mode dev改成–mode uat就行了

package.json

"scripts": {
    "dev": "vue-cli-service serve --mode dev",
    "build": "vue-cli-service build --mode dev",
    "lint": "vue-cli-service lint",
    "build-sit": "vue-cli-service build --mode sit",
    "build-uat": "vue-cli-service build --mode uat",
    "build-pre": "vue-cli-service build --mode pre",
    "build-prod": "vue-cli-service build --mode prod"
  },


        4、查看环境是否配置成功

在main.js里打印当前环境,输出就成功了

console.log(process.env.NODE_NEV)


 

### 配置和使用Node.js环境变量的最佳实践 #### 使用`.env`文件管理敏感数据 为了安全性和方便性,在基于Node.js前端项目中推荐使用`.env`文件来存储环境特定的信息,比如API密钥、数据库连接字符串和其他不应该被提交到版本控制系统中的配置项。这可以通过安装并使用`dotenv`包轻松实现[^1]。 ```bash npm install dotenv --save ``` 接着,在项目的根目录下创建一个名为`.env`的新文件,并在里面定义所需的环境变量: ```plaintext PORT=3000 DATABASE_URL=mongodb://localhost:27017/myapp SECRET_KEY=mysecretkey ``` 在应用启动之前加载这些环境变量: ```javascript require('dotenv').config(); console.log(process.env.DATABASE_URL); ``` 上述代码会读取`.env`文件并将其中的内容注入到`process.env`对象里以便后续访问[^2]。 #### 安全地传递给客户端 对于那些需要暴露给浏览器的应用部分来说,应该只向其提供必要的最少限度的数据。通常情况下,这意味着要过滤掉任何可能泄露内部结构或造成安全隐患的信息。一种方法是利用Webpack等构建工具提供的插件功能,将某些环境变量嵌入打包后的静态资源中去[^3]。 例如,如果正在使用Create React App,则可以在`.env`文件中指定前缀为`REACT_APP_`开头的键名作为公共可用的环境变量;而在其他场景下则需自行设置相应的机制确保只有经过筛选过的值才会传达到前端层面。 另外值得注意的是,当涉及到跨域资源共享(CORS)时也要格外小心处理请求头里的Origin字段以及Access-Control-Allow-Origin响应头部信息,防止不当授权第三方站点获取受保护资源。 #### 动态调整行为而不重启服务 除了初始化阶段外,有时还希望能够在不停机的情况下改变一些运行参数。为此可以考虑引入专门设计用来支持热更新特性的库,如`node-config`或是更轻量级的选择——监听系统事件触发重新加载逻辑。这类做法特别适合于大型分布式系统的微调优化工作当中[^4]。 最后提醒一点,务必定期审查所使用的依赖及其权限范围,及时跟进官方发布的补丁修复潜在漏洞风险。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值