配置
thinkjs提供了灵活的全局配置功能,这些配置值随着服务启动而生效,并且在后续所有的http请求中都有效。
系统支持默认配置、公共配置、调试配置、模式配置等多种配置方式。
配置格式
//配置格式
module.exports = {
'port': 1234,
'db_host': '127.0.0.1', // 服务器地址
'db_name': 'think_web', // 数据库名
'db_user': 'root', // 用户名
'db_pwd': '', // 密码
'use_websocket': true, //使用websocket
}
注意:
配置参数的key不区分大小写(key会强制转为小写)。建议使用小写,便于阅读。
配置值除了是简单的数据外,也可以是数组、对象、函数等。
//配置
module.exports = {
'list': ['1', '2'],
'fn': function(){
//do something
}
}
配置加载
配置加载遵循下面的加载顺序,且后面加载的配置值覆盖前面加载的值。
系统默认配置 -> 应用配置 -> 调试配置 -> 模式配置
系统默认配置
系统默认配置包含了所有的thinkjs中用到的配置,并给出了默认值。该文件在thinkjs的lib/Conf/config.js
,你可以在附录 -> 默认配置中查看详细的配置。
系统配置文件会在服务启动时自动调用。
应用配置
应用配置文件在App/Conf/config.js
里,服务启动时会自动调用。
调试配置
如果在入口文件将APP_DEBUG设置为true, 那么会自动读取调试配置,配置文件为App/Conf/debug.js
。
如果该文件不存,则不加载。
模式配置
thinkjs除了默认的启http服务运行,也可以命令行下运行,命令行下对应的模式为cli。
模式配置文件为App/Conf/mode.js
,该文件内容格式如下:
//配置
module.exports = {
'cli': { //命令行模式下的配置
'use_cluster': false
},
'cli_debug': {
//命令行模式开启了debug的配置
}
}
配置读取
无论何种配置文件,定义了配置后,都统一使用函数 C
来获取配置值。如:
var dbHost = C('db_host');
配置写入
配置写入除了默认加载预订的配置文件外,也可以通过函数 C
写入配置,如:
//设置配置
C('name', 'welefen');
//设置二级配置
C('cache.db_time', 60);
//也可以批量设置配置
C({
'name': 'welefen',
'use_cluster': false
})
注意:
如果是一级配置,则配置名中不能含有字符.
,含有.
会自动当作二级配置。
扩展配置
如果配置项比较多的话,这时候可能就需要考虑将配置分类了,并且存放在不同的配置文件里。可以通过如下的方式进行:
//配置文件写入这个配置,表示额外加载cache.js和db.js 2个配置文件,配置文件也在Conf目录下
'load_ext_config': ['cache', 'db']
有这个配置后,系统启动时会自动加载App/Conf/cache.js
和App/Conf/db.js
2个配置文件。