我是一名 NodeJS / PHP 开发人员,并且是 Go 的初学者。经过一些研究后,我为我的 REST API 项目提出了这样的 MVC 风格文件夹结构。
.
+- bin/
+- controllers/
+- userController/
+- userController.go
+- models/
+- userModel/
+- userModel.go
+- main.go
Run Code Online (Sandbox Code Playgroud)
因此,我可以让我的代码看起来像这样:
import "github.com/gin-gonic/gin"
import "controllers/userController"
router := gin.Default()
router.GET("/user", userController.handleSomeLogicHere)
Run Code Online (Sandbox Code Playgroud)
但后来我发现根据GoLang官网的说法,不建议使用camel case和snake case进行封装。
我想知道在 Go 中使用 MVC 是否不是一个好习惯(因为我知道有人建议基于模块/依赖项的文件夹结构)?
或者我应该将所有控制器和模型更改为一个词,例如 usercontroller 或 userctrl (但这对我来说似乎有点连接)?
我会稍微改变一下你的文件夹结构。我不会为每个控制器提供单独的包,而是将它们作为包的一部分controllers(当我谈论控制器时,同样的思路也适用于模型)。
.
+- bin/
+- controllers/
+- user.go
+- models/
+- user.go
+- main.go
Run Code Online (Sandbox Code Playgroud)
为此,我还会稍微更改代码结构以实例化控制器实例,如下所示:
import "models"
import "controllers"
import "github.com/gin-gonic/gin"
userController := controllers.UserController{
Users: models.UserModel{}, //DO your stuff here
}
router := gin.Default()
router.GET("/user", userController.GetUser)
Run Code Online (Sandbox Code Playgroud)
您可以按照自己的意愿为每个控制器创建一个新包,但它很容易会增长为大量包。通过将所有控制器保存在一个包中,可以更轻松地使用。
注意:随着您的应用程序的增长,可能需要创建子包。我能想到的一种情况是将所有仅管理控制器放在一个controllers/admin包中。
| 归档时间: |
|
| 查看次数: |
7257 次 |
| 最近记录: |