当前位置:网站首页 > iOS应用开发 > 正文

Web应用开发框架-egg(三)02-基础功能——运行环境 & Config配置之多环境配置、配置写法、配置加载顺序、合并规则、配置结果

Web应用开发框架-egg(三)02-基础功能——运行环境 & Config配置之多环境配置、配置写法、配置加载顺序、合并规则、配置结果

运行环境

EGG_SERVER_ENV=prod npm start

获取运行环境:

框架提供了变量 app.config.env 来表示应用当前的运行环境。

很多 Node.js 应用会使用 NODE_ENV 来区分运行环境,但 EGG_SERVER_ENV 区分得更加精细。一般的项目开发流程包括本地开发环境、测试环境、生产环境等

框架默认支持的运行环境及映射关系(如果未指定 EGG_SERVER_ENV 会根据 NODE_ENV 来匹配)

在这里插入图片描述

例如,当 NODE_ENVproductionEGG_SERVER_ENV 未指定时,框架会将 EGG_SERVER_ENV 设置成 prod

比如,要为开发流程增加集成测试环境 SIT。将 EGG_SERVER_ENV 设置成 sit(并建议设置 NODE_ENV = production),启动时会加载 config/config.sit.js,运行环境变量 app.config.env 会被设置成 sit

Config配置

框架提供了强大且可扩展的配置功能,可以自动合并应用、插件、框架的配置,按顺序覆盖,且可以根据环境维护不同的配置。合并后的配置可直接从 app.config 获取。

多环境配置

框架支持根据环境来加载配置,定义多个环境的配置文件。

config |- config.default.js |- config.prod.js |- config.unittest.js `- config.local.js 

config.default.js 为默认的配置文件,所有环境都会加载这个配置文件,一般也会作为开发环境的默认配置文件。

当指定 env 时会同时加载对应的配置文件,并覆盖默认配置文件的同名配置。如 prod 环境会加载 config.prod.jsconfig.default.js 文件,config.prod.js 会覆盖 config.default.js 的同名配置。

配置写法

配置文件返回的是一个 object 对象,可以覆盖框架的一些配置,应用也可以将自己业务的配置放到这里方便管理。

// 配置 logger 文件的目录,logger 默认配置由框架提供 module.exports = { 
    logger: { 
    dir: '/home/admin/logs/demoapp', }, }; 

配置文件也可以简化的写成 exports.key = value 形式

exports.keys = 'my-cookie-secret-key'; exports.logger = { 
    level: 'DEBUG', }; 

配置文件也可以返回一个 function,可以接受 appInfo 参数

// 将 logger 目录放到代码目录下 const path = require('path'); module.exports = appInfo => { 
    return { 
    logger: { 
    dir: path.join(appInfo.baseDir, 'logs'), }, }; }; 

内置的 appInfo 有:

在这里插入图片描述

appInfo.root 是一个优雅的适配,比如在服务器环境我们会使用 /home/admin/logs 作为日志目录,而本地开发时又不想污染用户目录,这样的适配就很好解决这个问题。

配置加载顺序

应用、插件、框架都可以定义这些配置,而且目录结构都是一致的,但存在优先级(应用 > 框架 > 插件),相对于此运行环境的优先级会更高。

比如在 prod 环境加载一个配置的加载顺序如下,后加载的会覆盖前面的同名配置。

-> 插件 config.default.js -> 框架 config.default.js -> 应用 config.default.js -> 插件 config.prod.js -> 框架 config.prod.js -> 应用 config.prod.js 
合并规则
const a = { 
    arr: [ 1, 2 ], }; const b = { 
    arr: [ 3 ], }; extend(true, a, b); // [3] 
配置结果

框架在启动时会把合并后的最终配置 dump 到 run/application_config.json(worker 进程)和 run/agent_config.json(agent 进程)中,可以用来分析问题。

配置文件中会隐藏一些字段,主要包括两类:

  • 如密码、密钥等安全字段。
  • 如函数、Buffer 等类型,JSON.stringify 后的内容特别大

还会生成 run/application_config_meta.json(worker 进程)和 run/agent_config_meta.json(agent 进程)文件,用来排查属性的来源,如:

{ 
    "logger": { 
    "dir": "/path/to/config/config.default.js" } } 
到此这篇Web应用开发框架-egg(三)02-基础功能——运行环境 & Config配置之多环境配置、配置写法、配置加载顺序、合并规则、配置结果的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • Web应用开发框架-egg(三)03-基础功能——中间件之编写中间件、中间件的配置、使用中间件、在框架和插件中使用中间件 & 中间件的通用配置项2024-12-02 11:00:07
  • Web应用开发框架-egg(三)04-基础功能——路由之定义Router、restful风格的URL定义、获取路由参数2024-12-02 11:00:07
  • Web应用开发框架-egg(三)06-基础功能——插件之定义插件、编写插件 & 定时任务 & 自定义启动app2024-12-02 11:00:07
  • Web应用开发框架-egg(四)——egg总结之egg快速入门、内置对象、运行环境、config配置、中间件、路由、控制器、服务service、插件、定时任务、自定义启动2024-12-02 11:00:07
  • Web应用开发框架-egg进阶与实战(一)——debug调试步骤、日志之日志路径、日志分类、日志级别、如何打印日志、文件日志级别、日志切割、日志影响性能2024-12-02 11:00:07
  • Web应用开发框架-egg(三)01-基础功能——目录结构的约定之框架规定的目录、内置插件约定的目录 & 内置对象之Application、context、Request & Response等2024-12-02 11:00:07
  • Web应用开发框架-egg(二)——快速入门之模板渲染、编写helper扩展、编写Middleware、渐进式开发 & egg总结2024-12-02 11:00:07
  • Web应用开发框架-egg(一)——Egg入门、Egg与Koa的关系 & 快速入门之编写Controller、静态资源2024-12-02 11:00:07
  • Web应用开发框架-koa(五)——koa总结之koa特点、koa-route路由 & 中间件之洋葱模型、异步中间件、中间件的合成 & 错误处理之http状态码、koa抛出错误、错误处理中间件2024-12-02 11:00:07
  • Web应用开发框架-koa(四)——koa错误处理之状态码 & koa抛错两种方式-try和catch、ctx.app.emit() & koa-body模块处理错误 & koa-body处理文件上传2024-12-02 11:00:07
  • 全屏图片