配置信息
AdonisJS 应用程序的运行时配置存储在 config
目录中。框架核心和许多已安装的包都依赖于这些配置文件。因此,请务必检查配置文件并调整设置 (如有必要)。
我们还建议将你的应用所需的所有自定义配置存储在此目录中,而不是将它们存储在多个位置。
导入配置文件#
你可以使用 import
语句在应用程序代码库中导入配置文件。例如:
import { appKey } from 'Config/app'
使用配置工具#
除了直接导入配置文件,你还可以用如下所示的方式使用配置工具:
import Config from '@ioc:Adonis/Core/Config'
Config.get('app.appKey')
Config.get
方法接受按点分隔的路径来配置键值。在上面的示例中,我们从 config/app.ts
文件中读取了 appKey
属性。
此外,你可以定义一个默认值。当缺少实际配置值时,将返回默认值。
Config.get('database.connections.mysql.host', '127.0.0.1')
与手动导入配置文件相比,使用配置工具没有直接的好处。但是,在以下场景中,配置工具是唯一的选择。
- 外部包:外部包不应该依赖文件路径来读取 / 导入配置。相反,它应该使用配置工具。使用配置工具会在应用程序和包之间创建松散耦合。
- Edge 模板:模板文件可以使用 config 全局方法来引用配置值。
更改配置所在位置#
你可以通过修改 .adonisrc.json
文件来更新配置目录的位置。
"directories": {
"config": "./configurations"
}
配置工具会自动从新配置的目录中读取文件,所有依赖配置文件的底层包都可以正常工作。
注意事项#
config
目录中的所有配置文件都由框架在启动阶段自动导入。因此,你的配置文件不应依赖容器绑定。
例如,以下代码会在尝试导入 Route
提供程序时中断,即使这些代码尚未被注册到容器中。
// ❌ 不会生效
import Route from '@ioc:Adonis/Core/Route'
const someConfig = {
assetsUrl: Route.makeUrl('/assets')
}
你可能会认为此限制不好。但是,它对应用程序设计有积极的影响。
从根本上说,你的运行时代码应该依赖于配置,而不是相反。例如:
注意:不要让配置依赖运行时代码 (模型如下)
import User from 'App/Models/User'
const someConfig = {
databaseTable: User.table
}
注意:相反,让你的模型从配置文件中读取表格
const someConfig = {
databaseTable: 'users'
}
import someConfig from 'Config/file/path'
class User extends Model {
public static table = someConfig.databaseTable
}
配置参考#
当你安装和配置 AdonisJS 包时,它们可能会创建新的配置文件。以下是框架不同部分使用的配置文件列表 (及其默认模板)。
配置文件 | 地址 | 用途 |
---|---|---|
app.ts |
git.io/JfefZ | 由框架的核心使用,包括 HTTP 服务器、日志工具、验证器和资源管理器。 |
bodyparser.ts |
git.io/Jfefn | 由主解析器中间件使用 |
cors.ts |
git.io/JfefC | 由 CORS 服务钩子使用 |
hash.ts |
git.io/JfefW | 由哈希包使用 |
session.ts |
git.io/JeYHp | 由会话包使用 |
shield.ts |
git.io/Jvwvt | 由屏蔽包使用 |
static.ts |
git.io/Jfefl | 由静态文件服务器使用 |
auth.ts |
git.io/JY0mp | 由认证包使用 |
database.ts |
git.io/JesV9 | 由 Lucid ORM 使用 |
mail.ts |
git.io/JvgAf | 由 AdonisJS 邮件包使用 |
redis.ts |
git.io/JemcF | 由 Redis 包使用 |
drive.ts |
git.io/JBt3o | 由驱动器使用 |
ally.ts |
git.io/JOdi5 | 由社交认证包 (Ally) 使用 |
本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。