epic-awesome-gamer/docs/zh/docs/player/getting-started/directory-structure/index.html

717 lines
14 KiB
HTML

<!DOCTYPE html>
<html lang="zh" dir="ltr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="目录结构 # New Project Scaffolding # . ├── examples ├── src │ ├── apis │ ├── database │ ├── model │ ├── services │ ├── config.yaml │ ├── config-sample.yaml │ └── main.py └── requirements.txt Diretory Structure Explained # examples # 这里存放一些精">
<meta name="theme-color" content="#FFFFFF">
<meta name="color-scheme" content="light dark"><meta property="og:title" content="目录结构" />
<meta property="og:description" content="" />
<meta property="og:type" content="website" />
<meta property="og:url" content="https://blog.echosec.top/epic-awesome-gamer/zh/docs/player/getting-started/directory-structure/" />
<title>目录结构 | Epic 免费人</title>
<link rel="manifest" href="/epic-awesome-gamer/manifest.json">
<link rel="icon" href="/epic-awesome-gamer/favicon.png" type="image/x-icon">
<link rel="stylesheet" href="/epic-awesome-gamer/book.min.31cccedbc2b6812eb37d0d37cdf4cb30cb89bd41421d3d51da624e11baccfe92.css" integrity="sha256-MczO28K2gS6zfQ03zfTLMMuJvUFCHT1R2mJOEbrM/pI=" crossorigin="anonymous">
<script defer src="/epic-awesome-gamer/flexsearch.min.js"></script>
<script defer src="/epic-awesome-gamer/zh.search.min.3200a7873d634aca2aaa251a5d54c95826bebddd7711953b981ad182f5d44509.js" integrity="sha256-MgCnhz1jSsoqqiUaXVTJWCa&#43;vd13EZU7mBrRgvXURQk=" crossorigin="anonymous"></script>
<script defer src="/epic-awesome-gamer/sw.min.fce957f404884887d3e2471bff9b46e9879d096ba64fd4ac8f550d0dd48d105a.js" integrity="sha256-/OlX9ASISIfT4kcb/5tG6YedCWumT9Ssj1UNDdSNEFo=" crossorigin="anonymous"></script>
<link rel="alternate" type="application/rss+xml" href="https://blog.echosec.top/epic-awesome-gamer/zh/docs/player/getting-started/directory-structure/index.xml" title="Epic 免费人" />
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
-->
</head>
<body dir="ltr">
<input type="checkbox" class="hidden toggle" id="menu-control" />
<input type="checkbox" class="hidden toggle" id="toc-control" />
<main class="container flex">
<aside class="book-menu">
<div class="book-menu-content">
<nav>
<h2 class="book-brand">
<a class="flex align-center" href="/epic-awesome-gamer/zh/"><span>Epic 免费人</span>
</a>
</h2>
<div class="book-search">
<input type="text" id="book-search-input" placeholder="搜索" aria-label="搜索" maxlength="64" data-hotkeys="s/" />
<div class="book-search-spinner hidden"></div>
<ul id="book-search-results"></ul>
</div>
<ul class="book-languages">
<li>
<input type="checkbox" id="languages" class="toggle" />
<label for="languages" class="flex justify-between">
<a role="button" class="flex align-center">
<img src="/epic-awesome-gamer/svg/translate.svg" class="book-icon" alt="Languages" />
简体中文
</a>
</label>
<ul>
<li>
<a href="https://blog.echosec.top/epic-awesome-gamer/">
English
</a>
</li>
</ul>
</li>
</ul>
<ul>
<li class="book-section-flat" >
<input type="checkbox" id="section-b900152bb5efd8f491d123b5f73aa30d" class="toggle" />
<label for="section-b900152bb5efd8f491d123b5f73aa30d" class="flex justify-between">
<a role="button" class="">使用指南</a>
</label>
<ul>
<li>
<a href="https://blog.echosec.top/epic-awesome-gamer/zh/docs/user/quick-start/" class="">快速上手</a>
<ul>
</ul>
</li>
</ul>
</li>
<li class="book-section-flat" >
<input type="checkbox" id="section-27d250f93b10a45d08befdb5dd2f0f3b" class="toggle" checked />
<label for="section-27d250f93b10a45d08befdb5dd2f0f3b" class="flex justify-between">
<a role="button" class="">开发指南</a>
</label>
<ul>
<li>
<input type="checkbox" id="section-a467ca43dbcdaf2ffbd8aeecc80a9440" class="toggle" checked />
<label for="section-a467ca43dbcdaf2ffbd8aeecc80a9440" class="flex justify-between">
<a role="button" class="">开始使用</a>
</label>
<ul>
<li>
<a href="https://blog.echosec.top/epic-awesome-gamer/zh/docs/player/getting-started/basic-usage/" class="">基本用法</a>
<ul>
</ul>
</li>
<li>
<a href="https://blog.echosec.top/epic-awesome-gamer/zh/docs/player/getting-started/directory-structure/" class=" active">目录结构</a>
<ul>
</ul>
</li>
<li>
<a href="https://blog.echosec.top/epic-awesome-gamer/zh/docs/player/getting-started/configuration/" class="">项目配置</a>
<ul>
</ul>
</li>
</ul>
</li>
<li>
<input type="checkbox" id="section-02591bebd5ca01427869ded3401321a8" class="toggle" />
<label for="section-02591bebd5ca01427869ded3401321a8" class="flex justify-between">
<a role="button" class="">脚手架指令</a>
</label>
<ul>
<li>
<a href="https://blog.echosec.top/epic-awesome-gamer/zh/docs/player/cli/overview/" class="">Overview</a>
<ul>
</ul>
</li>
<li>
<a href="https://blog.echosec.top/epic-awesome-gamer/zh/docs/player/cli/install/" class="">Scaffold Install</a>
<ul>
</ul>
</li>
<li>
<a href="https://blog.echosec.top/epic-awesome-gamer/zh/docs/player/cli/test/" class="">Scaffold Test</a>
<ul>
</ul>
</li>
<li>
<a href="https://blog.echosec.top/epic-awesome-gamer/zh/docs/player/cli/challenge/" class="">Scaffold Challenge</a>
<ul>
</ul>
</li>
<li>
<a href="https://blog.echosec.top/epic-awesome-gamer/zh/docs/player/cli/get/" class="">Scaffold Get</a>
<ul>
</ul>
</li>
<li>
<a href="https://blog.echosec.top/epic-awesome-gamer/zh/docs/player/cli/claim/" class="">Scaffold Claim</a>
<ul>
</ul>
</li>
<li>
<a href="https://blog.echosec.top/epic-awesome-gamer/zh/docs/player/cli/deploy/" class="">Scaffold Deploy</a>
<ul>
</ul>
</li>
</ul>
</li>
<li>
<input type="checkbox" id="section-723140cbe530ea3669e1696982bbe922" class="toggle" />
<label for="section-723140cbe530ea3669e1696982bbe922" class="flex justify-between">
<a role="button" class="">服务部署</a>
</label>
<ul>
<li>
<a href="https://blog.echosec.top/epic-awesome-gamer/zh/docs/player/hosting-deployment/container/" class="">容器化</a>
<ul>
</ul>
</li>
<li>
<a href="https://blog.echosec.top/epic-awesome-gamer/zh/docs/player/hosting-deployment/privatisation/" class="">私有工作流</a>
<ul>
</ul>
</li>
<li>
<a href="https://blog.echosec.top/epic-awesome-gamer/zh/docs/player/hosting-deployment/deploy/" class="">脚手架构建</a>
<ul>
</ul>
</li>
<li>
<a href="https://blog.echosec.top/epic-awesome-gamer/zh/docs/player/hosting-deployment/qinglong_panel/" class="">青龙微服务</a>
<ul>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<ul>
<li>
<a href="https://blog.echosec.top" target="_blank" rel="noopener">
Blog
</a>
</li>
<li>
<a href="https://github.com/QIN2DIM/epic-awesome-gamer/" target="_blank" rel="noopener">
GitHub
</a>
</li>
<li>
<a href="https://github.com/QIN2DIM/epic-awesome-gamer/issues" target="_blank" rel="noopener">
Discussions
</a>
</li>
<li>
<a href="https://t.me/joinchat/HlB9SQJubb5VmNU5" target="_blank" rel="noopener">
TG Studio
</a>
</li>
</ul>
</nav>
<script>(function(){var a=document.querySelector("aside .book-menu-content");addEventListener("beforeunload",function(b){localStorage.setItem("menu.scrollTop",a.scrollTop)}),a.scrollTop=localStorage.getItem("menu.scrollTop")})()</script>
</div>
</aside>
<div class="book-page">
<header class="book-header">
<div class="flex align-center justify-between">
<label for="menu-control">
<img src="/epic-awesome-gamer/svg/menu.svg" class="book-icon" alt="Menu" />
</label>
<strong>目录结构</strong>
<label for="toc-control">
</label>
</div>
<link rel="stylesheet" href="//cdn.bootcss.com/font-awesome/4.3.0/css/font-awesome.min.css">
</header>
<article class="markdown"><h1 id="目录结构">
目录结构
<a class="anchor" href="#%e7%9b%ae%e5%bd%95%e7%bb%93%e6%9e%84">#</a>
</h1>
<h2 id="new-project-scaffolding">
New Project Scaffolding
<a class="anchor" href="#new-project-scaffolding">#</a>
</h2>
<pre tabindex="0"><code class="language-asp" data-lang="asp">.
├── examples
├── src
│ ├── apis
│ ├── database
│ ├── model
│ ├── services
│ ├── config.yaml
│ ├── config-sample.yaml
│ └── main.py
└── requirements.txt
</code></pre><h2 id="diretory-structure-explained">
Diretory Structure Explained
<a class="anchor" href="#diretory-structure-explained">#</a>
</h2>
<h3 id="examples">
examples
<a class="anchor" href="#examples">#</a>
</h3>
<p>这里存放一些精简化的后端功能接口,玩家可通过这些运行案例迅速了解服务间的层级关系以及核心业务的实现逻辑。</p>
<h3 id="srcapis">
src/apis
<a class="anchor" href="#srcapis">#</a>
</h3>
<p>存放全局接口函数,如一些复杂的脚手架接口逻辑会在此编排。</p>
<h3 id="srcdatabase">
src/database
<a class="anchor" href="#srcdatabase">#</a>
</h3>
<p>存放系统运行缓存。在项目初始化后,此文件夹被自动创建。</p>
<h3 id="srcmodel">
src/model
<a class="anchor" href="#srcmodel">#</a>
</h3>
<p>存放 <code>YOLOv4</code> 目标检测模型。在项目初始化后,此文件夹被自动创建。</p>
<h3 id="srcservices">
src/services
<a class="anchor" href="#srcservices">#</a>
</h3>
<p>存放核心业务代码,包括如下内容:</p>
<pre tabindex="0"><code>.
├── bricklayer
│ ├── __init__.py
│ ├── core.py
│ ├── bricklayer.py
│ └── exceptions.py
├── explorer
│ ├── __init__.py
│ ├── core.py
│ ├── explorer.py
│ └── exceptions.py
├── utils
│ ├── accelerator
│ ├── armor
│ ├── toolbox
│ └── __init__.py
├── __init__.py
├── deploy.py
├── scaffold.py
└── settings.py
</code></pre><ul>
<li>
<p>bricklayer</p>
<p>搬瓦工核心业务代码,游戏认领。</p>
</li>
<li>
<p>explorer</p>
<p>探索者核心业务代码,游戏发现。</p>
</li>
<li>
<p>utils</p>
<p>可移植的 Toolkit 模组。</p>
</li>
<li>
<p>deploy.py</p>
<p>系统级的任务调度中心。</p>
</li>
<li>
<p>scaffold.py</p>
<p>系统脚手架。</p>
</li>
<li>
<p>settings.py</p>
<p>系统核心设置。初始化日志中心,转义<code>config.yaml</code> 的全局变量,目录定位等。</p>
</li>
</ul>
<h3 id="srcconfigyaml">
src/config.yaml
<a class="anchor" href="#srcconfigyaml">#</a>
</h3>
<p>项目配置文件。在项目初始化后,从 <code>src/config_sample.yaml</code> 拷贝生成。</p>
<h3 id="srcmainpy">
src/main.py
<a class="anchor" href="#srcmainpy">#</a>
</h3>
<p>脚手架入口文件,作为运行根辐射系统指令。</p>
</article>
<footer class="book-footer">
<div class="flex flex-wrap justify-between">
<div>
<a class="flex align-center" href="https://github.com/qin2dim/v2rss-docs/tree/main/content.zh/docs/player/getting-started/directory-structure/_index.md" target="_blank" rel="noopener">
<img src="/epic-awesome-gamer/svg/edit.svg" class="book-icon" alt="Edit" />
<span>编辑本页</span>
</a>
</div>
</div>
<script>(function(){function a(c){const a=window.getSelection(),b=document.createRange();b.selectNodeContents(c),a.removeAllRanges(),a.addRange(b)}document.querySelectorAll("pre code").forEach(b=>{b.addEventListener("click",function(c){a(b.parentElement),navigator.clipboard&&navigator.clipboard.writeText(b.parentElement.textContent)})})})()</script>
</footer>
<div class="book-comments">
</div>
<label for="menu-control" class="hidden book-menu-overlay"></label>
</div>
</main>
</body>
</html>