前言
在使用 Node.js 编写一个完整的项目时,程序中往往需要用到一些可配置的变量,从而使得程序能在不同的环境中运行,而众所周知,在实际的项目会存在多个不同的环境,不同的环境下,一些配置是不相同的,如何在不同的环境下调用不同的配置,提高开发效率?下面话不多说了,来一起看看详细的介绍吧。
1. config-lite模块
首先引入一个配置模块config-lite,使用命令npm i config-lite --save安装。
通常我们会针对不同的环境,将配置写入不同的配置文件中,在Node项目下新建config目录,里面新建不同环境的配置文件,这里我以『开发』以及『生产』两个环境作为例子来讲解如何操作。
开发环境中,我们在config目录下新建两个文件:test.js和default.js,你可能会问,为啥没有生产机配置文件,因为生产机配置要在生产环境下再创建嘛。
在test.js配置文件中写入代码如下(PS. 这里以mysql的配置为例):
// test.js module.exports = { mysql : { host: "localhost", user: "lupeng", password: "080910", database: "b1imd" } };
default.js里写入一些默认的配置文件,例如session的配置等。
// default.js module.exports = { mysql : { host: "10.20.141.220", user: "lupeng", password: "123456", database: "b1imd" }, session: { secret: 'keyboard cat', resave: false, saveUninitialized: true, cookie: { maxAge: 1000*60*60 } } };
好了,配置文件写好了,如何使用呢?这里我们使用的 config-lite模块,这个模块是依据环境变量来选择不同的配置文件的,所以在使用之前我们需要修改package.json里的启动命令:
"scripts": { "start": "NODE_ENV=production supervisor --harmony -i views/ ./bin/www", "test": "NODE_ENV=test supervisor --harmony -i views/ ./bin/www" },
可以看到,上面有两条启动命令,一条是针对生产机,设置了NODE_ENV=production
,一条是针对测试机,设置了NODE_ENV=test
,当我们使用npm test启动项目的时候,config-lite会去抓取test.js配置,并且会与default.js里配置去合并,如果有相同的对象,会覆盖default.js里的配置。如上例子都有mysql的对象,那么这里会以test.js里的对象为准。
好了,下面来介绍一下如何在项目中使用config-lite模块,在app.js里代码如下:
// 省略... var config = require('config-lite')(__dirname); // 省略... app.use(session(config.session)); console.log("mysql服务器:" + config.mysql.host); // display mysql-config // 省略...
内容版权声明:除非注明,否则皆为本站原创文章。