多环境

157 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第6天,点击查看活动详情

多环境

如何让本地的测试不影响到线上项目呢?

根据实际需要,将同一个项目(或同一套代码)按照一定方法进行区分,并将所需资源和项目本身部署到不同的机器上。不同环境的项目可以有 不同的行为 ,且能够 同时存在、互不影响

通常一个公司的应程序不太可能只有一个环境,可能在开发环境(dev)、测试环境(test)、生产环境(prod)中运行。那么是不是需要拷贝不同的安装包,在不同的环境下运行呢,只需要简单的配置,你的程序就能在不同的环境中运行。

好处:

  1. 每个环境互不影响

  2. 为了区分不同的阶段:开发/测试/生产/沙箱

  3. 对项目进行优化:

    • 本地日志级别
    • 精简依赖,节省项目体积
    • 项目的环境。参数可以调整。

多环境分类

  1. 本地环境(自己的电脑)localhost
  2. 开发环境(远程开发)大家连同一台机器,为了大家开发方便
  3. 测试环境(测试)开发 / 测试 / 产品,单元测试 / 性能测试 / 功能测试 / 系统集成测试,独立的数据库、独立的服务器
  4. 预发布环境(体验服):和正式环境一致,正式数据库,更严谨,查出更多问题
  5. 正式环境(线上,公开对外访问的项目):尽量不要改动,保证上线前的代码是 “完美” 运行
  6. 沙箱环境(实验环境):为了做实验

后端

可以在启动项目时传入环境变量:

java -jar .\user-center-backend-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod

主要是改:

在项目中看到类似的配置文件

image.png

我们可以在配置文件中配置数据库的一些信息:

image.png

前端

  • 请求地址

开发环境:localhost:8080

线上环境:你自己域名

startFront(env)
{
if(env === 'prod')
{
//不输出注释
//项目优化
  // 修改请求地址
}
​
else{
​
 // 保持本地开发逻辑
}
}

一般在启动时进行修改环境

用了 umi 框架,build 时会自动传入 NODE_ENV == production 参数,start NODE_ENV 参数为 development

const isDev = process.env.NODE_ENV === 'development'; 
  • 启动方式

    • 开发环境:npm run start(本地启动,监听端口、自动更新)
    • 线上环境:npm run build(项目构建打包),可以使用 serve 工具启动(npm i -g serve)
  • 项目的配置

    不同的项目(框架)都有不同的配置文件,umi 的配置文件是 config,可以在配置文件后添加对应的环境名称后缀来区分开发环境和生产环境。参考文档:umijs.org/zh-CN/docs/…

    • 开发环境:config.dev.ts
    • 生产环境:config.prod.ts
    • 公共配置:config.ts 不带后缀