golang

beego整合go-bindata

最近蚊子在学习beego,beego是一个开源的golang web开发框架。具体beego相关文档,请移步官方网站。网站开发完成,自然就需要涉及到打包发布的过程。但在看了beego的打包发布后发现,beego并没有将静态文件编译到生成的二进制文件中。对于大型的网站来说,静态文件和二进制分离固然好,可以引用nginx, 单独服务静态文件同时反向代理go动态内容。可对于只有一页的工具类页面,总觉得怪怪的,

以下内容引用自beego文档

发行部署

Go 语言的应用最后编译之后是一个二进制文件,你只需要 copy 这个应用到服务器上,运行起来就行。beego 由于带有几个静态文件、配置文件、模板文件三个目录,所以用户部署的时候需要同时 copy 这三个目录到相应的部署应用之下

beego自身还有个一个工具叫“bee“

bee 工具是一个为了协助快速开发 beego 项目而创建的项目,通过 bee 您可以很容易的进行 beego 项目的创建、热编译、开发、测试、和部署。

其中bee工具有个命令是bale

bale 命令

这个命令目前仅限内部使用,具体实现方案未完善,主要用来压缩所有的静态文件变成一个变量申明文件,全部编译到二进制文件里面,用户发布的时候携带静态文件,包括 js、css、img 和 views。最后在启动运行时进行非覆盖式的自解压。

经过google搜索,查到了go-bindata, git地址是: https://github.com/jteeuwen/go-bindata,作用和bale命令类似,也是把非go的文件打包到go文件中,从而可以整合到go项目中去使用。
下面就写一下如何将go-bindata应用到beego中去。
首先是调整router.go, 修改”/”,同时加入”/static/*”的路由解析

接下来修改MainController,即default.go文件 加入GetHome和GetAsset两个方法

这里蚊子引用了一个函数assetContentType,用来获取静态文件的Content-Type,该函数蚊子放置在了一个新的go文件中

在controllers目录下创建helper.go文件,内容如下

到此,整合工作就完成了,接下来,我们就可以编译二进制文件了

首先安装go-bindata包

然后编译静态文件,以下命令都是在App目录即项目目录中完成

接下来编译项目可执行文件

然后就可以把创建的App文件移到其他目录并运行起来,然后在浏览器中访问,看看是不是所有css和js都可以加载了。

目前蚊子我也还处在golang初学阶段,如有不准确的地方,还望各位大佬指正。

 

Related Post

Leave a Reply

Your email address will not be published. Required fields are marked *