rust_boilerplate:用于开发Rust项目的MVC模板


如何使用Rust通过Actix构建一个适度的结构化应用?
设计精神:更看中MVC的设计。
这就是我建立这个模板的原因,以便你快速建立你的概念/逻辑。

src/cfg/
将配置设置放在这里

常见问题
1.为什么不使用env?
我不喜欢使用env,因为我已经存储了大量的env变量和别名用于操作。因此,我不想存储更多与应用程序有关的东西,这让我感到困惑。其次,我希望env可以直接通过开发者使用。另一种经常使用的做法是通过Kubernetes中的configmap来存储环境变量,但这对开发者来说并不直接。更糟糕的是,它产生了通信成本。

2.为什么是toml?
toml结构的可读性,尽管在这个演示中我使用的是非常简单的风格。请阅读config-rs文档,你就会明白。

src/db
只要把数据库相关的功能放在这个文件夹里就可以了。

常见问题
1.为什么是单例
我认为在一个小的应用程序中,最好的数据库处理程序是单子单例设计。它简单明了,易于理解。一旦人们理解了lazy_static的含义,他们就知道如何写他们的应用程序。

src/err
说实话,这部分我没有设计太多。但很明显,你应该把所有与错误有关的信息/常量/变量放在这个文件夹里。我将改进这个文件夹,但可能不会为你更新这个项目。请让我提前向你道歉

src/middleware
把中间件。greeting 中间件是演示版,让你在想做其他种类的中间件时复制粘贴。

常见问题
1.为什么是一个层?
可读性

src/pkg
这个文件夹包含了第三方的库/服务。这个pkg文件夹的一个要点是,这里的一切是独立的。它们不依赖其他的初始化。

src/internal
这个文件夹还包含第三方库/服务。我没有把这个文件夹放到项目中,但我会的。猜得好内部和pkg的区别是依赖关系。内部会依赖其他的,比如pkg/内部。当你的项目达到一定水平时,区分是很重要的。

src/router
这很明显,所有的路由器功能都放在这个文件夹里。

常见问题
1. 路由器函数的目的是什么?
我通常在这里处理请求逻辑和为我们的业务逻辑重新格式化参数。最后,最后的错误验证和检查应该在这里完成。

src/service
商业逻辑。是的!这里是你所寻求的肮脏的位置。我喜欢在控制器中处理一切,让路由器和模型变得非常简单

常见问题
1.为什么?
通常情况下,当我们写业务逻辑时,我们希望所有的东西都在我们手中。我不想切换到其他文件夹去寻找某个地方的一些逻辑。我希望一切都在这里。此外,任何与业务逻辑有关的东西都会经常变化,所以这个文件夹极有可能变得一团糟。因此,对我来说,在早期阶段进行优化是毫无意义的。

其他文件和文件夹是典型的Rust文件夹结构,所以请阅读Rust书,你会理解它的

常见问题
1.等一下!为什么要添加lib.rs?
在lib.rs中,我导入了所有的mods并将main.rs分开。这样做,main.rs可以专注于它的逻辑,而不是增加大量的行来添加mods,这对我来说是不可读的。因为......我懒得向下滚动