打包前端WebSite到Go程序

Coolpy5发布在即,新版本要求服务端程序只是一个运行文件,经历了go的template无数坑后,最后还是放弃了,所以还是要把前端独立开发一个纯前端程序,但是go程序直接build的话并不支持把前端程序编译到最终生成的文件中,所以须要一种方法把前端程序打包进最终生成的运行文件中。

所用到的包 github.com/GeertJohan/go.rice

下载或编译后会得到一个rice.exe(window平台),linux平台请自行下载包并编译。

配置go env 把go 环境变量都配置好,本例中文件工程路径为:E:\Coolpy5Sub\Coolpy5Sub\bin

E:\Coolpy5Sub\Coolpy5Sub\bin>go
env 

set GOARCH=amd64 

set GOBIN= 

set GOEXE=.exe 

set GOHOSTARCH=amd64 

set GOHOSTOS=windows 

set GOOS=windows 

set GOPATH=E:\Coolpy5Sub\Coolpy5Sub\bin 

set GORACE= 

set GOROOT=C:\Go 

set GOTOOLDIR=C:\Go\pkg\tool\windows_amd64 

set GO15VENDOREXPERIMENT=1 

set CC=gcc 

set GOGCCFLAGS=-m64 -mthreads -fmessage-length=0 

set CXX=g++ 

set CGO_ENABLED=1

如须配置在 win平台下可以用set GOPATH=XXXXX 配置go环境参数

文件例表:

src下是go src目录,包括了自己编写的所有自定义包和第三方包,main.go是程序入口点,www文件夹是整个前端程序.

在main.go中引用rice包并把www文件夹以文件服务形式host一个服务:

code:

Import
"github.com/GeertJohan/go.rice"

http.Handle("/",
http.StripPrefix("/", http.FileServer(rice.MustFindBox("www").HTTPBox())))

http.ListenAndServe(":8000", nil)

