Golang MVC结构

时间:2016-08-28 09:18:18

标签: function design-patterns model-view-controller go

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

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

  • 应用
    • 控制器
    • 模型
    • lib(所有功能类/功能)
    • 中间件
    • router.go
  • 资源
    • 视图
  • main.go

我的问题是:如何将配置注入到任何设置和其他始终需要的实现类(如加载速度单页)。

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

1 个答案:

答案 0 :(得分:2)

您可以拥有一个名为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)
}

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

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