Egg Config

配置管理常见方案

  • 平台管理配置 启动时指定
    应用构建时将当前环境配置放入包中,启动时指定配置。此种方案缺点在于无法一次构建多次部署,另外本地开发环境使用配置麻烦。
  • 平台管理配置 环境变量传入
    应用启动时将当前环境配置通过环境变量传入,虽然比较优雅,但缺点是框架对运维要求较高,需部署平台支持,同时开发环境也有痛点。
  • 代码管理配置 配置即代码
    代码中添加多个环境配置,应用启动时传入当前环境参数。缺点在于无法全局配置,而且必须修改代码。

Egg框架采用配置即代码的方案,配置变更应经过review后才能发布,应用可部署在多个环境,仅需指定运行环境。

Egg框架提供了强大且可配置的配置功能,可自动合并应用、插件、框架的配置,并按顺序覆盖,可根据环境维护不同的配置。

运行环境

Egg框架使用代码的方式配置当前应用的运行方式,Egg约定所有配置文件都存放在根目录下的config文件夹下。

Egg框架内支持根据运行环境来加载配置,因此需定义多个不同运行环境的配置文件。

Egg框架中有两种指定运行环境的方式

  1. 通过配置文件config/env文件指定,config/env文件一般会通过构建工具来生成。

例如:指定当前运行环境为线上生产环境prod

$ vim config/env
//config/env
prod
  1. 通过EGG_SERVER_ENV环境变量来指定运行环境

例如:生产环境下启动应用时指定环境变量为prod

$ EGG_SERVER_ENV=prod npm start

可使用app.config.env获取应用当前的运行环境

console.log(app.config.env);

配置文件

指定环境变量后启动应用,此时会自动根据环境变量名称去寻找对应的配置文件,配置文件可分为两种类型:默认配置文件、环境配置文件

  • 默认配置文件:config/config.default.js
    默认配置文件在所有环境中都会被加载

  • 环境配置文件:config/config.{env}.js

例如:创建常用的环境配置文件

配置文件 描述
config.local.js 本地环境配置
config.dev.js 开发环境配置
config.prod.js 生产环境配置
config.unittest.js 单元测试环境配置

环境配置文件会覆盖默认配置文件中同名配置项

同名配置覆盖

配置写法

配置文件需返回一个Object对象,应用可将自身业务配置放到这里进行管理。配置文件的写法可分为三种

  1. 使用module.exports导入Object对象
  2. 使用exports.key = value导入键值对
  3. 使用module.exports传入appInfo返回Object对象
$ vim config/config.dev.js
module.exports = appInfo => {
  return {

  }
};

内置的appInfo对象是EggAppInfo类的实例,appInfo属性包括:

属性 描述
appInfo.pkg package.json
appInfo.name 应用程名称,同pkg.name。
appInfo.baseDir 应用代码目录
appInfo.HOME 用户家目录
appInfo.root 应用根目录,仅在local和unittest环境下为baseDir,其它均为HOME。

获取配置

可使用app.config获取所有的配置项,若在控制器、服务中可使用this.app.config获取配置。

例如:自定义开发环境配置,配置字节跳动小程序所使用的参数。

$ vim config/env
dev
$ vim config/config.dev.js
'use strict';
module.exports = appInfo=>{
    return {
        bytedance:{
            microapp:{
                appId:"",
                appSecret:"",
                code2session:"https://developer.toutiao.com/api/apps/jscode2session"
            }
        }
    };
};
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读