以上代码需要注意www所指向的文件夹名会直接被转义为相对路径,http.Handle("/",
即说明通过请求http://127.0.0.1:8000 即可访问,如果外网请转用外网相对地址。

前期准备已完成:

1.cmd 进行工程目前 并执行 rice embed-go 指令,注意rice.exe必须也在同一目录下

执行完后会在当前目录产生一个rice-box.go文件,这是一个很重要的文件,它是自动成生了一个go文件,把www文件夹下的所有文件都配置为静态资源,因此当我们再这里执行build指令时,这个rice-box.go直接被编译到最终生成的文件中。

接下来执行 go build main.go 指令

执行后就是最终的运行程序了

main.exe即是最终编译成的运行文件,此文件已经是一个独立文件,而且把前端程序也打包进去了。

开源跨平台高性能物联网平台酷痞物联:http://icoolpy.com

打包前端WebSite到Go程序的更多相关文章

  1. 【grunt第二弹】30分钟学会使用grunt打包前端代码(02)

    前言 上一篇博客,我们简单的介绍了grunt的使用,一些基础点没能覆盖,我们今天有必要看看一些基础知识 [grunt第一弹]30分钟学会使用grunt打包前端代码 配置任务/grunt.initCon ...

  2. npm打包前端项目太慢问题分析以及暂时解决方案

    npm build 打包前端项目实际上是执行 node build/build.js,但是随着项目的依赖包越来越多,项目打包时间不断延长,为了改善这个问题,需要从node入手 暂时解决方案:扩大nod ...

  3. (转)使用 Advanced Installer 打包 一键安装Web应用程序

      使用 Advanced Installer 打包 一键安装Web应用程序         安装预览: 资源下载: 示例安装包 操作流程: 1.新建Asp.net Application. 2.设置 ...

  4. 使用 Advanced Installer 打包 一键安装Web应用程序

    原文:使用 Advanced Installer 打包 一键安装Web应用程序 安装预览: 资源下载: 示例安装包 操作流程: 1.新建Asp.net Application. 2.设置应用程序名称和 ...

  5. Java程序导出成.jar文件、生成.exe可执行文件及打包成可执行安装程序(可在无Java环境的计算机上运行)--以个人所得税计算器为例

    Java程序导出成.jar文件.生成.exe可执行文件及打包成可执行安装程序 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 需要准备的软件: jdk, ...

  6. Linux安装npm并打包前端代码

    查看node版本$ node -v查看npm版本$ npm -v如果没有安装node及npm,需要先安装node及npm#yum install node# yum install npm安装cnpm ...

  7. 【最详细最完整】在Linux 下如何打包免安装的QT程序?

    在Linux 下如何打包免安装的QT程序? 版权声明:嵌入式linux相关的文章是我的学习笔记,基于Exynos 4412开发板,一部分内容是总结,一部分是查资料所得,大家可以自由转载,但请注明出处! ...

  8. sbt打包Scala写的Spark程序,打包正常,提交运行时提示找不到对应的类

    sbt打包Scala写的Spark程序,打包正常,提交运行时提示找不到对应的类 详述 使用sbt对写的Spark程序打包,过程中没有问题 spark-submit提交jar包运行提示找不到对应的类 解 ...

  9. 使用命令行编译打包运行自己的MapReduce程序 Hadoop2.6.0

    使用命令行编译打包运行自己的MapReduce程序 Hadoop2.6.0 网上的 MapReduce WordCount 教程对于如何编译 WordCount.java 几乎是一笔带过… 而有写到的 ...

随机推荐

  1. AngularJS中service,factory,provider的区别

    一.service引导 刚开始学习Angular的时候,经常被误解和被初学者问到的组件是 service(), factory(), 和 provide()这几个方法之间的差别.This is whe ...

  2. 深入浅出JWT(JSON Web Token )

    1. JWT 介绍 JSON Web Token(JWT)是一个开放式标准(RFC 7519),它定义了一种紧凑且自包含的方式,用于在各方之间以JSON对象安全传输信息. 这些信息可以通过数字签名进行 ...

  3. oracle 导入/导出遇到的 问题总结

    0925: 解决oracle 11g空数据 exp 少表的问题 1:生成处理语句 Select 'alter table '||table_name||' allocate extent;' from ...

  4. Nuget发布教程

    nuget setApiKey Your-API-Key -Source https://www.nuget.org/api/v2/package nuget spec nuget pack Monk ...

  5. 《Servlet与JSP核心编程》读书笔记

    这本书实际是我进入JavaWeb开发的入门书籍,而且是日常碰到一些技术问题需要确认时的参考书,前一段时间在解决一个他人的问题时,我突然发现我的第一遍阅读对这本书的内容的理解还不够透彻,所以又开始N多年 ...

  6. 基于one2team框架的Highcharts图表图片导出方案

    这篇文章已经没有什么意义了,新版的HIghcharts提供Java图片导出解决方案,你需要做的就是下个Maven,bulid一个war就Ok了.---addedy on 2012-11-15 多说一句 ...

  7. java中Collections.sort()方法实现集合排序

    1.Integer/String泛型的List进行排序 List <Integer> integerlist = new ArrayList<Integer>();   //定 ...

  8. css中的行高line-height

    “行高”顾名思意指一行文字的高度.具体来说是指两行文字间基线之间的距离.基线实在英文字母中用到的一个概念,我们刚学英语的时使用的那个英语本子每行有四条线,其中底部第二条线就是基线,是a,c,z,x等字 ...

  9. UE4中如何使物体始终朝向摄像头?

    要使物体始终正面朝向摄像头需要用到一个关键节点:Find Look at Rotation 其中Start连接需要旋转的物体位置矢量,Target连接摄像头位置矢量 最后设置SetActorRotat ...

  10. RabbitMQ Linux(Redhat6.5)安装(二 )

    一.安装erlang 由于RabbitMq的linux运行环境需要erlang环境,所以需要先安装erlang: 1.erlang下载: http://erlang.org/download/(我下载 ...