静态资源与模板加载
静态资源与模板加载
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