gocore-v2框架-脚手架生成项目结构介绍

2024-05-31 07:08

本文主要是介绍gocore-v2框架-脚手架生成项目结构介绍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述

Github
官方文档地址-持续更新中

通过脚手架可以快速构建项目,无需从0开始创建目录结构,无需复制历史项目统一替换项目名,通过一行命令就能快速生成项目结构和基础骨架代码,并且融入接口开发理念ADM(Api-Domain-Model)分层方式来进行开发规范的约束。

目录结构如下:

.
├── Dockerfile #docker镜像打包
├── README.md #项目介绍
├── app 
│   ├── api #api接口入口
│   │   └── user.go
│   ├── cronjob #定时任务,业务逻辑处理
│   │   └── sync_user.go
│   ├── def #api接口请求参数和响应参数声明
│   │   └── def.go
│   ├── domain #最终业务逻辑处理
│   │   └── user.go
│   ├── errcode #错误码声明
│   │   └── errcode.go
│   ├── job #一次性任务,常驻任务,业务逻辑
│   │   └── init_user.go
│   ├── model
│   │   └── app #model目录,app为数据库名称
│   │       ├── mysql_client.go #数据库db建表,获取db实例
│   │       └── user.go #model文件,user是表名称
│   └── routes
│       └── routers.go  #路由规则设置
├── cmd #程序启动入口
│   ├── api.go #api接口启动命令
│   ├── cron.go #定时任务启动命令
│   ├── init.go #配置,数据库,redis等初始化
│   └── job.go #一次性任务,常驻任务启动命令
├── common #存放全局变量,公共方法
├── conf #配置文件目录
│   ├── base.go #基础通用配置,最终会合并到项目配置中
│   ├── const.go #全局常量
│   └── local.go #本地配置环境变量为local时会使用
├── go.mod
├── go.sum
├── gocore.yaml #gocore项目生成配置文件
├── main.go #程序入口
└── pkg #公共工具包

ADM(Api-Domain-Model)

项目目录结构遵循了一定的开发理念。

Api层可以理解为是请求开始结束以及组合业务的地方

  • 主要负责以下几件事情:
    • 获取请求参数并且验证请求参数的有效性
    • 对Domain领域层的实现进行拼接来组成整个接口的业务
    • 对于返回结果进行处理
  • Api接口层应该做:
    • 对用户登录态进行必要的检测
    • 控制业务场景的主流程,创建领域业务实例,并进行调用
    • 进行必要的日志纪录
    • 返回接口结果
  • Api接口层不应该做:
    • 进行业务规则的处理或者计算
    • 关心数据是否使用缓存,或进行缓存相关的直接操作
    • 直接操作数据库

Domain层负责处理具体业务逻辑

  • 将复杂业务拆分代码复用:
    • 一个方法只完成一件事情,复杂逻辑应该被拆分
    • Domain层尽量减少互相之间的调用,应该由API层拼接(API层能够一眼看出整个接口要做哪几件事)
    • 核心单测集中在Domain层中进行

Model层负责获取数据

  • 统一数据获取入口提升扩展性:
    • 每个方法只完成一件事情,比如GetInfoById、UpdateNameById、GetCountUser
    • 避免定义非常通用的方法,比如where条件以字符串传递,容易导致SQL注入问题
    • 只需要修改一个文件就可以对数据结构调整或缓存进行优化,不用修改业务逻辑层

这篇关于gocore-v2框架-脚手架生成项目结构介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1017547

相关文章

vite搭建vue3项目的搭建步骤

《vite搭建vue3项目的搭建步骤》本文主要介绍了vite搭建vue3项目的搭建步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录1.确保Nodejs环境2.使用vite-cli工具3.进入项目安装依赖1.确保Nodejs环境

Redis中Set结构使用过程与原理说明

《Redis中Set结构使用过程与原理说明》本文解析了RedisSet数据结构,涵盖其基本操作(如添加、查找)、集合运算(交并差)、底层实现(intset与hashtable自动切换机制)、典型应用场... 目录开篇:从购物车到Redis Set一、Redis Set的基本操作1.1 编程常用命令1.2 集

idea+spring boot创建项目的搭建全过程

《idea+springboot创建项目的搭建全过程》SpringBoot是Spring社区发布的一个开源项目,旨在帮助开发者快速并且更简单的构建项目,:本文主要介绍idea+springb... 目录一.idea四种搭建方式1.Javaidea命名规范2JavaWebTomcat的安装一.明确tomcat

pycharm跑python项目易出错的问题总结

《pycharm跑python项目易出错的问题总结》:本文主要介绍pycharm跑python项目易出错问题的相关资料,当你在PyCharm中运行Python程序时遇到报错,可以按照以下步骤进行排... 1. 一定不要在pycharm终端里面创建环境安装别人的项目子模块等,有可能出现的问题就是你不报错都安装

5 种使用Python自动化处理PDF的实用方法介绍

《5种使用Python自动化处理PDF的实用方法介绍》自动化处理PDF文件已成为减少重复工作、提升工作效率的重要手段,本文将介绍五种实用方法,从内置工具到专业库,帮助你在Python中实现PDF任务... 目录使用内置库(os、subprocess)调用外部工具使用 PyPDF2 进行基本 PDF 操作使用

k8s admin用户生成token方式

《k8sadmin用户生成token方式》用户使用Kubernetes1.28创建admin命名空间并部署,通过ClusterRoleBinding为jenkins用户授权集群级权限,生成并获取其t... 目录k8s admin用户生成token创建一个admin的命名空间查看k8s namespace 的

uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)

《uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)》在uni-app开发中,文件上传和图片处理是很常见的需求,但也经常会遇到各种问题,下面:本文主要介绍uni-app小程序项目中实... 目录方式一:使用<canvas>实现图片压缩(推荐,兼容性好)示例代码(小程序平台):方式二:使用uni

MyCat分库分表的项目实践

《MyCat分库分表的项目实践》分库分表解决大数据量和高并发性能瓶颈,MyCat作为中间件支持分片、读写分离与事务处理,本文就来介绍一下MyCat分库分表的实践,感兴趣的可以了解一下... 目录一、为什么要分库分表?二、分库分表的常见方案三、MyCat简介四、MyCat分库分表深度解析1. 架构原理2. 分

Java 缓存框架 Caffeine 应用场景解析

《Java缓存框架Caffeine应用场景解析》文章介绍Caffeine作为高性能Java本地缓存框架,基于W-TinyLFU算法,支持异步加载、灵活过期策略、内存安全机制及统计监控,重点解析其... 目录一、Caffeine 简介1. 框架概述1.1 Caffeine的核心优势二、Caffeine 基础2

linux查找java项目日志查找报错信息方式

《linux查找java项目日志查找报错信息方式》日志查找定位步骤:进入项目,用tail-f实时跟踪日志,tail-n1000查看末尾1000行,grep搜索关键词或时间,vim内精准查找并高亮定位,... 目录日志查找定位在当前文件里找到报错消息总结日志查找定位1.cd 进入项目2.正常日志 和错误日