配置管理常见方案

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

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"}}};
};

http://www.taodudu.cc/news/show-4485310.html

相关文章:

  • egg(一):创建一个egg项目
  • egg-sequelize使用教程
  • linux egg,Ubuntu下egg文件的安装与制作
  • Egg CURL
  • egg html模板,egg+vue服务端渲染模板项目介绍
  • electron-egg使用
  • Egg简介
  • egg 操作数据库
  • egg框架的使用
  • Egg
  • egg安装
  • egg简单的使用
  • python egg_Python的egg包
  • python egg_python egg 简介
  • egg介绍及入门
  • egg框架
  • Egg的简单使用
  • Node.js中的egg入门、egg路由、egg控制器、egg服务、egg中间件
  • egg入门指引,你绝对用得到
  • eggjs 怎么使用 egg-jwt 实现 token 解析?
  • gitlab添加邮箱设置
  • DEDECMS自定义表单发送到邮箱
  • android 邮箱格式设置,Android对邮箱格式的验证
  • PHP实现数字金额轻松转成中文繁体大写
  • 32:汉字表示的大写数字金额
  • Oracle实现金额小写转大写函数
  • 阿拉伯数字转换为中文大写数字
  • oracle里存储函数将金额数字转换成大写
  • 人民币大写在线转换工具
  • PHP实现阿拉伯数字转中文大写

Egg Config相关推荐

  1. 明知 | TypeScript 结合 egg.js 基本使用

    小小又进入了学习状态,此时小小由于最近接触了js的相关内容,进而接触了一些ts相关的内容,所以小小本次主要学习的内容是ts. 安装相关依赖 这里安装两个依赖,分别为egg和ts 安装ts 这里需要确保 ...

  2. typescript egg mysql_Egg.js egg-mysql 连接MySQL 报 AppWorkerDiedError 错误

    问题描述 > egg-bin dev [egg-ts-helper] create typings/app/controller/index.d.ts (3ms) [egg-ts-helper] ...

  3. egg.js 使用笔记

    脚手架安装 1.安装 $ npm i egg-init -g $ egg-init egg-example --type=simple //egg提供的一款名为simple的模板 $ cd egg-e ...

  4. mysql多数据源_egg-mysql配置多数据源

    //单个数据源client //多个数据源clients import { EggAppConfig, EggAppInfo, PowerPartial } from "egg"; ...

  5. Ubuntu安装Docker引擎和支持HTTPS的docker-registry服务

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://dgd2010.blog.51cto.com/1539422/1729858 虽然 ...

  6. 二、基础SpringBoot2.0.0M4项目目录讲解

    本次开发环境为: 系统:Windows 10 10.0 JDK:JRE: 1.8.0_152-release-1136-b43 amd64 JVM: OpenJDK 64-Bit Server VM ...

  7. egg.js连接mysql数据库遇到的问题

    最近在策划写一个博客采用前后端分离模式,前端使用vue后端使用egg.js,我也是刚开始学习egg.js,所以会将自己踩的坑都记录下来. 首先介绍下后端为什么采用egg.js吧,之前我是学习了koa2 ...

  8. egg 自学入门demo分享

    目录 安装 项目 连接数据库 编写model 编写controller 添加路由 2018-08,本文适用于对egg有兴趣想要了解的同学 完整项目代码:https://github.com/NameH ...

  9. egg mysql 连表查询_Egg中使用Sequelize框架关联查询Mysql数据库

    Sequelize视频教程_Eggjs仿小米商城企业级Nodejs项目实战视频教程: https://www.itying.com/goods-941.html 一.Sequelize简介 前面的章节 ...

最新文章

  1. 了解一下:机器学习性能优化的6个指标
  2. ds18b20温度转换指令_DS18B20温度传感器(附代码并浅谈与或运算)
  3. IcbcDaemon.exe是什么东西啊?
  4. Office Outlook 2007连接Exchange 2007图示(POP3IMAP)
  5. 马云的经典语录(转载)
  6. mysql 堆表_Mysql聚集索引和非聚集索引(堆组织表和索引组织表)
  7. C根据输入的城市坐标求各城市间的距离
  8. 第一章 SQL命令 ALTER TABLE(一)
  9. 三角函数曲线(含具体分析过程)
  10. 【Visual C++】游戏开发笔记四十 浅墨DirectX教程之八 绘制真实质感的三维世界 光照与材质专场
  11. X11 关闭屏幕保护
  12. 文献精读丨GWAS+TRN多组学方法揭示小麦穗发育调控过程
  13. 打开word时提示需要安装包gaozhi.msi
  14. Autolabor Simulator激光雷达导航与避障(模拟平台)
  15. Oracle之唯一性约束(UNIQUE Constraint)用法详解
  16. 企业级JAVA快速开发平台, 内置代码生成器 - JavaFast快速开发平台
  17. 里约奥运会:美国运动员训练都用了哪些“高科技武器”?
  18. Win10查看回收站清空超过1万个文件,占用资源高造成系统卡死,删除失败
  19. TBox、ECall、BCall、ICall简介及之间的关系
  20. pyplot中的subplot函数说明

热门文章

  1. 25 年前 Java 诞生,把你对她的热爱大声说出来好吗
  2. python文件另存为快捷键_Word文件另存为快捷键ctrl加什么?
  3. 016--JLE JNG(小于等于)
  4. PCB层里面这些知识你都懂吗?
  5. Opencv4.0学习记录(Day21 视频文件摄像头使用)
  6. ACM实验室成员博客汇总
  7. whu1572 Cyy and Fzz[字符串+概率]
  8. shell下从1加到100
  9. Pdf.js body.getReader 报错问题
  10. 查询MIMIC-III