官方网站
http://hade.funaio.cn/
框架特色:
基于协议
服务与服务间的协议是基于协议进行交互的。
前后端协同
前后端协同开发
命令行
有充分的命令行工具
集成定时服务
如果你需要启动定时服务,提供命令进行定时服务的启动
文档丰富
提供丰富的文档说明,提供丰富的文档说明
开发模式
在开发模式下进行前后端开发,极大提高了开发效率和开发体验
功能测试
lesson-16: 配置服务
运行单元测试:
- framework/provider/config/provider_test.go
- framework/provider/config/service_test.go
go build .
./webgo app start
curl http://localhost:8888/demo/demo
# 手动修改 database.mysql.password 的值观察是否热修改
./webgo config get "database.mysql"
lesson-17: 日志服务
运行单元测试:
- framework/provider/id/provier_test.go
go build .
./webgo app start
curl http://localhost:8888/demo/demo
# 检查日志文件
cat storage/log/coredemo.log.202*-*-*-*-*
lesson-18: 集成前端 Vue
集成 vue 开发前端页面,实现前后端一体化开发功能,支持中小型业务需求,加快开发效率
cd webgo-vue
# 16及以上版本
node -v
npm create vue@latest
npx: installed 1 in 1.204s
Vue.js - The Progressive JavaScript Framework
# 这里用了 ts 可以重新修改 vue 配置再覆盖前端部分 code
✔ Project name: … webgo-vue
✔ Add TypeScript? … No / Yes
✔ Add JSX Support? … No / Yes
✔ Add Vue Router for Single Page Application development? … No / Yes
✔ Add Pinia for state management? … No / Yes
✔ Add Vitest for Unit Testing? … No / Yes
✔ Add an End-to-End Testing Solution? › Nightwatch
✔ Add ESLint for code quality? … No / Yes
✔ Add Prettier for code formatting? … No / Yes
cd webgo-vue
# copy 所有文件 除了 node_modules 到 webgo 目录下
cd webgo
npm install
npm run format
npm run dev
go build .
# 同时编译前后端
./webgo build all
lesson-19:20: 实时 dev调试模式 + 反向代理
在 devConfig中设置调试监听端口,注意问题
- 在webgo dev all 命令中启动前端时,要注意互相端口,host 之间能否访问成功
- 只配置了本地测试功能
go build .
# 如果代码里找不到 webgo 命令,要把 webgo 命令配进 path
export PATH="$PATH:$CODE_PATH/webgo"
./webgo dev all
# 改变 前后端code,检查是否实时热更新请求
curl http://127.0.0.1:8070/
curl http://127.0.0.1:8070/demo/demo
lesson-21: 实现自动化命令
开发实现自动化命令,避免重复劳动
- 自动生成模版服务: provider
- 自动生成业务模版命令: command
- 自动生成或迁移gin的中间件: middleware
go build .
# 文件夹已生成
mkdir app/http/middleware
mkdir app/console/command
mkdir app/.provider2
# 执行命令测试相应的模版代码是否生成
./webgo middleware migrate
# git@github.com:gin-contrib/cors.git
> cors
./webgo command new
./webgo .provider2 new
lesson-22: 实现自动生成项目脚手架
go build .
# 文件夹已生成
go build .
➜ webgo git:(main) ✗ ./webgo new
? 请输入目录名称: hade_web
? 请输入模块名称(go.mod中的module, 默认为文件夹名称): github.com/hade_web
? 请输入版本名称(参考 https://github.com/gohade/hade/releases,默认为最新版本):
====================================================
开始进行创建应用操作
创建目录: /Users/***/go/src/webgo/hade_web
应用名称: github.com/hade_web
hade框架版本: v1.0.9
创建临时目录 /Users/***/go/src/webgo/template-hade-v1.0.9-1693286683
下载zip包到template.zip
解压zip包
删除临时文件夹 /Users/***/go/src/webgo/template-hade-v1.0.9-1693286683
删除.git目录
删除framework目录
更新文件:/Users/***/go/src/webgo/hade_web/app/grpc/kernel.go
更新文件:/Users/***/go/src/webgo/hade_web/app/grpc/service/helloworld/service.go
更新文件:/Users/***/go/src/webgo/hade_web/app/http/module/demo/api.go
更新文件:/Users/***/go/src/webgo/hade_web/app/http/module/demo/mapper.go
更新文件:/Users/***/go/src/webgo/hade_web/app/http/route.go
更新文件:/Users/***/go/src/webgo/hade_web/app/http/swagger.go
更新文件:/Users/***/go/src/webgo/hade_web/docs/.guide1/app.md
更新文件:/Users/***/go/src/webgo/hade_web/docs/.guide1/grpc.md
更新文件:/Users/***/go/src/webgo/hade_web/go.mod
更新文件:/Users/***/go/src/webgo/hade_web/main.go
创建应用结束
目录: /Users/***/go/src/webgo/hade_web
lesson-23: 自动生成 swagger 文件和swagger-ui 服务
通过注释生成 swagger.json 文件
- 如果无法通过err := gen.New().Build(conf)生成对应的 swagger 文件,注意检查安装的包依赖
- 迁移gin-swagger时注意 gin 已经是本地修改过的 gin
需要设置模块swaggerFiles: 为本地的模块 github.com/dll02/webgo/framework/middleware/gin-swagger/swaggerFiles
# 生成 swagger
go build .
./webgo swagger gen
# 运行 swagger
./webgo app start
curl http://localhost:8888/swagger/index.html
lesson-24: app 命令完善[start stop restart state]
注意代码包依赖平台,window 和M1 跑不起来,需要环境支持
go build .
./webgo app start --daemon=true
curl http://localhost:8888/swagger/index.html
lesson-25: 集成orm 包 gorm
支持本地调试时,注释了 gsft 包
go build .
./webgo app start
curl http://localhost:8888/demo/orm
lesson-27: 增加缓存协议服务
支持内存缓存和 redis 缓存服务
docker run -d -p 6379:6379 --name redis_container redis
go build .
./webgo app start
curl http://localhost:8888/demo/cache/redis
lesson-28: 通过 ssh和 ftp 实现部署到远端的功能
小型快速部署的情况下推荐使用,正式环境使用 docker k8s部署
go build .
./webgo deploy frontend
./webgo deploy backend
./webgo deploy all
./webgo deploy rollback 20211110233354 backend
curl http://localhost:8888/swagger/index.html
lesson-29: 通过 vuepress.v2 集成技术文档功能
因为之前集成的前端开发 vue3,不兼容vuepress.v1
# 配置环境
npm install -D vuepress@next
#添加运行命令
"docs:dev": "vuepress dev docs",
"docs:build": "vuepress build docs",
# 启动 vuepress
npm run docs:build
npm run docs:dev