我正在为 Web 应用程序使用 Go 创建服务器。该应用程序由 Go 代码组成,它将充当应用程序的 http 服务器和 websocket 服务器。它还将包括由 Go 代码提供的静态 Assets ,例如 html/css/javascript/images/等。我打算使用 go-bindata或者相当于打包最终的静态 Assets 。所需的部署形式是捆绑了所有静态 Assets 的单个二进制可执行文件。
然而,javascript Assets 的构建和组织方式需要一个编译步骤,然后才能打包到 Go 源代码中,以便包含在编译后的二进制文件中。这将通过 npm scripts/webpack/gulp/equivalent 来完成。
我已经阅读了关于 recommended project structure 的官方 Go 文档,但它似乎并没有解决我的用例。
我不知道前端代码和后端代码应该放在同一个 git repo 中还是分开的。我不知道哪个构建过程应该处理运行 javascript 编译过程、go-bindata 过程和 go build
过程。是否有推荐的方法来管理此类项目或类似成功项目的一些示例?
最佳答案
这是我的做法:
$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 编译器),这些可以在您嵌入 Assets 之前运行。
所有这些都连接到带有注释的go generate
:
//go:generate sass or tsc or grunt or whatever
//go:generate esc -o static.go static
关于javascript - 为具有需要编译的静态 Assets 的项目推荐的 Go 项目结构和构建系统?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33508213/