简介
eboot 是 ee-go 的启动引导模块,负责应用初始化和启动流程。它解析命令行参数,初始化运行环境(目录、配置、日志、HTTP 服务等),并提供 Ego 结构体作为应用入口对象。New() 函数完成所有初始化工作,Run() 方法启动信号监听以保持程序运行。
导入
go
import "github.com/wallace5303/ee-go/eboot"API
Ego
说明:ee-go 应用实例类型,作为程序入口对象。通过 New() 创建后,调用 Run() 方法启动信号监听。
| 字段 | 类型 | 说明 |
|---|---|---|
| (无公开字段) | — | Ego 是空结构体,所有初始化状态存储在全局模块中 |
New(staticFS)
说明:创建新的 ee-go 应用实例并完成完整的初始化流程。包括:解析命令行参数、设置运行环境变量、初始化目录结构、加载配置、读取 package.json、初始化用户目录、初始化日志系统、创建 HTTP 服务。
参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| staticFS | embed.FS | 是 | 嵌入的静态文件系统,通过 //go:embed 指令将 public/ 目录内容嵌入到二进制文件中 |
返回值:*Ego — 完全初始化的 ee-go 应用实例
示例:
go
package main
import (
"embed"
"github.com/wallace5303/ee-go/eboot"
)
//go:embed public
var staticFS embed.FS
func main() {
ego := eboot.New(staticFS)
ego.Run()
}Run()
说明:启动程序信号监听,阻塞等待系统信号(SIGINT、SIGTERM、SIGQUIT)。收到信号后自动执行优雅退出流程。内部调用 eapp.Run()。
参数:无
返回值:无
示例:
go
ego := eboot.New(staticFS)
ego.Run() // 阻塞运行,直到收到退出信号参见:eapp.Run()
CLI 标志
New() 函数在初始化时解析以下命令行参数:
| 标志 | 类型 | 默认 | 说明 |
|---|---|---|---|
-env | string | "prod" | 运行环境,选项:"dev" 或 "prod" |
-basedir | string | "./" | 应用基础目录路径 |
-port | string | "0" | HTTP 服务端口,"0" 表示使用配置文件中的端口 |
-ssl | string | "false" | 是否启用 HTTPS/WSS,选项:"true" 或 "false" |
-debug | string | "false" | 是否启用调试模式,选项:"true" 或 "false" |
示例:
bash
# 以开发模式启动,指定端口和调试
go run main.go -env=dev -port=8080 -debug=true
# 以生产模式启动,指定基础目录
./app -env=prod -basedir=/opt/myapp -ssl=true初始化流程
New() 执行的初始化顺序(不可变):
- 解析命令行参数,设置
eruntime全局变量 - 设置嵌入的静态文件系统(
estatic.StaticFS) - 初始化目录(
eruntime.InitDir()) - 初始化配置(
econfig.Init()) - 读取 package.json,获取应用名称(
eapp.ReadPackage()) - 初始化用户目录(创建
~/.config/{appName}、~/.{appName}、数据、日志、临时目录) - 初始化核心日志(
elog.InitCoreLog()) - 初始化业务日志(
elog.InitLog()) - 创建 HTTP 服务(当配置中
http.enable为true时)
