Golang MVC 结构

Pat*_*tfo 6 model-view-controller design-patterns function go

我搜索了很多网站,在 GitHub 上看到了很多来源,但没有找到解决方案。

我在 Golang 中创建了一个 MVC 网站模式:

  • 应用程序
    • 控制器
    • 楷模
    • lib(所有功能类/函数)
    • 中间件
    • 路由器
  • 资源
    • 意见
  • main.go

我的问题是:如何注入配置以获得无处不在的设置和其他始终需要的实现类(如加载速度单页)。

另一件事(另外):任何人都可以向我推荐好的材料或转录 MVC 技巧的想法将 MVC 与 Golang 一起使用(一般有用的信息)。

pre*_*tch 4

您可以拥有一个名为 MainController 的文件,您可以在其中创建用于访问数据库、会话、配置文件等的函数。例如,您真正需要做的就是说这样的话(从其他控制器继承东西):

//MyController.go
type App struct {
    MainController
}

func (c Application) MyControllerFunc() returnTypeHere(http.Response for example) {

    //c.getDatabaseName is function from MainController that reads information from some plain text file or json file or similar
    someInfoFromConfigFile = c.getDatabaseName()
    var str []string
    str = append(str,  someInfoFromConfigFile)

    //RenderJson is function that render http response as json (Content type plain/json)
    return c.RenderJson(str)
}
Run Code Online (Sandbox Code Playgroud)

但如果你需要 mvc,我建议你使用一些框架(例如 Revel)。我一直在使用它。如果您愿意,它可以为您提供基本的 mvc 功能,而所有其他内容实际上取决于您。您可以将业务逻辑保存在一些助手中,将模型保存在模型文件中等。

您可以在这里查看 Revel 主控制器结构: https://github.com/revel/revel/blob/master/controller.go