Skip to content

简介

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 服务。

参数

参数类型必填说明
staticFSembed.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() 函数在初始化时解析以下命令行参数:

标志类型默认说明
-envstring"prod"运行环境,选项:"dev""prod"
-basedirstring"./"应用基础目录路径
-portstring"0"HTTP 服务端口,"0" 表示使用配置文件中的端口
-sslstring"false"是否启用 HTTPS/WSS,选项:"true""false"
-debugstring"false"是否启用调试模式,选项:"true""false"

示例

bash
# 以开发模式启动,指定端口和调试
go run main.go -env=dev -port=8080 -debug=true

# 以生产模式启动,指定基础目录
./app -env=prod -basedir=/opt/myapp -ssl=true

初始化流程

New() 执行的初始化顺序(不可变):

  1. 解析命令行参数,设置 eruntime 全局变量
  2. 设置嵌入的静态文件系统(estatic.StaticFS
  3. 初始化目录(eruntime.InitDir()
  4. 初始化配置(econfig.Init()
  5. 读取 package.json,获取应用名称(eapp.ReadPackage()
  6. 初始化用户目录(创建 ~/.config/{appName}~/.{appName}、数据、日志、临时目录)
  7. 初始化核心日志(elog.InitCoreLog()
  8. 初始化业务日志(elog.InitLog()
  9. 创建 HTTP 服务(当配置中 http.enabletrue 时)