代码库概述 Codebase-Overview

Directus 背后的核心概念很简单,但是为了兑现它们必须解决的问题可能非常复杂。 我们努力设计和设计最优雅的解决方案,以便我们的代码库仍然可以访问。

Monorepo

主要 Directus 存储库位于 directus/directus 并包含管理应用程序(Vue.js 3 w/ Composition API)、API (Node.js)、 API 规范 (OpenAPI) 和内部使用的其他较小的包。 Directus 遵循类似于 React 或 Babel 的 monorepo 设计——本页将概述我们的 monorepo 的设计和结构。

/api

包含用 Node.js 编写的 Directus API (REST+GraphQL)。

/api/src/cli

directus 软件包附带的 CLI 命令和匹配函数。

/api/src/controllers

API 中端点的路由处理程序控制器。

/api/src/database

数据库操作抽象、系统迁移和系统数据。 您还可以在其中找到主要查询运行程序。

/api/src/exceptions

API 预期抛出的不同错误的类。 用于设置 HTTP 状态和错误代码。

/api/src/middleware

各种(快速)路由中间件。 包括缓存检查器、身份验证器等。

/api/src/services

内部服务。 与数据库中的数据交互的主要抽象。 GraphQL 和 REST 请求都被“翻译”为使用这些服务作为平台中的主要逻辑。

/api/src/types

在 API 的不同部分之间共享的 TypeScript 类型。

/api/src/utils

各种实用功能。

/app

包含 Directus 管理应用程序,使用 Vue.js 3 和 Composition API 编写。

/docs/directus/app/public

包含在应用程序中但未捆绑的资产。

/docs/directus/app/src/assets

应用程序中包含的文件。在构建步骤中捆绑/优化。

/docs/directus/app/src/components

跨平台使用的(基础)组件。包含“基本构建块”,如按钮、输入等。

/docs/directus/app/src/composables

可在 Vue 组件之间使用的反应式逻辑的可重用部分。包括从现在起反应性地计算时间、获取单个项目等的事情。

/docs/directus/app/src/directives

自定义 Vue 指令(例如 v-tooltip)。

/docs/directus/app/src/displays

Components to display of data within the app.

/docs/directus/app/src/interfaces

包含核心的接口。

/docs/directus/app/src/lang

翻译抽象和语言文件。语言 yaml 文件通过 Crowdin 维护。

/docs/directus/app/src/layouts

包含核心的布局。

/docs/directus/app/src/modules

包含核心的模块。

/docs/directus/app/src/routes

应用程序中的路线。模块定义了自己的路由,所以这只包括不属于模块的“系统”东西,比如登录。

/docs/directus/app/src/stores

基于 Pinia 的商店用于全球状态跟踪。

/docs/directus/app/src/styles

应用程序中的全局样式。每个组件都有自己的组件样式,这些只是全局样式。

/docs/directus/app/src/types

在 API 的不同部分之间共享的 TypeScript 类型。

/docs/directus/app/src/utils

应用程序各个部分中使用的实用功能。

/docs/directus/app/src/views

应用程序中使用的(两个)主要视图:公共/私有。还包含这两个视图的“内部”耦合组件。

/packages

平台的各种子包。 包括文件存储适配器、模式、规范等。

/tests

测试是在每个包的基础上维护的。 此文件夹包含平台范围(端到端)的测试。