goxygen:秒速生成一个全栈 Web 项目(Go,Angular/React/Vue)
分分钟生成一个全栈Web项目(Go,Angular/React/Vue)。
Goxygen致力于节省你搭建一个项目的时间。它自动生成一个完全配置好的项目骨架,以方便你可以立即着手实现你的业务逻辑。Goxygen生产后端的Go代码,并将其与前端组件相连,并且为生成的项目提供Dockerfile和docker-compose文件,以便项目在开发环境和生产环境快速运行起来。
支持的底层技术 | |||
1. 前端框架 | Angular | React | Vue |
2. 后端语言 | Go | ||
3. 数据库 | MongoDB | MySQL | PostgreSQL |
项目依赖的库:
你需要安装Go 1.11或者更新的版本。
环境变量 GO111MODULE
要等于 auto
,以支持代码生成逻辑的正常执行。 如果你的golang版本是1.15,则环境变量 GO111MODULE
已经等于auto;如果你的golang版本大于等于1.16,则必须执行命令设置环境变量:
export GO111MODULE=auto
如何使用
go get -u github.com/shpota/goxygen go run github.com/shpota/goxygen init my-app
这会在你的 my-app
目录下生成一个项目。
若未指定数据库和前端库,则它默认使用 React 作为前端语言,默认用 MongoDB 作为数据库。你可以用 --frontend
和 --db
参数具体指定前端库、数据库。例如,以下示例命令将用Vue作为前端语言,使用PostgreSQL作为数据库:
go run github.com/shpota/goxygen init --frontend vue --db postgres my-app
注意:参数 --frontend
支持 angular 或
react
或 vue
。参数 --db
支持输入 mongo
或 mysql
或 postgres
。
这个项目也支持 docker-compose
来运行:
cd my-app
docker-compose up
build完成之后,就可以在 http://localhost:8080 查看你的Web项目了。
你可以在生成的项目里的README里查看更多细节信息。

生成的项目的结构 (基于React/MongoDB的项目)
my-app
├── server # Go项目文件
│ ├── db # MongoDB通信
│ ├── model # 领域对象
│ ├── web # REST APIs, web server
│ ├── server.go # 后端入口
│ └── go.mod # 后端依赖
├── webapp
│ ├── public # icons, static files, 和 index.html
│ ├── src
│ │ ├── App.js # React main组件
│ │ ├── App.css # App组件样式
│ │ ├── index.js # 前端应用入口
│ │ └── index.css # 全局样式
│ ├── package.json # 前端依赖
│ ├── .env.development # 包含开发环境的API endpoint
│ └── .env.production # 包含生产环境的API endpoint
├── Dockerfile # 前后端build Dockerfile
├── docker-compose.yml # 生产环境的docker-compose
├── docker-compose-dev.yml # 开发使用的docker-compose
├── init-db.js # 创建一个 MongoDB collection,并写入测试数据
├── .dockerignore # 指明Docker build的时候要忽略的文件
├── .gitignore
└── README.md # 如何使用生成repo的教程
为了简洁性,诸如单测和样例组件的文件没有显示在这里。
依赖
Goxygen只是为你生成一个项目的基本框架,但不强迫你使用任何特定的工具。它不会为你的项目添加任何不必要的依赖,仅有的依赖只有后端的database driver和前端的axios
如何贡献
如果你发现了bug或者对于如果改进项目有新的想法,请提交一个issue,我们会尽快解决。
你也可以直接Pull Request来提交你的修改。Fork这个项目,作出修改之后,发起一个Pull Request,我们会很快review它。
感谢
Goxygen的logo是由Egon Elbre创作的。