第三方模块 config

开发环境与生产环境

什么是开发环境和生产环境

环境,就是指项目运行时所在的地方
当我们在自己电脑上运行项目时,此时项目所处的环境就是开发环境
当一个项目被开发完成后,需要被放到网站服务器的电脑中运行,这时候项目所处的环境就是生产环境

为什么要区分开发环境与生产环境

因为在不同的环境中,项目的配置是不一样的,举个例子来说就是在开发环境时当你使用一些第三方的模块来有助于你开发(比如 nodemon 模块),可当项目运行在生产环境时,就不需要该模块了,那么这个时候当项目上线时,就不需要安装这个模块了

那么,针对这样的问题,我们就需要在项目代码中判断当前项目运行的环境,根据不同的环境对项目进行不同的处理

如何区分开发环境和生产环境

我们可以通过新建系统环境变量从而区分,具体如何做呢?
我们可以新建一个系统环境变量,将变量名命名为NODE_ENV,然后命名不同的变量值
开发环境development、生产环境production以此来区分
在这里插入图片描述在这里插入图片描述

if (process.env.NODE_ENV == 'development') {
	// 当前是开发环境
	console.log('当前是开发环境')
} else {
	// 当前是生产环境
	console.log('当前是生产环境')
}

在这里插入图片描述

第三方模块 config

简介

这个模块可以让我们将不同环境下的配置信息写到不同的文件中,模块内部可以自动判断当前项目所处的环境,然后根据环境读取相应的文件里面的配置信息,它有利于我们对一个项目进行维护,当需要修改不同环境下的配置信息时,直接对相应的文件进行修改就可以了

使用

1.首先下载该模块

npm install config

2.创建相应的文件夹和文件

  • 根目录下创建 config 文件
  • config 文件夹下分别创建default.json、development.json、production.json文件

3.使用时,通过 require 方法将其导入即可,另外还可通过 get 方法获取配置信息

传送门

app.js文件

// 引入 config 模块
const config = require('config');
//获取配置信息
let dbConfig = config.get('Customer.dbConfig');
//输出配置信息
if (process.env.NODE_ENV == 'development') {
  console.log('开发环境');
  console.log(dbConfig);
  console.log(dbConfig.host);
  
} else {
  console.log('生产环境');
  console.log(dbConfig);
}

default.json文件

{
  "Customer": {
    "dbConfig": {
      "host": "localhost",
      "port": 5984,
      "dbName": "customers"
    },
    "credit": {
      "initialLimit": 100,
      "initialDays": 1
    }
  }
}

development.json文件

{
  "Customer": {
    "dbConfig": {
      "host": "dev-db-server"
    },
    "credit": {
      "initialDays": 20
    }
  }
}

production.json文件

{
  "Customer": {
    "dbConfig": {
      "host": "prod-db-server"
    },
    "credit": {
      "initialDays": 30
    }
  }
}

如果 NODE_ENV 为空的话,那么就会使用 development.json 文件,如果没有 development.json 文件,那么就会使用 default.json 文件

如果 NODE_ENV 不为空的话,那么就会到 config 目录中找相应的文件,如果没有找到相应的文件,就会使用 default.json 文件中的内容。 另外对于指定的文件中没找到配置项,就会去 default.json 文件中去找

ps:感觉类似有点继承,child 有的就用 chid 的,child 没有的就用 father 的

发布了61 篇原创文章 · 获赞 15 · 访问量 4074

猜你喜欢

转载自blog.csdn.net/qq_44162474/article/details/104396741