170 lines
30 KiB
JavaScript
170 lines
30 KiB
JavaScript
import{_ as a,o as n,c as p,a2 as e}from"./chunks/framework.B-QBKwc1.js";const u=JSON.parse('{"title":"目录结构","description":"本页说明项目前后端目录组织与各目录职责,二次开发定位文件或了解工程结构时对照查阅。","frontmatter":{},"headers":[],"relativePath":"zh/directory.md","filePath":"zh/directory.md"}'),l={name:"zh/directory.md"};function t(i,s,c,o,r,d){return n(),p("div",null,[...s[0]||(s[0]=[e(`<h1 id="_1-3-目录结构" tabindex="-1">1.3 目录结构 <a class="header-anchor" href="#_1-3-目录结构" aria-label="Permalink to "1.3 目录结构""></a></h1><div class="tip custom-block"><p class="custom-block-title">概述</p><p>本页说明项目前后端目录组织与各目录职责,二次开发定位文件或了解工程结构时对照查阅。</p></div><h2 id="目录说明" tabindex="-1">目录说明 <a class="header-anchor" href="#目录说明" aria-label="Permalink to "目录说明""></a></h2><p>在软件开发过程中,优秀的软件目录结构对于项目的组织、开发、维护和扩展至关重要,合理的目录结构能够显著提升开发效率和代码可维护性。</p><div class="language-text vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">text</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span>1. 清晰的层次结构:按照功能模块划分目录,方便团队成员快速定位代码。</span></span>
|
||
<span class="line"><span>2. 分层架构:Controller(HTTP)、Service(业务)、Model(数据)分离,职责清晰。</span></span>
|
||
<span class="line"><span>3. Trait 组合复用:通用能力集中在 BaseService 与 6 个 Concerns Trait,子类只声明差异。</span></span>
|
||
<span class="line"><span>4. 提升开发效率:清晰的目录结构和模块划分,减少查找代码的时间,提高开发效率。</span></span></code></pre></div><h2 id="项目根目录" tabindex="-1">项目根目录 <a class="header-anchor" href="#项目根目录" aria-label="Permalink to "项目根目录""></a></h2><div class="language-text vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">text</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span>RXThinkCMF_Laravel13_EleVue/</span></span>
|
||
<span class="line"><span>├── app/ // 后端源码(见下方详解)</span></span>
|
||
<span class="line"><span>├── bootstrap/ // 应用引导(app.php 注册中间件别名与健康检查路由)</span></span>
|
||
<span class="line"><span>├── config/ // 配置文件(18 个)</span></span>
|
||
<span class="line"><span>├── database/</span></span>
|
||
<span class="line"><span>│ ├── migrations/ // 数据库迁移(本项目为空,建表以 SQL 脚本为准)</span></span>
|
||
<span class="line"><span>│ ├── seeders/ // 种子数据(DatabaseSeeder:租户/部门/角色/菜单/用户/字典)</span></span>
|
||
<span class="line"><span>│ └── factories/ // 模型工厂(测试数据)</span></span>
|
||
<span class="line"><span>├── docker/ // Docker 部署文件(Dockerfile / nginx.conf / .env.docker)</span></span>
|
||
<span class="line"><span>├── document/ // 项目资料(五种数据库初始化脚本,按类型分组)</span></span>
|
||
<span class="line"><span>├── docs/ // 专项文档(定时任务调度说明)</span></span>
|
||
<span class="line"><span>├── public/ // Web 公开目录(入口 index.php、静态资源)</span></span>
|
||
<span class="line"><span>├── resources/</span></span>
|
||
<span class="line"><span>│ ├── templates/ // ★ 代码生成器模板(*.tpl + ui/ + ui2/)</span></span>
|
||
<span class="line"><span>│ ├── views/ // Blade 视图(欢迎页等少量页面)</span></span>
|
||
<span class="line"><span>│ ├── css/ js/ // Vite 资源入口(TailwindCSS)</span></span>
|
||
<span class="line"><span>├── routes/</span></span>
|
||
<span class="line"><span>│ ├── api.php // ★ 全部 API 路由(公开接口在中间件组外)</span></span>
|
||
<span class="line"><span>│ ├── console.php // 命令调度注册</span></span>
|
||
<span class="line"><span>│ └── web.php // 欢迎页路由</span></span>
|
||
<span class="line"><span>├── storage/ // 运行时产物(日志/缓存/会话/编译视图,需可写)</span></span>
|
||
<span class="line"><span>├── tests/ // PHPUnit 测试(Feature / Unit)</span></span>
|
||
<span class="line"><span>├── ui/ // ★ 前端 EleVue 管理后台(Vue3 + ElementPlus,见第 9 章)</span></span>
|
||
<span class="line"><span>├── uploads/ // 上传文件目录</span></span>
|
||
<span class="line"><span>├── vendor/ // Composer 依赖(不提交到版本控制)</span></span>
|
||
<span class="line"><span>├── artisan // Artisan 命令行入口</span></span>
|
||
<span class="line"><span>├── composer.json // PHP 依赖清单(含 setup / dev / test 脚本)</span></span>
|
||
<span class="line"><span>├── package.json // 后端资源构建依赖(Vite + TailwindCSS,前端依赖见 ui/package.json)</span></span>
|
||
<span class="line"><span>├── vite.config.js // Vite 构建配置</span></span>
|
||
<span class="line"><span>├── docker-compose.yml // Docker 容器编排</span></span>
|
||
<span class="line"><span>├── .env.example // 环境变量模板</span></span>
|
||
<span class="line"><span>├── .env // 环境变量(不提交到版本控制)</span></span>
|
||
<span class="line"><span>└── README.md // 项目说明</span></span></code></pre></div><div class="tip custom-block"><p class="custom-block-title">前端代码位置</p><p>本仓库包含<strong>后端服务</strong>与 <code>ui/</code> 目录内的前端 EleVue 管理后台(Vue3 + ElementPlus);代码生成器会把生成的前端页面输出到 <code>ui/src/</code> 对应位置(见 <a href="/zh/generator/templates.html">10.6 自定义模板开发</a>)。前端工程结构详见 <a href="/zh/frontend/overview.html">第 9 章 前端开发</a>。</p></div><h2 id="后端目录-app-" tabindex="-1">后端目录 (app/) <a class="header-anchor" href="#后端目录-app-" aria-label="Permalink to "后端目录 (app/)""></a></h2><div class="language-text vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">text</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span>app/</span></span>
|
||
<span class="line"><span>├── Attributes/ // PHP 8 注解</span></span>
|
||
<span class="line"><span>│ ├── Permission.php // 权限校验注解(#[Permission('sys:user:add')])</span></span>
|
||
<span class="line"><span>│ ├── OperationLog.php // 操作日志注解(类型 + 模板,40 种操作类型)</span></span>
|
||
<span class="line"><span>│ └── DemoAllow.php // 演示环境放行注解</span></span>
|
||
<span class="line"><span>├── Console/Commands/ // 5 个 Artisan 命令</span></span>
|
||
<span class="line"><span>│ ├── GeneratorCommand.php // generate:code 代码生成器 CLI</span></span>
|
||
<span class="line"><span>│ ├── DbMigrateCommand.php // db:migrate 跨库数据迁移</span></span>
|
||
<span class="line"><span>│ ├── JobRunCommand.php // job:run 定时任务一次性执行(配合系统 cron)</span></span>
|
||
<span class="line"><span>│ ├── JobDaemonCommand.php // job:daemon 定时任务常驻进程(配合 supervisor)</span></span>
|
||
<span class="line"><span>│ └── ClearDictCache.php // dict:clear-cache 清除字典缓存</span></span>
|
||
<span class="line"><span>├── Exceptions/ // 统一异常处理</span></span>
|
||
<span class="line"><span>│ ├── BizException.php // 业务异常(Service 层抛出,默认 code=1)</span></span>
|
||
<span class="line"><span>│ └── Handler.php // 全局异常渲染(异常 → 统一 JSON)</span></span>
|
||
<span class="line"><span>├── Helpers/helpers.php // 21 个全局辅助函数(composer autoload.files 加载)</span></span>
|
||
<span class="line"><span>├── Http/</span></span>
|
||
<span class="line"><span>│ ├── Controllers/</span></span>
|
||
<span class="line"><span>│ │ ├── Controller.php // 控制器基类(统一响应 + _page/_add 等通用 CRUD)</span></span>
|
||
<span class="line"><span>│ │ └── Api/ // 28 个业务控制器</span></span>
|
||
<span class="line"><span>│ │ ├── AuthController.php // 登录认证(JWT 双令牌 / OAuth2)</span></span>
|
||
<span class="line"><span>│ │ ├── UserController.php // 用户管理</span></span>
|
||
<span class="line"><span>│ │ ├── RoleController.php // 角色管理</span></span>
|
||
<span class="line"><span>│ │ ├── MenuController.php // 菜单管理</span></span>
|
||
<span class="line"><span>│ │ ├── ExampleController.php // 案例演示(标准 CRUD 参考模板)</span></span>
|
||
<span class="line"><span>│ │ ├── GeneratorController.php // 代码生成器</span></span>
|
||
<span class="line"><span>│ │ └── ... // 其他模块</span></span>
|
||
<span class="line"><span>│ ├── Middleware/ // 7 个中间件</span></span>
|
||
<span class="line"><span>│ │ ├── ProxyMiddleware.php // 真实 IP 提取(受信代理)</span></span>
|
||
<span class="line"><span>│ │ ├── Cors.php // 跨域处理</span></span>
|
||
<span class="line"><span>│ │ ├── ForceJsonResponse.php // 强制 JSON 响应</span></span>
|
||
<span class="line"><span>│ │ ├── Authenticate.php // JWT 认证 + #[Permission] 鉴权(auth.jwt)</span></span>
|
||
<span class="line"><span>│ │ ├── ResolveTenant.php // 租户上下文解析(tenant)</span></span>
|
||
<span class="line"><span>│ │ ├── LogOperation.php // 操作日志采集(log.operation,terminable 落库)</span></span>
|
||
<span class="line"><span>│ │ └── DemoMiddleware.php // 演示模式写操作拦截</span></span>
|
||
<span class="line"><span>│ └── Requests/ // 24 个 FormRequest(统一继承 BaseRequest)</span></span>
|
||
<span class="line"><span>│ ├── BaseRequest.php // 基类:授权放行 + 失败统一 JSON</span></span>
|
||
<span class="line"><span>│ ├── ExampleRequest.php // 示例请求验证</span></span>
|
||
<span class="line"><span>│ └── ... // 其他模块请求验证</span></span>
|
||
<span class="line"><span>├── Models/ // Eloquent 模型(25 个)</span></span>
|
||
<span class="line"><span>│ ├── Concerns/ // 3 个模型 Trait</span></span>
|
||
<span class="line"><span>│ │ ├── SoftDeletesByFlag.php // is_delete 软删除</span></span>
|
||
<span class="line"><span>│ │ ├── SoftDeleteFlagScope.php// 全局软删除范围</span></span>
|
||
<span class="line"><span>│ │ └── HasAuditColumns.php // 审计字段自动填充</span></span>
|
||
<span class="line"><span>│ ├── User.php // 用户模型($table = 'user',前缀由 DB_PREFIX 决定)</span></span>
|
||
<span class="line"><span>│ ├── Example.php // 案例模型</span></span>
|
||
<span class="line"><span>│ └── ... // 其他模型</span></span>
|
||
<span class="line"><span>├── Observers/ // 模型观察者(数据变更 → 缓存失效)</span></span>
|
||
<span class="line"><span>│ ├── DictItemObserver.php // 字典项变更 → 清除字典缓存</span></span>
|
||
<span class="line"><span>│ ├── MenuObserver.php // 菜单变更 → 清除菜单/权限缓存</span></span>
|
||
<span class="line"><span>│ └── RoleMenuObserver.php // 角色菜单变更 → 清除角色权限缓存</span></span>
|
||
<span class="line"><span>├── Providers/</span></span>
|
||
<span class="line"><span>│ └── AppServiceProvider.php // 启动校验(JWT_SECRET fail-close)+ Observer 注册</span></span>
|
||
<span class="line"><span>├── Services/ // ★ 业务逻辑层(36 个)</span></span>
|
||
<span class="line"><span>│ ├── BaseService.php // 核心基类(全部声明式属性集中于此)</span></span>
|
||
<span class="line"><span>│ ├── BaseTenantService.php // 租户版基类(tenant_id 查询/写入双隔离)</span></span>
|
||
<span class="line"><span>│ ├── Concerns/ // 7 个 Service Trait(只放方法)</span></span>
|
||
<span class="line"><span>│ │ ├── HasCrudOperations.php // add/update/delete + 生命周期钩子 + 事务</span></span>
|
||
<span class="line"><span>│ │ ├── HasQueryScopes.php // buildQuery / 排序白名单</span></span>
|
||
<span class="line"><span>│ │ ├── HasFileProcessing.php // 文件字段自动处理(临时→正式、域名补全)</span></span>
|
||
<span class="line"><span>│ │ ├── HasDataScope.php // 数据权限 + 租户隔离</span></span>
|
||
<span class="line"><span>│ │ ├── HasSerializeMaps.php // 字典翻译(DictCacheService 批量优化)</span></span>
|
||
<span class="line"><span>│ │ ├── HasUniqueCheck.php // 唯一性校验</span></span>
|
||
<span class="line"><span>│ │ └── HasConfigValueProcessing.php // 配置项 value 按类型处理(文件迁移 / valueList)</span></span>
|
||
<span class="line"><span>│ ├── ExampleService.php // 案例演示服务(标准 CRUD 参考模板)</span></span>
|
||
<span class="line"><span>│ ├── JwtService.php // JWT 签发 / 刷新 / 解析</span></span>
|
||
<span class="line"><span>│ ├── DictCacheService.php // 字典服务(两级缓存)</span></span>
|
||
<span class="line"><span>│ ├── GeneratorService.php // 代码生成服务</span></span>
|
||
<span class="line"><span>│ ├── ExcelService.php // Excel 导入导出</span></span>
|
||
<span class="line"><span>│ ├── DbMigrateService.php // 跨数据库数据迁移</span></span>
|
||
<span class="line"><span>│ └── ... // 其他业务/横切服务</span></span>
|
||
<span class="line"><span>├── Support/ // 基础支撑</span></span>
|
||
<span class="line"><span>│ ├── Auth.php // 当前登录用户(Auth::userId() 等)</span></span>
|
||
<span class="line"><span>│ └── Result.php // 统一响应类(success/page/fail/...)</span></span>
|
||
<span class="line"><span>└── Task/ // 定时任务处理器</span></span>
|
||
<span class="line"><span> ├── BaseTask.php // 任务基类</span></span>
|
||
<span class="line"><span> ├── HelloWorldTask.php // 测试任务(验证 daemon 调度)</span></span>
|
||
<span class="line"><span> └── SendSmsTask.php // 示例任务</span></span></code></pre></div><h2 id="后端模块内部结构" tabindex="-1">后端模块内部结构 <a class="header-anchor" href="#后端模块内部结构" aria-label="Permalink to "后端模块内部结构""></a></h2><p>每个业务模块遵循统一的文件结构:</p><div class="language-text vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">text</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span>app/Http/Controllers/Api/{Name}Controller.php // HTTP 入口(注解 + 调用快捷方法)</span></span>
|
||
<span class="line"><span>app/Http/Requests/{Name}Request.php // 参数格式验证(FormRequest)</span></span>
|
||
<span class="line"><span>app/Services/{Name}Service.php // 业务逻辑(属性配置 + 钩子)</span></span>
|
||
<span class="line"><span>app/Models/{Name}.php // 数据模型(表映射 + 关联)</span></span></code></pre></div><table tabindex="0"><thead><tr><th>文件</th><th>职责</th><th>基类</th></tr></thead><tbody><tr><td>Controller</td><td>接收请求、调用 Service、返回统一响应</td><td><code>App\\Http\\Controllers\\Controller</code></td></tr><tr><td>Request</td><td>参数格式验证(必填、类型、格式)</td><td><code>BaseRequest</code></td></tr><tr><td>Service</td><td>业务逻辑、属性声明、生命周期钩子</td><td><code>BaseService</code> / <code>BaseTenantService</code></td></tr><tr><td>Model</td><td>数据库表映射、关联关系、软删除、审计字段</td><td>Eloquent Model + Concerns Trait</td></tr></tbody></table><h2 id="配置目录-config-" tabindex="-1">配置目录 (config/) <a class="header-anchor" href="#配置目录-config-" aria-label="Permalink to "配置目录 (config/)""></a></h2><div class="language-text vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">text</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span>config/</span></span>
|
||
<span class="line"><span>├── api.php // API 配置(驼峰/下划线自动转换开关)★ 独立配置</span></span>
|
||
<span class="line"><span>├── captcha.php // 验证码配置(长度/字符集/有效期/万能码)★ 独立配置</span></span>
|
||
<span class="line"><span>├── cors.php // 跨域配置(允许来源/方法/头)★ 独立配置</span></span>
|
||
<span class="line"><span>├── file.php // 文件上传配置(目录/域名/大小/后缀白名单)★ 独立配置</span></span>
|
||
<span class="line"><span>├── jwt.php // JWT 配置(密钥/有效期/签发者)★ 独立配置</span></span>
|
||
<span class="line"><span>├── middleware.php // 中间件配置(受信代理等)★ 独立配置</span></span>
|
||
<span class="line"><span>├── tenant.php // 多租户配置(默认租户 ID)★ 独立配置</span></span>
|
||
<span class="line"><span>├── generator.php // 代码生成器配置(父菜单 ID、应用名)</span></span>
|
||
<span class="line"><span>├── app.php // 应用配置(名称/时区/调试模式)</span></span>
|
||
<span class="line"><span>├── auth.php // 认证配置</span></span>
|
||
<span class="line"><span>├── cache.php // 缓存配置(redis 驱动)</span></span>
|
||
<span class="line"><span>├── database.php // 数据库配置(mysql/pgsql/sqlsrv/sqlite + redis)</span></span>
|
||
<span class="line"><span>├── filesystems.php // 文件系统配置</span></span>
|
||
<span class="line"><span>├── logging.php // 日志配置</span></span>
|
||
<span class="line"><span>├── mail.php // 邮件配置</span></span>
|
||
<span class="line"><span>├── queue.php // 队列配置</span></span>
|
||
<span class="line"><span>├── services.php // 第三方服务配置</span></span>
|
||
<span class="line"><span>└── session.php // 会话配置</span></span></code></pre></div><div class="tip custom-block"><p class="custom-block-title">独立配置约定</p><p>标 ★ 的 7 个配置文件为本项目<strong>独立维护</strong>(不与 Laravel 默认配置合并),通过 <code>config('jwt.secret')</code>、<code>config('file.domain_url')</code> 等方式读取。完整配置项见 <a href="/zh/appendix/config-reference.html">附录 C 配置项速查</a>。</p></div><h2 id="数据库目录-database-" tabindex="-1">数据库目录 (database/) <a class="header-anchor" href="#数据库目录-database-" aria-label="Permalink to "数据库目录 (database/)""></a></h2><div class="language-text vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">text</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span>database/</span></span>
|
||
<span class="line"><span>├── migrations/ // 迁移目录(本项目为空,建表以 SQL 导出为准)</span></span>
|
||
<span class="line"><span>├── seeders/</span></span>
|
||
<span class="line"><span>│ └── DatabaseSeeder.php // 初始数据:租户、部门、角色、菜单、用户、字典</span></span>
|
||
<span class="line"><span>└── factories/ // 模型工厂</span></span></code></pre></div><div class="warning custom-block"><p class="custom-block-title">注意</p><p>本项目<strong>未使用 Laravel 迁移建表</strong>,数据库结构以 <code>document/<数据库类型>/rxthinkcmf.laravel13.elevue.sql</code> 脚本为准(25 张业务表,<code>laravel_</code> 前缀,五种数据库各有专用脚本)。<code>composer setup</code> 中的 <code>migrate --force</code> 仅初始化迁移记录表,不会创建业务表。详见 <a href="/zh/quickstart/database-init.html">2.5 数据库初始化</a>。</p></div><h2 id="代码生成模板-resources-templates-" tabindex="-1">代码生成模板 (resources/templates/) <a class="header-anchor" href="#代码生成模板-resources-templates-" aria-label="Permalink to "代码生成模板 (resources/templates/)""></a></h2><div class="language-text vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">text</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span>resources/templates/</span></span>
|
||
<span class="line"><span>├── controller.php.tpl // 控制器模板</span></span>
|
||
<span class="line"><span>├── service.php.tpl // 服务层模板</span></span>
|
||
<span class="line"><span>├── model.php.tpl // 模型模板</span></span>
|
||
<span class="line"><span>├── request.php.tpl // FormRequest 模板</span></span>
|
||
<span class="line"><span>├── ui/ // 普通列表模板(前端文件)</span></span>
|
||
<span class="line"><span>│ ├── index.vue.tpl // 列表页模板</span></span>
|
||
<span class="line"><span>│ ├── edit.vue.tpl // 编辑弹窗模板</span></span>
|
||
<span class="line"><span>│ ├── detail.vue.tpl // 详情弹窗模板</span></span>
|
||
<span class="line"><span>│ ├── api.ts.tpl // API 接口模板</span></span>
|
||
<span class="line"><span>│ ├── columns.ts.tpl // 表格列定义模板</span></span>
|
||
<span class="line"><span>│ └── querySchemas.ts.tpl // 查询条件模板</span></span>
|
||
<span class="line"><span>└── ui2/ // 树形结构模板(前端文件)</span></span></code></pre></div><h2 id="路由目录-routes-" tabindex="-1">路由目录 (routes/) <a class="header-anchor" href="#路由目录-routes-" aria-label="Permalink to "路由目录 (routes/)""></a></h2><div class="language-text vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">text</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span>routes/</span></span>
|
||
<span class="line"><span>├── api.php // ★ 全部 API 路由(约 165 条)</span></span>
|
||
<span class="line"><span>│ // 公开接口(login/captcha/refresh/oauth2)在中间件组外</span></span>
|
||
<span class="line"><span>│ // 认证接口在 ['auth.jwt','tenant','log.operation'] 组内</span></span>
|
||
<span class="line"><span>├── console.php // Artisan 调度注册</span></span>
|
||
<span class="line"><span>└── web.php // 欢迎页路由(/up 健康检查由 bootstrap/app.php 注册)</span></span></code></pre></div><h2 id="Docker-目录-docker-" tabindex="-1">Docker 目录 (docker/) <a class="header-anchor" href="#Docker-目录-docker-" aria-label="Permalink to "Docker 目录 (docker/)""></a></h2><div class="language-text vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">text</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span>docker-compose.yml // 四容器编排(Nginx + PHP-FPM + MySQL + Redis)</span></span>
|
||
<span class="line"><span>docker/</span></span>
|
||
<span class="line"><span>├── Dockerfile // PHP 8.3-fpm 应用镜像(扩展 + Composer 依赖)</span></span>
|
||
<span class="line"><span>├── nginx.conf // Nginx 站点配置(Laravel 路由重写 + 安全规则)</span></span>
|
||
<span class="line"><span>└── .env.docker // 容器环境变量(密码、端口、JWT 密钥)</span></span></code></pre></div><h2 id="资料目录-document-" tabindex="-1">资料目录 (document/) <a class="header-anchor" href="#资料目录-document-" aria-label="Permalink to "资料目录 (document/)""></a></h2><div class="language-text vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">text</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span>document/</span></span>
|
||
<span class="line"><span>├── .gitignore // 忽略规则(脚本等大文件不进版本库)</span></span>
|
||
<span class="line"><span>├── mysql/</span></span>
|
||
<span class="line"><span>│ └── rxthinkcmf.laravel13.elevue.sql // ★ MySQL 初始化脚本(约 226MB,25 张业务表 + 初始数据)</span></span>
|
||
<span class="line"><span>├── postgresql/</span></span>
|
||
<span class="line"><span>│ └── rxthinkcmf.laravel13.elevue.sql // PostgreSQL 初始化脚本</span></span>
|
||
<span class="line"><span>├── sqlserver/</span></span>
|
||
<span class="line"><span>│ └── rxthinkcmf.laravel13.elevue.sql // SQL Server 初始化脚本</span></span>
|
||
<span class="line"><span>├── oracle/</span></span>
|
||
<span class="line"><span>│ └── rxthinkcmf.laravel13.elevue.sql // Oracle 初始化脚本</span></span>
|
||
<span class="line"><span>└── sqlite/</span></span>
|
||
<span class="line"><span> └── rxthinkcmf.laravel13.elevue.sql // SQLite 初始化脚本</span></span></code></pre></div><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>五种数据库脚本按类型分组,已做对应 SQL 语法适配,直接导入即可(见 <a href="/zh/quickstart/database-init.html">2.5 数据库初始化</a>)。Docker 首次启动自动导入 <code>document/mysql/</code> 下的脚本。</p></div><h2 id="关键配置文件" tabindex="-1">关键配置文件 <a class="header-anchor" href="#关键配置文件" aria-label="Permalink to "关键配置文件""></a></h2><table tabindex="0"><thead><tr><th>文件</th><th>作用</th></tr></thead><tbody><tr><td><code>.env</code></td><td>数据库连接、JWT 密钥、Redis 密码、文件上传等环境变量</td></tr><tr><td><code>config/database.php</code></td><td>数据库配置(4 种关系库 + Redis 连接)</td></tr><tr><td><code>config/jwt.php</code></td><td>JWT 配置(密钥 / access·refresh 有效期 / 签发者)</td></tr><tr><td><code>config/file.php</code></td><td>文件上传配置(目录 / 域名 / 大小 / 后缀白名单)</td></tr><tr><td><code>config/cors.php</code></td><td>跨域配置(允许来源 / 方法 / 头)</td></tr><tr><td><code>config/app.php</code></td><td>应用配置(名称 / 时区 / 调试模式、受信代理 <code>trusted_proxies</code>)</td></tr><tr><td><code>config/api.php</code></td><td>响应驼峰/下划线自动转换开关</td></tr><tr><td><code>config/tenant.php</code></td><td>多租户配置(默认租户 ID)</td></tr><tr><td><code>config/generator.php</code></td><td>代码生成器配置(父菜单 ID、应用名)</td></tr><tr><td><code>composer.json</code></td><td>依赖清单 + <code>setup</code> / <code>dev</code> / <code>test</code> 脚本</td></tr><tr><td><code>bootstrap/app.php</code></td><td>中间件别名注册、全局中间件组、<code>/up</code> 健康检查</td></tr></tbody></table><div class="tip custom-block"><p class="custom-block-title">注意事项</p><ul><li>保持一致性:目录结构一旦确定,应保持一致性,避免随意更改。</li><li>合理划分模块:根据项目的实际需求,合理划分功能模块,避免过度模块化。</li><li>文档记录:在项目文档中详细说明目录结构和各模块的功能,便于新成员快速上手。</li><li>版本控制:使用 <code>Git</code> 等版本控制工具,并在 <code>.gitignore</code> 文件中配置不需要跟踪的目录和文件(<code>vendor/</code>、<code>storage/</code>、<code>.env</code> 等)。</li></ul></div><h2 id="总结" tabindex="-1">总结 <a class="header-anchor" href="#总结" aria-label="Permalink to "总结""></a></h2><p>软件架构的目录结构是项目开发和维护的基础,直接影响到项目的可维护性、可扩展性和开发效率。本项目采用分层的目录结构(后端 Controller → Service → Model,Trait 组合复用横切能力),结合模块化管理,是一个有效的解决方案。通过合理规划和遵循最佳实践,可以确保项目的结构清晰、功能明确,为团队开发和长期维护打下坚实的基础。</p>`,34)])])}const v=a(l,[["render",t]]);export{u as __pageData,v as default};
|