Go 之 Windows下 Beego 项目的搭建
一、GO 环境配置
从 Go 1.11 开始,Go 引入了模块(Modules)的概念,允许你在任何位置创建和管理 Go 项目,而不需要将它们放在 $GOPATH/src 下。Go Modules 使用 go.mod 文件来管理依赖项和版本信息。
- 查看GOPATH位置
D:\project_go\demo_beego>echo %GOPATH%
D:\project_go
- 区分下载安装指令
go get:主要用于下载和管理依赖库,并不会生成可执行文件。
go install:用于编译并安装可执行文件到 $GOPATH/bin 目录中。
注意编译并安装可执行文件在 %GOPATH%/bin, 下载的第三方依赖库会在 %GOPATH%/pkg
二、bee 的操作
- 可以在任意位置创建一个demo_beego文件夹,然后在文件夹内部执行 go mod init demo_beego 生成一个go.mod 文件
- 在 demo_beego 文件夹下通过 go install 安装 bee 工具
D:\project_go\demo_beego>go install github.com/beego/bee/v2@latest
go: downloading github.com/beego/bee/v2 v2.3.0
go: downloading gopkg.in/yaml.v2 v2.4.0
go: downloading github.com/go-delve/delve v1.20.2
...
go: downloading github.com/cilium/ebpf v0.7.0
go: downloading golang.org/x/net v0.23.0
go: downloading golang.org/x/mod v0.8.0
go: downloading github.com/rivo/uniseg v0.2.0
- 安装成功后查看 bee 指令,若查找不到则把 %GOPATH%/bin 设置到系统变量中
bee api 命令用于创建一个基于 Beego 框架的 API 应用程序。这种应用程序通常专注于提供 RESTful API 服务,适合构建后端服务
bee new 命令用于创建一个完整的 Beego 应用程序。这种应用程序不仅包括 API 功能,还可能包含视图(HTML 页面)、静态资源等,适合构建全栈 Web 应用
D:\project_go\demo_beego>bee
2025/02/19 14:44:17.084 [D] init global config instance failed. If you do not use this, just ignore it. open conf/app.conf: The system cannot find the path specified.
2025/02/19 14:44:17 INFO ▶ 0001 Getting bee latest version...
2025/02/19 14:44:17 INFO ▶ 0002 Your bee are up to date
Bee is a Fast and Flexible tool for managing your Beego Web Application.
You are using bee for beego v2.x. If you are working on beego v1.x, please downgrade version to bee v1.12.0
USAGE
bee command [arguments]
AVAILABLE COMMANDS
dev Commands which used to help to develop beego and bee
update Update Bee
version Prints the current Bee version
bale Transforms non-Go files to Go source files
fix Fixes your application by making it compatible with newer versions of Beego
dockerize Generates a Dockerfile and docker-compose.yaml for your Beego application
migrate Runs database migrations
new Creates a Beego application
pack Compresses a Beego application into a single file
rs Run customized scripts
server serving static content over HTTP on port
run Run the application by starting a local development server
pro Source code generator
api Creates a Beego API application
generate Source code generator
hprose Creates an RPC application based on Hprose and Beego frameworks
dlv Start a debugging session using Delve
Use bee help [command] for more information about a command.
- 通过 bee new 创建项目
D:\project_go\demo_beego>bee new gotest1
2025/02/19 14:45:27.270 [D] init global config instance failed. If you do not use this, just ignore it. open conf/app.conf: The system cannot find the path specified.
2025/02/19 14:45:27 INFO ▶ 0001 Generate new project support go modules.
2025/02/19 14:45:27 INFO ▶ 0002 Creating application...
create D:\project_go\demo_beego\gotest1\go.mod
create D:\project_go\demo_beego\gotest1\
create D:\project_go\demo_beego\gotest1\conf\
create D:\project_go\demo_beego\gotest1\controllers\
create D:\project_go\demo_beego\gotest1\models\
create D:\project_go\demo_beego\gotest1\routers\
create D:\project_go\demo_beego\gotest1\tests\
create D:\project_go\demo_beego\gotest1\static\
create D:\project_go\demo_beego\gotest1\static\js\
create D:\project_go\demo_beego\gotest1\static\css\
create D:\project_go\demo_beego\gotest1\static\img\
create D:\project_go\demo_beego\gotest1\views\
create D:\project_go\demo_beego\gotest1\conf\app.conf
create D:\project_go\demo_beego\gotest1\controllers\default.go
create D:\project_go\demo_beego\gotest1\views\index.tpl
create D:\project_go\demo_beego\gotest1\routers\router.go
create D:\project_go\demo_beego\gotest1\tests\default_test.go
create D:\project_go\demo_beego\gotest1\main.go
2025/02/19 14:45:27 SUCCESS ▶ 0003 New application successfully created!
- 看到 new application successfully created 表示工程创建成功,打开工程可以看到整个工程的目录文件夹结构如下
myproject
├── conf
│ └── app.conf
├── controllers
│ └── default.go
├── main.go
├── models
├── routers
│ └── router.go
├── static
│ ├── css
│ ├── img
│ └── js
├── tests
│ └── default_test.go
└── views
└── index.tpl
- 如果这时候直接执行 bee run 运行项目,可能会碰到依赖项不存在的问题,如下:
(base) PS D:\project_go\demo_beego\gotest1> bee run
______
| ___ \
| |_/ / ___ ___
| ___ \ / _ \ / _ \
| |_/ /| __/| __/
\____/ \___| \___| v2.3.0
2025/02/19 15:33:00 WARN ▶ 0001 Running application outside of GOPATH
2025/02/19 15:33:00 INFO ▶ 0002 Using 'gotest1' as 'appname'
2025/02/19 15:33:00 INFO ▶ 0003 Initializing watcher...
main.go:5:2: missing go.sum entry for module providing package github.com/beego/beego/v2/server/web (imported by gotest1); to add:
go get gotest1
2025/02/19 15:33:00 ERROR ▶ 0004 Failed to build the application: main.go:5:2: missing go.sum entry for module providing package github.com/beego/beego/v2/server/web (imported by gotest1); to add:
go get gotest1
- 这时就要执行命令 go mod tidy ,解决依赖问题
go mod tidy 用于管理 Go Modules 项目的依赖关系,确保所有需要的依赖都被正确添加,未使用的依赖被移除,并且 go.mod 和 go.sum 文件保持最新。
- 等依赖下载完成后,再次执行 bee run 或者 go run main.go,成功的话打开网页http://:8080 即可看到如下内容
(base) PS D:\project_go\demo_beego\gotest1> bee run
______
| ___ \
| |_/ / ___ ___
| ___ \ / _ \ / _ \
| |_/ /| __/| __/
\____/ \___| \___| v2.3.0
2025/02/19 15:37:52 WARN ▶ 0001 Running application outside of GOPATH
2025/02/19 15:37:52 INFO ▶ 0002 Using 'gotest1' as 'appname'
2025/02/19 15:37:52 INFO ▶ 0003 Initializing watcher...
google.golang.org/protobuf/internal/flags
......
2025/02/19 15:38:05 SUCCESS ▶ 0004 Built Successfully!
2025/02/19 15:38:05 INFO ▶ 0005 Restarting 'gotest1.exe'...
2025/02/19 15:38:05 SUCCESS ▶ 0006 './gotest1.exe' is running...
2025/02/19 15:38:06.696 [I] [server.go:281] http server Running on http://:8080
三、bee run 与 go run 的区别
特性 | go run | bee run |
适用范围 | 适用于任何 Go 项目 | 专门用于 Beego 项目 |
编译方式 | 每次运行时临时编译 | 编译并监视文件变化,支持热重载 |
自动重启 | 不支持 | 支持 |
文件监视 | 不支持 | 支持(Go 文件、模板文件、配置文件等) |
开发效率 | 较低(需要手动重启) | 高(自动重启和热重载) |
命令用途 | 快速测试和调试单个或少量 Go 文件 | 开发和调试 Beego 应用程序 |