Golang和AngularJS项目结构,大摇大摆

Golang和AngularJS项目结构,大摇大摆,angularjs,go,swagger,go-swagger,Angularjs,Go,Swagger,Go Swagger,我对Golang比较陌生,在以前的项目中使用了Node.JS和AngularJS,我对Golang在项目结构上的固执己见感到困扰。我们的Go代码存在于一个存储库中,该存储库还包含我们的HTML、CSS和JS代码,因此我们的“web UI”是一个单一的签出。Go服务器提供静态页面,让AngularJS完成繁重的客户端工作,并提供相当复杂的RESTful API,用于与嵌入式硬件交互。我们在Go服务器代码中使用local Include来解决代码实际上不在GOPATH中的问题。文件夹结构大致如下(未

我对Golang比较陌生,在以前的项目中使用了Node.JS和AngularJS,我对Golang在项目结构上的固执己见感到困扰。我们的Go代码存在于一个存储库中,该存储库还包含我们的HTML、CSS和JS代码,因此我们的“web UI”是一个单一的签出。Go服务器提供静态页面,让AngularJS完成繁重的客户端工作,并提供相当复杂的RESTful API,用于与嵌入式硬件交互。我们在Go服务器代码中使用local Include来解决代码实际上不在GOPATH中的问题。文件夹结构大致如下(未显示子文件夹):


/为什么不按原样将整个项目移动到GOPATH中?你不应该把事情弄糟。当我第一次尝试时,我遇到了一个错误,关于在GOPATH中不使用本地导入,所以我删除了“/”并得到了一个不同的错误。如果我使用从GOPATH根开始的完整路径,可能会起作用,但这将要求每个人在UI签出时使用完全相同的文件夹名称。这也意味着一次只签出一个UI,有时我们需要在多个分支中工作。我尝试从git中签出一个子文件夹(在git中,文件夹名称几乎不会改变,如果有的话),这似乎对我们现有的构建和运行ffjson和go-swagger都有效。这是一个潜在的解决方案,但我更喜欢一个不需要我强制将repo的子文件夹签出到GOPATH以及相关的导入更改的解决方案。这是一个永远不会被托管的本地项目,因此除了我们正在使用的工具之外,不需要在GOPATH中。在Go开发中,一切都假设您的项目在GOPATH中。如果你这次找到了一个解决方案,明天你可能会遇到另一个问题。我完全同意@TehSphinX,你应该将你的项目转移到GOPATH中。如果您对依赖关系有问题,我建议您使用依赖关系管理工具,如
golang/dep