一个自用的架子, 希望各位大佬给点建议和意见

shixiaofeia · 2022-02-10 10:38:40 · 1163 次点击 · 预计阅读时间不到 1 分钟 · 大约8小时之前 开始浏览    
这是一个创建于 2022-02-10 10:38:40 的文章,其中的信息可能已经有所发展或是发生改变。

一个自用的项目开发架子, 希望各位大佬给点建议和意见.

git地址 https://github.com/shixiaofeia/fly

哪方面的都可, 就是想让它能更好一些


有疑问加站长微信联系(非本文作者))

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1163 次点击  ∙  1 赞  
加入收藏 微博
11 回复  |  直到 2022-02-21 11:58:24
shixiaofeia
shixiaofeia · #1 · 3年之前

铁子们都出来唠一唠啊

pluszero1982
pluszero1982 · #2 · 3年之前

感觉大概还需要4-5个版本迭代才能用的比较顺畅的样子

pluszero1982
pluszero1982 · #3 · 3年之前

提几点看看,看看我的观点是否有点太老了。

  • 对于一个后台框架,需要一个src|code或者类似的目录。与它统计的应该是 resources/ systems/ doc/ 目录 利于分开管理
  • config目录不要有code,code应该全在code目录下
  • 配置文件建议不要json,至少不要强绑定json
  • 代码在分类之前,要先分层,驱动层,组建层,业务层。

以我自己写的一个用来在虚拟机的windows和主系统的linux之间共享文件的webdav服务为例,结构大概是这样的

https://github.com/herbrhythm/herbwebdavd

我这个大概有过3个大版本的迭代的,才差不多稳定下来

shixiaofeia
shixiaofeia · #4 · 3年之前
pluszero1982pluszero1982 #3 回复

提几点看看,看看我的观点是否有点太老了。 * 对于一个后台框架,需要一个src|code或者类似的目录。与它统计的应该是 resources/ systems/ doc/ 目录 利于分开管理 * config目录不要有code,code应该全在code目录下 * 配置文件建议不要json,至少不要强绑定json * 代码在分类之前,要先分层,驱动层,组建层,业务层。 以我自己写的一个用来在虚拟机的windows和主系统的linux之间共享文件的webdav服务为例,结构大概是这样的 https://github.com/herbrhythm/herbwebdavd 我这个大概有过3个大版本的迭代的,才差不多稳定下来

首先感谢回复和建议, 下面针对说明一下:

  1. 项目目录在readme里面有解释, 是参考通用的Go程序布局 设计的, src目录基本上是gopath模式开发遗留下来的习惯, 目前不太建议使用, 至于其后的 resources/ systems 目录我不太明确他的意义, 或者可以麻烦解释下? doc 目录是我个人的api文档喜欢用自搭的yapi之类托管工具, 不太喜欢写接口文档放在项目里;

  2. config文件单独存放是应该的, 我这里是写了个样例放在这个目录下方便使用, 项目初始化是可以用过 -config configPath 的方式来指定配置文件路径, 正常工作中config文件也不应该直接放在项目里(除本地开发使用), 可以通过etcd或者config项目等管理;

  3. 这是个好建议, 后面我会让他再支持toml等配置格式, 目前来说json还是大部分人可以接受的;

  4. /internal 实际上是业务层, 为了便捷我把 api 目录从internal 中迁移出来, 相关驱动组件都在/pkg 目录下

liangmanlin
liangmanlin · #5 · 3年之前

我觉得这个不算框架,应该叫模板参考

pluszero1982
pluszero1982 · #6 · 3年之前
shixiaofeiashixiaofeia #4 回复

#3楼 @pluszero1982 首先感谢回复和建议, 下面针对说明一下: 1. 项目目录在readme里面有解释, 是参考通用的[Go程序布局](https://github.com/golang-standards/project-layout/blob/master/README_zh.md) 设计的, src目录基本上是gopath模式开发遗留下来的习惯, 目前不太建议使用, 至于其后的 resources/ systems 目录我不太明确他的意义, 或者可以麻烦解释下? doc 目录是我个人的api文档喜欢用自搭的yapi之类托管工具, 不太喜欢写接口文档放在项目里; 2. config文件单独存放是应该的, 我这里是写了个样例放在这个目录下方便使用, 项目初始化是可以用过 -config configPath 的方式来指定配置文件路径, 正常工作中config文件也不应该直接放在项目里(除本地开发使用), 可以通过etcd或者config项目等管理; 3. 这是个好建议, 后面我会让他再支持toml等配置格式, 目前来说json还是大部分人可以接受的; 4. /internal 实际上是业务层, 为了便捷我把 api 目录从internal 中迁移出来, 相关驱动组件都在/pkg 目录下

以你引用的layout为例

  • resources=/assets
  • systems=/scripts,examples等杂项的
  • doc目录=/docs

然后,doc目录是项目文档目录,不是API文档

如果你是参考这个布局的话,你又有个非常大的问题了。

main.go不该出现在根目录下

应该在 /cmd 下,这是个很复杂的问题。

对于你的项目结构来说。别的不论

main.go的位置,config模板文件的位置,缺乏build/发布脚本,缺乏doc目录是比较明显要修正的问题。

除了入口代码,所有的go文件应该都在/pkg和/internal里

/api目录放的不因改是代码,应该是用来生成api的原始数据

/rpc /domain两个目录也不应该有

shixiaofeia
shixiaofeia · #7 · 3年之前

6楼 @pluszero1982 感谢解惑;

正如你所说, 我引用这个布局就应该尽量按照他的规则来:

  1. main文件我会放在 /cmd/app目录下;
  2. /rpc, /domain 和 /api(也许我应该改名interface) 我会放在internal下面;
  3. 最外层的 /api 应该存放 pb 之类的文件;
  4. /configs 会存放config.json 文件, /internal/config 会存放对应解析的code代码;
  5. dockerfile等配置文件放入 /build/package 下
  6. /doc 目录目前没有需要放置的, 我会先写个readme 做占位;

这些会在下次commit 中体现, 再次感谢

shixiaofeia
shixiaofeia · #8 · 3年之前
liangmanlinliangmanlin #5 回复

我觉得这个不算框架,应该叫模板参考

或者应该叫项目模板, clone下来就能直接进行业务开发

shixiaofeia
shixiaofeia · #9 · 3年之前

1

gphper
gphper · #10 · 3年之前

我也是做了个这种项目,平时都是想起来什么就往上面加点什么还在维护 https://github.com/gphper/ginadmin

shixiaofeia
shixiaofeia · #11 · 3年之前
gphpergphper #10 回复

我也是做了个这种项目,平时都是想起来什么就往上面加点什么还在维护 https://github.com/gphper/ginadmin

一样一样

添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传