跳转至

001 静态文件打包

静态文件打包

以前发布 web 服务的时候程序和资源(html/css/js)是分开的,一个常见的问题就是程序的版本已经更新了,但是资源的版本没有更新。golang 生态让我看到了另一种可能就是直接把资源文件也打包到可执行程序中去,我一直用的 iris 框架;它之前是用 bindata 来打包资源的,后面官方出了一个 embed 的包,我想支持一下官方。


embed 打包 iris 的资源文件

假设资源文件保存在项目的 statics 目录下,用 embed 来打包静态文件也就 3 行左右的代码。

package main

import (
    "embed"
    "net/http"

    "github.com/kataras/iris/v12"
)

//go:embed statics/*
var efs embed.FS

func main() {
    app := iris.New()

    fs := iris.PrefixDir("statics", http.FS(efs))
    app.HandleDir("/", fs)

    app.Listen("127.0.0.1:8080")
}