46 lines
8.0 KiB
JavaScript
46 lines
8.0 KiB
JavaScript
import{_ as s,o as n,c as e,a2 as p}from"./chunks/framework.BbmSSMjL.js";const u=JSON.parse('{"title":"3.1 概述与目标","description":"","frontmatter":{},"headers":[],"relativePath":"zh/guide/overview.md","filePath":"zh/guide/overview.md"}'),l={name:"zh/guide/overview.md"};function t(d,a,i,o,c,r){return n(),e("div",null,[...a[0]||(a[0]=[p(`<h1 id="_3-1-概述与目标" tabindex="-1">3.1 概述与目标 <a class="header-anchor" href="#_3-1-概述与目标" aria-label="Permalink to "3.1 概述与目标""></a></h1><div class="tip custom-block"><p class="custom-block-title">概述</p><p>本章以项目内置的 <strong>example(案例演示)</strong> 模块为例,从数据库建表到前端页面联调,手把手演示开发全流程。学完本章后,您将掌握新增业务模块的标准步骤。</p></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>┌──────────┐</span></span>
|
||
<span class="line"><span>│ 1. 建表 │ 创建数据库表(含公共字段)</span></span>
|
||
<span class="line"><span>└────┬─────┘</span></span>
|
||
<span class="line"><span> │</span></span>
|
||
<span class="line"><span> ▼</span></span>
|
||
<span class="line"><span>┌──────────┐</span></span>
|
||
<span class="line"><span>│ 2. Model │ 创建数据模型(模型 Trait 复用)</span></span>
|
||
<span class="line"><span>└────┬─────┘</span></span>
|
||
<span class="line"><span> │</span></span>
|
||
<span class="line"><span> ▼</span></span>
|
||
<span class="line"><span>┌──────────┐</span></span>
|
||
<span class="line"><span>│ 3. FormRequest │ 创建表单请求验证(BaseRequest)</span></span>
|
||
<span class="line"><span>└────┬─────┘</span></span>
|
||
<span class="line"><span> │</span></span>
|
||
<span class="line"><span> ▼</span></span>
|
||
<span class="line"><span>┌──────────┐</span></span>
|
||
<span class="line"><span>│ 4. Service│ 创建业务服务(属性配置 + 钩子)</span></span>
|
||
<span class="line"><span>└────┬─────┘</span></span>
|
||
<span class="line"><span> │</span></span>
|
||
<span class="line"><span> ▼</span></span>
|
||
<span class="line"><span>┌──────────┐</span></span>
|
||
<span class="line"><span>│ 5. Controller│ 创建控制器(注解 + 快捷方法)</span></span>
|
||
<span class="line"><span>└────┬─────┘</span></span>
|
||
<span class="line"><span> │</span></span>
|
||
<span class="line"><span> ▼</span></span>
|
||
<span class="line"><span>┌──────────┐</span></span>
|
||
<span class="line"><span>│ 6. Route │ 注册路由(routes/api.php)</span></span>
|
||
<span class="line"><span>└────┬─────┘</span></span>
|
||
<span class="line"><span> │</span></span>
|
||
<span class="line"><span> ▼</span></span>
|
||
<span class="line"><span>┌──────────┐</span></span>
|
||
<span class="line"><span>│ 7. Menu │ 配置菜单权限(可选)</span></span>
|
||
<span class="line"><span>└────┬─────┘</span></span>
|
||
<span class="line"><span> │</span></span>
|
||
<span class="line"><span> ▼</span></span>
|
||
<span class="line"><span>┌──────────┐</span></span>
|
||
<span class="line"><span>│ 8. Frontend│ 前端 API + 页面([详见第 9 章](/zh/frontend/overview.html))</span></span>
|
||
<span class="line"><span>└──────────┘</span></span></code></pre></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><th>示例</th></tr></thead><tbody><tr><td>表名</td><td>不含前缀,前缀由 <code>DB_PREFIX</code> 决定(默认 <code>laravel_</code>)</td><td><code>example</code> → 实际 <code>laravel_example</code></td></tr><tr><td>字段名</td><td>小写下划线</td><td><code>create_time</code>、<code>user_id</code></td></tr><tr><td>主键</td><td>统一使用 <code>id</code>,INT 自增</td><td><code>id INT PRIMARY KEY AUTO_INCREMENT</code></td></tr><tr><td>Model</td><td>位于 <code>app/Models/</code>,<code>$table</code> 指定表名</td><td><code>protected $table = 'example'</code></td></tr><tr><td>Service</td><td>继承 <code>BaseService</code> 或 <code>BaseTenantService</code></td><td><code>class ExampleService extends BaseService</code></td></tr><tr><td>Request</td><td>继承 <code>BaseRequest</code>,<code>rules()</code> 声明规则</td><td><code>class ExampleRequest extends BaseRequest</code></td></tr><tr><td>Controller</td><td>位于 <code>app/Http/Controllers/Api/</code>,继承 <code>Controller</code></td><td><code>class ExampleController extends Controller</code></td></tr><tr><td>权限码</td><td><code>sys:模块名:操作</code></td><td><code>sys:example:add</code></td></tr><tr><td>路由</td><td><code>routes/api.php</code>,RESTful 风格</td><td><code>GET /api/example/page</code></td></tr></tbody></table><h2 id="本章示例" tabindex="-1">本章示例 <a class="header-anchor" href="#本章示例" aria-label="Permalink to "本章示例""></a></h2><p>本章以项目内置的 <strong>example(案例演示)</strong> 模块为例,完整演示从建表到联调的全过程。该模块是代码生成器的参考模板,涵盖了标准 CRUD 的所有典型场景:</p><ul><li>分页列表(支持名称模糊搜索、状态精确过滤)</li><li>全量列表</li><li>详情查询</li><li>新增(含头像上传)</li><li>修改</li><li>删除 / 批量删除</li><li>Excel 导入导出</li><li>权限控制(<code>#[Permission]</code> 注解)</li><li>操作日志(<code>#[OperationLog]</code> 注解)</li><li>枚举显示名翻译(status 字典映射)</li><li>唯一性校验(<code>uniqueFields</code> 属性声明)</li></ul><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>app/Models/Example.php # 数据模型</span></span>
|
||
<span class="line"><span>app/Http/Requests/ExampleRequest.php # 表单请求验证</span></span>
|
||
<span class="line"><span>app/Services/ExampleService.php # 业务服务</span></span>
|
||
<span class="line"><span>app/Http/Controllers/Api/ExampleController.php # 控制器</span></span>
|
||
<span class="line"><span>routes/api.php # 路由(example 模块 9 条)</span></span>
|
||
<span class="line"><span># 前端(本仓库 ui/ 目录):</span></span>
|
||
<span class="line"><span># ui/src/api/tool/example.ts # 前端 API 模块</span></span>
|
||
<span class="line"><span># ui/src/views/tool/example/ # 前端页面</span></span></code></pre></div><h2 id="学习建议" tabindex="-1">学习建议 <a class="header-anchor" href="#学习建议" aria-label="Permalink to "学习建议""></a></h2><ol><li>先通读 3.2~3.8 按顺序跟随 example 模块走一遍;</li><li>重点理解 <strong>声明式配置</strong>:Service 只声明属性,CRUD 由 <code>BaseService</code> + 6 个 Trait 完成;</li><li>掌握后动手:可直接使用 <a href="/zh/generator/overview.html">第 10 章 代码生成器</a> 一键生成同等结构的模块。</li></ol>`,13)])])}const m=s(l,[["render",t]]);export{u as __pageData,m as default};
|