当前位置: 首页 > news >正文

第7章 nestjs服务端开发:通用业务框架设计

全盘思路:项目分析与Nestjs核心概念深入理解

https://www.bilibili.com/video/BV1LT421S7qD

 官方方案:使用config设置配置模块
一、基础配置与全局注册
1. ​​安装依赖​
pnpm install @nestjs/config dotenvpnpm i  cross-env -D

核心包​​:@nestjs/config提供配置管理能力,dotenv用于加载 .env文件

2. 根模块注册​

在 app.module.ts中全局注册配置模块:

import { Module } from '@nestjs/common';
import { ConfigModule } from '@nestjs/config';@Module({imports: [ ConfigModule.forRoot({isGlobal: true, // 全局可用,子模块无需重复导入envFilePath: '.env', // 默认环境文件路径})]
})
export class AppModule {}

关键参数​​:

  • isGlobal: true:使配置服务全局可注入。

  • envFilePath:支持多环境配置文件(如 .env.development

二、多环境配置支持
​1. 环境文件划分​

创建不同环境的配置文件:

.env.development    # 开发环境
.env.production     # 生产环境
.env.test           # 测试环境

修改 package.json 文件

通过 NODE_ENV指定环境(需配合 cross-env实现跨平台兼容)

"start:dev": "cross-env NODE_ENV=development nest start --watch",
"start:prod": "cross-env NODE_ENV=production  node dist/main"

动态加载​​:

ConfigModule.forRoot({envFilePath: `.env.${process.env.NODE_ENV || 'development'}`,
})
官方方案进阶:增加环境变量、yaml文件读取
官方方案进阶:嵌套配置yaml文件读取
安装与配置 YAML 解析

首先安装 YAML 解析库:

pnpm add js-yaml
pnpm add -D @types/js-yaml

创建 YAML 配置文件,例如 config/config.yml(基础配置)和 config/config.development.yml(环境特定配置)

# config/config.yml (基础配置)
http:port: 3000
db:postgres:host: localhostdatabase: myapp# config/config.development.yml (开发环境配置)
db:postgres:database: myapp_devredis:host: redis.local

创建配置文件加载器 src/config/configuration.ts

import { readFileSync } from 'fs';
import * as yaml from 'js-yaml';
import { join } from 'path';
import { merge } from 'lodash';const baseConfig = yaml.load(readFileSync(join(__dirname, '../../config/config.yml'), 'utf8'));
const env = process.env.NODE_ENV || 'development';
const envConfigPath = join(__dirname, `../../config/config.${env}.yml`);
const envConfig = yaml.load(readFileSync(envConfigPath, 'utf8'));export default () => merge(baseConfig, envConfig); // 环境配置会覆盖基础配置

在 app.module.ts中注册 YAML 配置

import { Module } from '@nestjs/common';
import { ConfigModule } from '@nestjs/config';
import configuration from './config/configuration';@Module({imports: [ConfigModule.forRoot({isGlobal: true,load: [configuration], // 加载 YAML 配置}),],
})
export class AppModule {}
使用嵌套的 YAML 配置

通过 ConfigService可以使用点符号访问嵌套的 YAML 配置

@Injectable()
export class AppService {constructor(private configService: ConfigService) {}getDatabaseConfig() {const dbConfig = this.configService.get('db.postgres');console.log(dbConfig.host); // 访问嵌套属性return this.configService.get('http.port');}
}

第三方库config读取json文件配置

https://blog.csdn.net/weixin_47121832/article/details/137082090

配置文件的参数验证Joi方案 

http://www.dtcms.com/a/590162.html

相关文章:

  • 低价网站建设联系方式企业网站后端模板
  • 嵌入式Linux——“大扳手”与“小螺丝”:为什么不该用信号量(Semaphore)去模拟“完成量”(Completion)
  • 哪个网站教做ppt网站优化主要工作有那些内容
  • 都江堰做网站糖果网站建设目的
  • 网站怎么建设以及维护网站维护能自己做吗
  • 湖南网站建设制作陈锦良厦门建设局
  • 做网站有哪些好处现在建设网站落后了
  • 汉中专业网站建设价格梨树县交通建设网站
  • 代码随想录 Q85.摆动序列
  • ESP32连接ThingsCloud上传设备数据(智慧小灯)
  • 网站设计公司圣辉友联一级a做爰片免费网站性恔
  • 【基于one-loop-per-thread的高并发服务器】--- Server模块
  • 免费网站推广网站在线怎么做网页啊
  • 泰安手机网站建设做校园文化的网站
  • 自助建站网站程序源码dw做网站弊端
  • 新城区网站建设做网站.服务器怎么买
  • 【教学类-98-01】20251109“兔子头像”(小班主题《小兔乖乖》)
  • 上海电子门户网站建设数据怎么用editplus做网站
  • iBiz开源:iBizPLM BOM插件来了
  • 8.游戏逆向-pxxx-获取GObject
  • 建立网站 数据分析网站怎么做动效
  • 什么软件做网站链接安宁市建设厅网站
  • 4.1.8【2016统考真题】
  • 第三章:处理机调度与死锁
  • 德州做网站公司电话谷歌系平台推广
  • 【01】Canny边缘检测:原理、实现与性能对比
  • 41. CMake
  • 11.string(上)
  • 【开题答辩全过程】以 基于SpringBoot的智慧教育系统的设计与实现为例,包含答辩的问题和答案
  • 360永久免费建网站网站建设及空间