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

相关文章

JAVA项目swing转javafx语法规则以及示例代码

《JAVA项目swing转javafx语法规则以及示例代码》:本文主要介绍JAVA项目swing转javafx语法规则以及示例代码的相关资料,文中详细讲解了主类继承、窗口创建、布局管理、控件替换、... 目录最常用的“一行换一行”速查表(直接全局替换)实际转换示例(JFramejs → JavaFX)迁移建

MySQL快速复制一张表的四种核心方法(包括表结构和数据)

《MySQL快速复制一张表的四种核心方法(包括表结构和数据)》本文详细介绍了四种复制MySQL表(结构+数据)的方法,并对每种方法进行了对比分析,适用于不同场景和数据量的复制需求,特别是针对超大表(1... 目录一、mysql 复制表(结构+数据)的 4 种核心方法(面试结构化回答)方法 1:CREATE

JavaWeb项目创建、部署、连接数据库保姆级教程(tomcat)

《JavaWeb项目创建、部署、连接数据库保姆级教程(tomcat)》:本文主要介绍如何在IntelliJIDEA2020.1中创建和部署一个JavaWeb项目,包括创建项目、配置Tomcat服务... 目录简介:一、创建项目二、tomcat部署1、将tomcat解压在一个自己找得到路径2、在idea中添加

Java使用Spire.Barcode for Java实现条形码生成与识别

《Java使用Spire.BarcodeforJava实现条形码生成与识别》在现代商业和技术领域,条形码无处不在,本教程将引导您深入了解如何在您的Java项目中利用Spire.Barcodefor... 目录1. Spire.Barcode for Java 简介与环境配置2. 使用 Spire.Barco

解决idea启动项目报错java: OutOfMemoryError: insufficient memory

《解决idea启动项目报错java:OutOfMemoryError:insufficientmemory》:本文主要介绍解决idea启动项目报错java:OutOfMemoryError... 目录原因:解决:总结 原因:在Java中遇到OutOfMemoryError: insufficient me

python项目环境切换的几种实现方式

《python项目环境切换的几种实现方式》本文主要介绍了python项目环境切换的几种实现方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 如何在不同python项目中,安装不同的依赖2. 如何切换到不同项目的工作空间3.创建项目

SpringBoot项目整合Netty启动失败的常见错误总结

《SpringBoot项目整合Netty启动失败的常见错误总结》本文总结了SpringBoot集成Netty时常见的8类问题及解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录一、端口冲突问题1. Tomcat与Netty端口冲突二、主线程被阻塞问题1. Netty启动阻

python项目打包成docker容器镜像的两种方法实现

《python项目打包成docker容器镜像的两种方法实现》本文介绍两种将Python项目打包为Docker镜像的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 目录简单版:(一次成功,后续下载对应的软件依赖)第一步:肯定是构建dockerfile,如下:第二步

Python + Streamlit项目部署方案超详细教程(非Docker版)

《Python+Streamlit项目部署方案超详细教程(非Docker版)》Streamlit是一款强大的Python框架,专为机器学习及数据可视化打造,:本文主要介绍Python+St... 目录一、针对 Alibaba Cloud linux/Centos 系统的完整部署方案1. 服务器基础配置(阿里

SpringBoot集成iText快速生成PDF教程

《SpringBoot集成iText快速生成PDF教程》本文介绍了如何在SpringBoot项目中集成iText9.4.0生成PDF文档,包括新特性的介绍、环境准备、Service层实现、Contro... 目录SpringBoot集成iText 9.4.0生成PDF一、iText 9新特性与架构变革二、环