console

package
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 20, 2026 License: AGPL-3.0 Imports: 9 Imported by: 0

Documentation

Overview

Package console 把 Vite 构建出的 Console SPA 嵌入二进制并提供静态资源服务。

dist 目录由 `task console:build` 生成(见 Taskfile.yml),不入库。 仓库只保留 dist/.gitkeep 占位,保证未构建前端时后端依然可以编译。

本包的 Handler 期望被挂载在 MountPath 下,调用方需自行 StripPrefix。

Index

Constants

View Source
const MountPath = "/console/"

MountPath 是 Console 的挂载前缀,必须与 console/vite.config.ts 的 base 一致。

View Source
const NavPath = "/navigation"

NavPath 是菜单接口的路径,挂在 Console 平面之下。

Variables

This section is empty.

Functions

func Assets

func Assets() (fs.FS, error)

Assets 返回以 dist 为根的文件系统。

func Built

func Built() bool

Built 报告 Console 前端产物是否已嵌入(即 dist/index.html 是否存在)。 未构建时后端仍可启动,只是 Console 路由返回提示页。

func Handler

func Handler() http.Handler

Handler 返回 Console SPA 的静态资源处理器(已含 MountPath 前缀剥离)。

行为:命中真实文件则直接返回;未命中且请求不带扩展名时回退到 index.html, 以支持前端的 history 路由。前端未构建时统一返回 501 提示。

Types

type NavGroupView struct {
	Name  string `json:"name" doc:"分组标识"`
	Label string `json:"label" doc:"分组显示名"`
	Order int    `json:"order"`
}

NavGroupView 是菜单分组的接口视图。

type NavHandler struct {
	// contains filtered or unexported fields
}

NavHandler 提供 Console 的菜单。

菜单为什么由服务端给而不是前端写死:插件的页面要出现在侧边栏里, 而前端不可能事先知道有哪些插件。清单一旦写死在前端, 它就必须与后端的模块构成保持同步,而那种同步只能靠人记着。

**权限在这里不过滤**:本接口对所有已登录用户开放,携带每一项所需的权限串, 由前端决定显示与否。理由是菜单的过滤规则与前端已有的 can() 必须是同一套—— 服务端过滤一遍、前端再判一遍,两套规则迟早分叉。 菜单不是安全边界,真正的拦截在各页面的服务端接口上。

func NewNavHandler

func NewNavHandler(navigation func() app.Navigation) *NavHandler

NewNavHandler 构造菜单处理器。

接受一个取菜单的函数而不是一份清单:设置分组的登记要等模块 Start, 而设置页的入口是从那份分组列表推导出来的。构造时取一次会漏掉它们。

func (h *NavHandler) Register(console huma.API)

Register 挂载菜单接口。

type NavItemView struct {
	Key         string `json:"key" doc:"菜单项的稳定标识"`
	Label       string `json:"label"`
	Path        string `json:"path" doc:"Console 内的绝对路径"`
	Icon        string `json:"icon" doc:"图标名,取值来自前端的图标登记表"`
	Group       string `json:"group" doc:"所属分组的标识"`
	Order       int    `json:"order"`
	Permission  string `json:"permission" doc:"显示所需的权限串;空串表示所有已登录用户可见"`
	Keywords    string `json:"keywords" doc:"命令面板的检索关键词"`
	Description string `json:"description,omitempty"`
	End         bool   `json:"end" doc:"是否只在路径完全相等时高亮"`
	Hidden      bool   `json:"hidden" doc:"是否不进侧边栏(仍然参与命令面板与标题映射)"`
}

NavItemView 是菜单项的接口视图。

type NavView struct {
	Groups []NavGroupView `json:"groups"`
	Items  []NavItemView  `json:"items"`
}

NavView 是菜单接口的响应体。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL