我正在Go中创建一个服务器用于Web应用程序。该应用程序由Go代码组成,它将充当http服务器和应用程序的websocket服务器。它还将包含由Go代码提供的静态资产,例如html / css / javascript / images / etc.我计划使用go-bindata或等价物来打包最终的静态资产。所需的部署形式是单个二进制可执行文件,其中捆绑了所有静态资产。
但是,javascript资产的构建和组织方式要求它们需要编译步骤才能打包到Go源中以包含在已编译的二进制文件中。这将通过npm scripts / webpack / gulp / equivalent。
完成我已阅读有关recommended project structure的官方Go文档,但它似乎并未解决我的用例。
我不知道前端代码和后端代码是否应该存在于相同的git repo或单独的代码中。我不知道构建过程应该处理运行javascript编译过程,go-bindata过程和go build
过程。是否有推荐的方法来管理这类项目或类似成功项目的一些例子?
答案 0 :(得分:3)
这就是我的所作所为:
$GOPATH/src/github.com/myname/myproject:
-main.go //handlers and code
-static.go //generated
-static
-js
-foo.js
-html
-css
-img
我使用github.com/mjibson/esc将static
中的所有内容转换为static.go中的虚拟文件系统。如果还有其他任务要生成css / js(我运行typescript编译器),那么可以在嵌入资产之前运行这些任务。
所有这些都通过评论连接到go generate
:
//go:generate sass or tsc or grunt or whatever
//go:generate esc -o static.go static