function - Golang MVC结构

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

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

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

  • 应用程序
    • 控制者
    • 模特
    • lib(所有功能类/函数)
    • 中间件
    • router.go
  • 资源
    • 观点
  • main.go

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

还有一件事(另外):任何人都可以向我推荐一个好的 Material 或转录 MVC tricks idea works MVC with Golang(一般有用信息)。

最佳答案

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

//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 主 Controller 结构: https://github.com/revel/revel/blob/master/controller.go

关于function - Golang MVC结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39189731/

相关文章:

C 程序使用函数查找两个数字之间的最大值和最小值

c++ - 在字符串行中查找转义字符

javascript - jQuery - 仅在面板可见时切换关闭点击外部元素的面板

java - Java 的枚举相对于旧的 "Typesafe Enum"模式的优势?

php - 使用 Laravel HasManyThrough 关系获取模型 ID 和更新字段时出错

forms - 使用 Spring MVC 进行表单验证后保留 File 字段的值

c - 简单的猜谜游戏,允许用户在正确猜出随机数后再次玩?

java - 在 hibernate/jpa 最佳实践问题中将分离的或新的实体与现有实体合并

javascript - mcv 应用程序在哪里为 View 调整模型数据?