1
zicla 2019-01-16 11:19:54 +08:00 3
我来说说我开源的云盘 https://github.com/eyebluecn/tank 吧,采用前后端分离,后端使用 golang 编写,项目结构基本上遵循官方建议的结构:
``` golang #环境变量 GOPATH 所在路径 ├── bin #编译生成的可执行文件目录 ├── pkg #编译生成第三方库 ├── src #golang 工程源代码 │ ├── github.com #来自 github 的第三方库 │ ├── golang.org #来自 golang.org 的第三方库 │ ├── tank #clone 下来的 tank 根目录 │ │ ├── build #用来辅助打包的文件夹 │ │ │ ├── conf #默认的配置文件 │ │ │ ├── doc #文档 │ │ │ ├── html #前端静态资源,从项目 tank-front 编译获得 │ │ │ ├── pack #打包的脚本 │ │ │ ├── service #将 tank 当作服务启动的脚本 │ │ ├── dist #运行打包脚本后获得的安装包目录 │ │ ├── rest #golang 源代码目录 │ │ │ ├── ... #golang 源代码 不同文件用前缀区分 │ │ ├── .gitignore #gitignore 文件 │ │ ├── CHNAGELOG #版本变化日志 │ │ ├── DOCKERFILE #构建 Docker 的文件 │ │ ├── LICENSE #证书说明文件 │ │ ├── main.go #程序入口文件 │ │ ├── README.md #README 文件 ``` |
2
mosliu 2019-01-16 11:28:23 +08:00 1
|
3
mosliu 2019-01-16 11:28:49 +08:00
gopath 加上这个项目就好 现在觉得 go mod 挺好用
|
5
jlkm2010 2019-01-16 11:29:32 +08:00
使用 go mod
|
6
scukmh 2019-01-16 12:13:32 +08:00
go mod~\(≧▽≦)/~万岁
|
7
fyibmsd 2019-01-16 12:20:56 +08:00 2
|
8
zhujinliang 2019-01-16 12:22:08 +08:00 via iPhone
目前还没能接受 go mod 等模式,只习惯 gopath,每个项目单独 gopath
|
9
davex 2019-01-16 12:24:27 +08:00 2
https://zhuanlan.zhihu.com/p/48039838 最近入坑 Golang,参照了一下知乎的技术栈升级的文章,大部分还是蛮有用的
|
10
tomoya92 2019-01-16 12:29:07 +08:00 via iPhone 1
我就在根目录下开发的 https://github.com/tomoya92/pybbs-go
|
11
gamexg 2019-01-16 12:47:02 +08:00 1
. # 项目根路径
├── cmd/ │ ├── aaa/ # 可执行文件 aaa 目录,一般这个目录只放个 main.go 、配置文件例子等少数内容。具体代码在 common/aaa/ 下。 │ ├── main.go ├── common/ # 项目内部库 │ ├── aaa/ # 可执行文件 aaa 的具体内容,不过具体各个功能会拆分到 common 下独立目录 │ ├── lib1/ # 项目拆分的模块 1 │ ├── lib2/ # 项目拆分的模块 2 配合 go mod |
12
reus 2019-01-16 12:52:14 +08:00
全放一个目录
|
13
mritd 2019-01-16 12:59:45 +08:00 3
自己弄了个基于 gin 的 mvc 的架子 https://github.com/mritd/ginmvc
还没完善完,仅供参考 ```sh . ├── Dockerfile ├── LICENSE ├── Makefile ├── README.md ├── auth │ ├── casbin.go │ ├── consts.go │ └── jwt.go ├── cache │ ├── gocache.go │ └── redis.go ├── conf │ └── config.go ├── db │ ├── gormrus.go │ └── mysql.go ├── ginengine │ └── engine.go ├── ginmvc.yaml ├── go.mod ├── go.sum ├── main.go ├── middleware │ ├── jwt.go │ ├── log.go │ ├── middleware.go │ ├── rbac.go │ ├── recovery.go │ └── session.go ├── models │ ├── auto_migrate.go │ ├── test_module.go │ └── user.go ├── resources ├── routers │ ├── health.go │ ├── router.go │ ├── static.go │ ├── templates.go │ ├── user.go │ └── web.go ├── static │ ├── css │ ├── img │ ├── js │ └── webfonts │ ├── templates │ └── index.html ├── utils │ ├── char.go │ └── common.go └── version.go ``` |
14
88250 2019-01-16 13:00:57 +08:00 1
Web 项目: https://github.com/b3log/pipe
|
15
sunjourney 2019-01-16 14:45:17 +08:00
@zicla 你的结构不分领域全放 rest package 下呀
|
16
menghan 2019-01-16 14:55:47 +08:00
用什么结构,要看你的项目是库,是 framework,还是完整的 program。
|
17
my3157 2019-01-16 16:08:44 +08:00
|
18
zicla 2019-01-16 16:37:24 +08:00
@sunjourney 这个项目不大,于是全部放到 rest 这个 package 下面了。 如果是很庞大的项目,自然需要按照模块来划分了,不过 golang 里面的跨 package 引用需要注意处理一下
|
19
bzshow1 2019-01-16 17:17:50 +08:00 1
https://github.com/golang-standards/project-layout 可以参考这个 5000 多 star
|
20
hekunhotmail 2019-01-16 17:18:56 +08:00
收藏
|
24
coldwarm7 2019-01-16 17:45:10 +08:00
可以参考一下 beego 的结构目录
|
26
pythondean 2019-01-16 23:43:30 +08:00 via iPhone
@my3157 这个有点大,国情是大部分都是用来写 api.大佬有没有简化版的
|
27
workwonder 2019-01-17 09:49:40 +08:00 via Android
我刚入坑 golang 一月左右,做了一个小小项目。
感觉 go mod 是一个本来就该这样的模式,不知道为什么值得称赞,大概是之前那种操作太变态了。我也是在项目即将做好时才尝试 go mod 的,感觉释然。 |
28
workwonder 2019-01-17 10:01:09 +08:00 1
这是我第一个 golang 项目的目录结构,一个很简单的评论服务。
``` ➜ talk git:(master) tree . . ├── config.sample.yaml ├── db-migrations │ ├── 20190102173600-init-schema.sql │ ├── 20190109170100-rename-tags.sql │ └── README.txt ├── Dockerfile ├── go.mod ├── go.sum ├── README.md ├── server.go └── talk ├── api.go ├── config.go ├── config_test.go ├── core.go ├── db.go ├── errors.go ├── logging.go ├── mid_auth0.go ├── mid_method_override.go ├── mid_request_id.go ├── router.go ├── utils_http.go ├── utils_tags.go └── utils_test.go ``` |
29
motecshine 2019-01-17 11:56:42 +08:00 1
```
. ├── README.md ├── actors │ ├── reactor.go │ └── worker.go ├── configs │ ├── configs.go │ ├── prod.config.yaml │ └── test.config.yaml ├── containers │ └── container.go ├── db │ ├── redis.go │ └── tidb.go ├── debug.py ├── helpers │ └── logs.go ├── logs │ ├── ParkInfo.log │ └── ParkInfo.log.20190117093012 ├── main.go ├── prod.env ├── queue │ └── mq.go ├── start.sh ├── test.env ├── v3_older │ ├── handlers │ │ ├── common.go │ │ ├── heartbeat.go │ │ └── parkinfo.go │ ├── models │ │ ├── park_channel.go │ │ └── park_equipment.go │ └── proto │ ├── proto.go │ └── v4043.go └── v4 ├── handlers │ ├── common.go │ ├── heartbeat.go │ └── parkinfo.go ├── models │ ├── park_info_connect.go │ ├── park_info_option.go │ └── park_info_space.go └── proto ├── common.go ├── park_connect.go ├── park_option.go └── park_space.go ``` |