静态资源与模板加载

静态资源与模板加载

MLiev IAM 将前端资源内嵌到 Go 二进制文件中,实现单文件部署。

前端应用

项目包含三个前端应用,均位于 admin-web/ 目录:

应用 源码目录 输出目录 访问路径 说明
web-antd admin-web/apps/web-antd static/admin/ /admin 管理后台
web-oidc admin-web/apps/web-oidc static/auth/ /auth OIDC 登录/注册页面
web-install admin-web/apps/web-install static/install/ /install 安装向导

内嵌机制

Go 的 embed.FS 在编译时将 static/templates/ 目录的内容嵌入到二进制文件中:

//go:embed static/**
var staticFs embed.FS

//go:embed templates/**
var templateFS embed.FS

这意味着生成的可执行文件包含所有前端资源,无需额外的静态文件目录。

双模式加载

模式 静态资源来源 适用场景
release 内嵌 FS(embed.FS) 生产部署
debug 磁盘文件(./static/ 目录) 前端开发(支持热更新)

debug 模式下,修改 static/ 目录中的文件会立即生效,无需重新编译。

构建前端

# 安装前端依赖
make install-frontend

# 构建核心包(前端应用的依赖,必须先构建)
make build-packages

# 构建所有前端应用
make build-frontend

# 或单独构建某个应用
make build-oidc    # 构建 OIDC 登录页
make build-antd    # 构建管理后台

# 开发模式(前端 watch + 后端 debug)
make dev

构建顺序@vben-core 核心包必须先于前端应用构建。make build-frontend 会自动处理依赖顺序。

完整构建

# 构建前端 + 后端(推荐)
make all

# 生成的二进制文件包含所有前端资源
./mliev-iam