很合理地将各个功能模块放在各自的文件,并且文件定义清晰、无歧义。所以有了下面这个默认目录结构,我们来解释下对应的每个目录。
    image.png
    在根目录下,有五个文件:app、framework、config、storage、test,我们一个个描述功能看看下面都应该怎么划分。
    app 目录一个业务就是一个 App,和业务代码相关的,比如所有的请求、控制台命令、控制器、服务提供者等都放在这个目录中,而业务逻辑代码之外的,比如配置文件、缓存、日志等,都放在外面。这样能把“业务逻辑”和“非业务逻辑”区分得更清晰。我们继续看业务逻辑目录 app 下有哪些子目录。
    framework 目录framework 目录就是我们这个框架所有的代码。在这个目录里,除了之前引入了 Gin 框架有的 gin 目录,还有一些子目录:command、contract、middleware、provider、util。
    config、storage、test 目录在应用根目录下还剩 config 、storage、test 目录。

    config 这个目录存放的是配置文件,至于不同环境的配置文件如何存放和组织,我们后面会统一探讨整体的配置文件存放机制。test 目录存放的是测试相关的信息,比如测试用例或者测试数据等信息。应用根目录下的 storage 存放应用运行过程中产生的内容。首先是日志,日志是应用运行过程中必然产生的信息,在 storage 下的 log 子目录里保存;其次是运行的进程 ID 等信息,这些都会存放在 storage 下的 runtime 目录中。好,

    目录结构讲完了,我们整理下,从应用根目录开始,分为 5 个子目录 app、framework、config、storage、test,其中:
    app 按应用的使用方式和通用性分为 console 和 http,以及通用的 provider 目录。
    framework 根据框架需要提供的功能分为 command、contract、gin、middleware、provider 和 util 6 个子目录。
    config 和 test 分别保存配置和测试相关的信息;
    storage 目录保存应用运行产生的信息,分为 log 和 runtime 两个目录。