配置

thinkjs提供了灵活的全局配置功能,这些配置值随着服务启动而生效,并且在后续所有的http请求中都有效。

系统支持默认配置、公共配置、调试配置、模式配置等多种配置方式。

注意:不可将一个http请求中的私有值设置到配置中,这将会被下一个http设置的值给冲掉。

配置格式

  1. //配置格式
  2. module.exports = {
  3. 'port': 1234,
  4. 'db_host': '127.0.0.1', // 服务器地址
  5. 'db_name': 'think_web', // 数据库名
  6. 'db_user': 'root', // 用户名
  7. 'db_pwd': '', // 密码
  8. 'use_websocket': true, //使用websocket
  9. }

注意: 配置参数的key不区分大小写(key会强制转为小写)。建议使用小写,便于阅读。

配置值除了是简单的数据外,也可以是数组、对象、函数等。

  1. //配置
  2. module.exports = {
  3. 'list': ['1', '2'],
  4. 'fn': function(){
  5. //do something
  6. }
  7. }

配置加载

配置加载遵循下面的加载顺序,且后面加载的配置值覆盖前面加载的值。

系统默认配置 -> 应用配置 -> 调试配置 -> 模式配置

系统默认配置

系统默认配置包含了所有的thinkjs中用到的配置,并给出了默认值。该文件在thinkjs的lib/Conf/config.js,你可以在附录 -> 默认配置中查看详细的配置。

系统配置文件会在服务启动时自动调用。

应用配置

应用配置文件在App/Conf/config.js里,服务启动时会自动调用。

调试配置

如果在入口文件将APP_DEBUG设置为true, 那么会自动读取调试配置,配置文件为App/Conf/debug.js

如果该文件不存,则不加载。

模式配置

thinkjs除了默认的启http服务运行,也可以命令行下运行,命令行下对应的模式为cli。

模式配置文件为App/Conf/mode.js,该文件内容格式如下:

  1. //配置
  2. module.exports = {
  3. 'cli': { //命令行模式下的配置
  4. 'use_cluster': false
  5. },
  6. 'cli_debug': {
  7. //命令行模式开启了debug的配置
  8. }
  9. }

配置读取

无论何种配置文件,定义了配置后,都统一使用函数 C 来获取配置值。如:

  1. var dbHost = C('db_host');

配置写入

配置写入除了默认加载预订的配置文件外,也可以通过函数 C 写入配置,如:

  1. //设置配置
  2. C('name', 'welefen');
  3. //设置二级配置
  4. C('cache.db_time', 60);
  5. //也可以批量设置配置
  6. C({
  7. 'name': 'welefen',
  8. 'use_cluster': false
  9. })

注意: 如果是一级配置,则配置名中不能含有字符.,含有.会自动当作二级配置。

扩展配置

如果配置项比较多的话,这时候可能就需要考虑将配置分类了,并且存放在不同的配置文件里。可以通过如下的方式进行:

  1. //配置文件写入这个配置,表示额外加载cache.js和db.js 2个配置文件,配置文件也在Conf目录下
  2. 'load_ext_config': ['cache', 'db']

有这个配置后,系统启动时会自动加载App/Conf/cache.jsApp/Conf/db.js 2个配置文件。