把静态文件嵌入到go程序包

By at • 839次点击
youbbs

statik 允许您将静态文件目录嵌入 Go 二进制文件中,以便以后从 http.FileSystem 提供服务。

这是一个疯狂的主意吗? 不,不一定。 如果要构建具有Web组件的工具,则通常需要提供一些图像,CSS和JavaScript。 您喜欢分发单个二进制文件的便利,因此您不希望将它们部署到其他地方。 如果您的静态文件不是很大,并且会被一些人浏览,则 statik 是您正在寻找的解决方案。

上面是机翻。简单说是把静态文件打包,方便程序内部调用,又不暴露在外面。是在 Google 上班的小姐姐开发的。

使用方法:

//go:generate statik -src=./public -include=*.jpg,*.txt,*.html,*.css,*.js

package main

import (
	"log"
	"net/http"

	_ "github.com/rakyll/statik/example/statik"
	"github.com/rakyll/statik/fs"
)

// Before buildling, run go generate.
// Then, run the main program and visit http://localhost:8080/public/hello.txt
func main() {
	statikFS, err := fs.New()
	if err != nil {
		log.Fatal(err)
	}

	http.Handle("/public/", http.StripPrefix("/public/", http.FileServer(statikFS)))
	http.ListenAndServe(":8080", nil)
}

项目地址 https://github.com/rakyll/statik 14


程序包, 嵌入, 静态, 文件


我用 go generate ,与 github.com/mjibson/esc 结合,直接把 所有的静态资源全都集成进去了~

好处是:部署只需要一个 exe,双击执行,linux 下也只需要 ./xxx 即可

坏处是:改一个字节的前端,需要重新来过~

冒烟的蘑菇 at 2020-05-26 10:36
1

@冒烟的蘑菇 #1 为了好处,这弊端也忍忍

youbbs at 2020-05-26 21:59
2

@youbbs #2 其实我刚开始接触 youbbs 代码,我就想这么改... ... 以为你不喜欢才没碰这里~

冒烟的蘑菇 at 2020-05-28 09:12
3
登录 后发表评论