打包前端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. solr研磨之性能调优

    作者:战斗民族就是干  转载请注明地址:http://www.cnblogs.com/prayers/p/8982141.html 本篇文章我们来了解一下solr的性能方面的调优,分为Schema优化 ...

  2. IT轮子系列(六)——Excel上传与解析,一套代码解决所有Excel业务上传,你Get到了吗

    前言 在日常开发当中,excel的上传与解析是很常见的.根据业务不同,解析的数据模型也都不一样.不同的数据模型也就需要不同的校验逻辑,这往往需要写多套的代码进行字段的检验,如必填项,数据格式.为了避免 ...

  3. 移动App开发基本技术面

    1.UI布局 1.1.熟悉系统布局基本机制和使用方法 2.界面效果 2.1.熟悉系统提供的所有界面组件 2.2.熟悉各种功能界面效果的实现途径 2,3.动画等特殊UI效果的实现机制 3.网络请求 3. ...

  4. Python循环依赖问题的解决

    一个是把某个import移到代码中间,使原先的循环依赖圈打开.

  5. OpenCASCADE Texture Mapping

    OpenCASCADE Texture Mapping eryar@163.com Abstract. 纹理贴图技术的出现和流行是图形显示技术的一个非常重要的里程碑,直接影响3D技术从工业进入娱乐领域 ...

  6. PHP session有效期session.gc_maxlifetime详解

    一个已知管用的方法是,使用session_set_save_handler,接管所有的session管理工作,一般是把session信息存储到数据库,这样可以通过SQL语句来删除所有过期的sessio ...

  7. memcached server install(WSL)

    prepare:0) libevent-dev1) libseccomp-dev2) build-essential3) automake install: https://www.liquidweb ...

  8. Flex 将默认日期格式转化成通用格式

    flex 默认日期格式如:Wed Dec 16 00:00:00 GMT+0800 2015 想要得到的通用格式如:2015-12-16 转换方法如下: var sdate:String = &quo ...

  9. flex与js通信、在浏览器中打开新窗口

    一.flex与js通信(通过flex调用js方法) var urlR:URLRequest = new URLRequest("javascript:test('from flex')&qu ...

  10. c# 语法要点速览

    C# 变量类型 sbyte byte short ushort int uint long ulong float double decimal char bool string switch 默认不 ...