配置信息

未匹配的标注

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) 使用

本文章首发在 LearnKu.com 网站上。

本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://learnku.com/docs/adonisjs/5.x/fu...

译文地址:https://learnku.com/docs/adonisjs/5.x/fu...

上一篇 下一篇
贡献者:3
讨论数量: 0
发起讨论 只看当前版本


暂无话题~