goweb3系列解析1 :gocmd 说明 https://gitee.com/leijmdas/goweb3.git
·
cmd/goweb3/main.go 主程序说明
一、程序概述
main.go 是 goweb3 命令行工具的入口文件,是一个基于 Go 语言开发的 Web3 后端脚手架工具,提供代码生成、依赖管理、服务启动等一站式开发能力。
二、核心结构
go
func main() {
// 1. 启动性能分析服务
go func() {
http.ListenAndServe("localhost:6060", nil)
}()
// 2. 初始化配置文件(如果不存在)
webfile.FindBeanWebFileService().IniConfigIfNotExist()
// 3. 执行命令菜单
menu.Execute()
}
三、三大核心模块
| 模块 | 作用 | 关键函数 |
|---|---|---|
| pprof | 性能分析服务,监听 localhost:6060 |
http.ListenAndServe() |
| webfile | 配置文件初始化与文件复制服务 | IniConfigIfNotExist() |
| menu | 命令行菜单系统,管理所有子命令 | Execute() |
四、命令菜单体系
通过 menu.go 注册的命令结构如下:
plainText
root
├── all (allcmd) - 所有编码命令
├── code-es/code-db - ES/DB代码生成
├── meta2es/meta2db - 元数据同步
├── list (listcmd) - 显示配置信息、服务信息、文件路径
├── stat (statcmd) - 性能统计
├── godi (godicmd) - 依赖注入
├── cv (checkgvcmd) - 检查版本冲突
├── cc (cccmd) - 检查代码圈复杂度
├── nats (natscmd) - NATS消息服务
├── rpc (gorpccmd) - GoRPC服务
├── gtag (gitcmd) - Git标签版本管理
├── inst (instcmd) - 一键生成工程
└── i (instcmd) - 一键安装子项
五、WebFileService 核心功能
WebFileService 负责模板文件的复制和配置管理:
| 方法 | 功能 |
|---|---|
CopyWeb2Sample() |
复制 Web 示例代码到项目 |
CopyDomain2Sample() |
复制领域层代码 |
CopyData2Sample() |
复制数据访问层代码 |
CopyConfigIfNotExist() |
如果配置不存在则复制 |
ReplaceYmlFactryPkg() |
替换 YML 配置中的包名 |
ChangePkg() |
批量替换 Go 文件中的包路径 |
六、执行流程
plainText
启动程序
↓
启动 pprof 服务 (goroutine)
↓
检查并初始化配置文件
↓
解析命令行参数
↓
执行对应子命令
↓
退出
七、技术要点
- pprof 集成:通过
net/http/pprof包在localhost:6060提供性能分析端点 - 单例模式:
FindBeanWebFileService()使用工厂模式获取单例服务实例 - 命令行框架:基于自定义的
menufactroy实现命令注册和执行 - 配置管理:自动检测并复制模板配置文件,支持包路径替换
八、使用方式
bash
# 查看所有命令
goweb3
# 生成 ES 代码
goweb3 code-es
# 一键初始化工程
goweb3 inst
# 查看配置信息
goweb3 list
goinstall.bat
goweb3 -h
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)