打包前端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. python结巴(jieba)分词

    python结巴(jieba)分词 一.特点 1.支持三种分词模式: (1)精确模式:试图将句子最精确的切开,适合文本分析. (2)全模式:把句子中所有可以成词的词语都扫描出来,速度非常快,但是不能解 ...

  2. Python爬虫 - 爬取百度html代码前200行

    Python爬虫 - 爬取百度html代码前200行 - 改进版,  增加了对字符串的.strip()处理 源代码如下: # 改进版, 增加了 .strip()方法的使用 # coding=utf-8 ...

  3. ACCA AI来袭会议笔记

    ACCA AI来袭会议笔记 Technology in Accounting 调研报告: http://cn.accaglobal.com/news/professional_report.html ...

  4. 竞品调研时发现的Android新设计特性

    先share两篇技术层面的文章: Android M新控件之FloatingActionButton,TextInputLayout,Snackbar,TabLayout的使用:http://blog ...

  5. Ubuntu本地uwsgi配Django问题的解决

    版本Ubuntu14.04,Django1.6.5 ubuntu本地Uwsgi调Django可能会报错: -- unavailable modifier requested: 0 -- 解决方法:先安 ...

  6. (linux虚拟机)克隆得到的虚拟机修改网卡信息和IP地址,以及DNS

    克隆得到的虚拟机,与原先的系统是一模一样的包括MAC地址和IP地址.需要修改成信息. 克隆完事之后,首先在 点击生成一个新的MAC地址.然后启动,登陆. vim /etc/udev/rules.d/7 ...

  7. PHP内核之旅-2.SAPI中的Cli

    PHP 内核之旅系列 PHP内核之旅-1.生命周期 PHP内核之旅-2.SAPI中的Cli 一.SAPI是什么? 1.1 理解SAPI (1)SAPI是PHP框架的接口层.有很多种服务器的SAPI的实 ...

  8. 当配置 DispatcherServlet拦截“/”,SpringMVC访问静态资源的三种方式

    如何你的DispatcherServlet拦截 *.do这样的URL,就不存在访问不到静态资源的问题.如果你的DispatcherServlet拦截“/”,拦截了所有的请求,同时对*.js,*.jpg ...

  9. Java构造器:级联调用,调用兄弟构造器

    级联调用: class Father{ Father(){ System.out.println("Father birth"); } public void announce() ...

  10. 杨老师课堂_Java核心技术下之控制台模拟微博用户注册案例

    案例设计背景介绍: 编写一个新浪微博用户注册的程序,要求使用HashSet集合实现.  假设当用户输入用户名.密码.确认密码.生日(输入格式yyyy-mm-dd为正确).手机号码(手机长度为11位,并 ...