2015-11-03 84 views
1

我正在为一个Web应用程序在Go中创建一个服务器。该应用程序由Go代码组成,这些代码将用作应用程序的http服务器和websocket服务器。它还将包含Go代码提供的静态资产,例如html/css/javascript/images/etc。我打算使用go-bindata或等同物打包最终的静态资产。所需的部署形式是一个包含所有静态资产的二进制可执行文件。推荐使用需要编译的静态资产来为项目构建项目结构和构建系统?

但是,JavaScript资产将以这样一种方式构建和组织,即在将它们打包到Go之前需要编译步骤包含在编译后的二进制文件中。这将通过npm脚本/ webpack/gulp /等同来完成。

我已经阅读了有关recommended project structure的官方Go文档,但似乎没有解决我的使用案例。

我不知道前端代码和后端代码是否应该存在于同一个git仓库或单独的仓库中。我不知道构建过程应该如何处理运行javascript编译过程,go-bindata过程和过程。有没有推荐的方式来管理这种类型的项目或者类似的成功项目的一些例子?

回答

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(我运行打字稿编译器),那么可以在嵌入资源之前运行这些任务。

所有这一切都被有线高达go generate与评论:

//go:generate sass or tsc or grunt or whatever 
//go:generate esc -o static.go static 
+0

你不会碰巧有个仓库方便演示了这一点,你会吗? – DynamiteReed

+2

一个非常简单的例子:https://github.com/bosun-monitor/bosun/tree/master/cmd/snmpTester。该回购协议中的树是cmd/bosun包,它比较复杂。 – captncraig