7

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

 1 year ago
source link: https://www.jdon.com/63937.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

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,这对我来说是不可读的。因为......我懒得向下滚动


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK