V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
如果想在 V2EX 获得更好的推广效果,欢迎了解 PRO 会员机制:
https://www.v2ex.com/pro/about
jarryli
V2EX  ›  推广

精心打造一款 Go 语言 Gin 框架 DDD 脚手架,适合指导 AI 快速搭建项目

  •  
  •   jarryli · 17 小时 46 分钟前 · 680 次点击

    如何指导 AI 编程非常重要,我们需要给 AI 提供范本,这样 AI 生成的代码才是我们想要的。

    一个开箱即用的 DDD (领域驱动设计) Go 脚手架,基于 Gin + RocketMQ ,包含双数据库、统一响应、中间件与事件驱动示例。

    这是什么

    Gin-Framework-DDD 是一个面向 Go 语言的 DDD 工程脚手架,帮你快速搭建符合 DDD 分层规范的 Web 服务。项目内置用户与订单示例、领域事件与 RocketMQ 生产/消费、邮件通知示例、统一响应与中间件,适合作为团队工程模板。

    功能与 practice-projects/gin-mvc对齐,可以对比下DDDMVC工程目录结构的差异。

    为什么要用 DDD ?

    很多人认为 Go 语言没必要用 DDD ,毕竟它和 Python 、JS 一样轻巧灵活,用 MVC 就足够了。确实,大多数场景下 MVC 完全够用。工程化无非是把接口处理、业务逻辑、数据处理区分开,让各部分各司其职,方便维护和扩展。DDD 相对更适合中大型项目:如果项目有几十个模块、上百个接口,用 DDD 设计会更合适;模块少、接口不多的话,简单分层就够了。

    总之,是否采用 DDD 和语言无关,只跟业务规模有关。一个东西变复杂了,就需要用一些机制去规范它,才能更好掌控。

    源码地址:https://github.com/microwind/design-patterns/tree/main/practice-projects/gin-ddd

    项目目录:gin-ddd/

    核心特点

    • 严格 DDD 四层架构:领域层、应用层、基础设施层、接口层
    • Gin Web 框架:高性能 HTTP 服务
    • 事件驱动:领域事件 + RocketMQ 生产者/消费者
    • 双数据库支持:用户库 + 订单库可独立配置(默认 MySQL + PostgreSQL )
    • 统一响应格式:Response 封装,错误码集中管理
    • 全局中间件:日志、恢复、跨域
    • 可选邮件通知:订单创建事件驱动 SMTP 邮件发送

    技术栈

    技术 版本 说明
    Go 1.21+ 语言版本
    Gin 1.9+ HTTP 框架
    RocketMQ 5.3+ 事件消息队列
    MySQL 8.0+ 用户库默认
    PostgreSQL 14+ 订单库默认
    YAML - 配置文件格式

    更多架手架: https://github.com/microwind/design-patterns

    6 条回复    2026-04-07 17:14:36 +08:00
    crime1024
        1
    crime1024  
       17 小时 44 分钟前
    好重度,有轻量的吗
    jarryli
        2
    jarryli  
    OP
       17 小时 33 分钟前
    @crime1024 由的。MVC 轻量些,各种随你挑,作为 AI 的范本,我自己就这么用的。
    Gin 框架:
    https://github.com/microwind/design-patterns/tree/main/practice-projects/gin-mvc
    各种语言:
    https://github.com/microwind/design-patterns/tree/main/mvx/mvc
    beidounanxizi
        3
    beidounanxizi  
       15 小时 24 分钟前 via Android
    javaer 程序员👨‍💻最爱的设计模式🧐
    coconutwater
        4
    coconutwater  
       12 小时 57 分钟前   ❤️ 1
    @Livid op 从 3.18 开始频繁在发帖和回复中参杂他个人的 github 项目链接
    ASHYWHISPER
        5
    ASHYWHISPER  
       12 小时 49 分钟前
    单人负责一个项目真爽,直接 DTO 进来到 model 完事😁
    jarryli
        6
    jarryli  
    OP
       12 小时 5 分钟前
    @coconutwater 这位兄弟,我只是想在这个变革的时代能帮助到更多的程序员。若有打扰,敬请原谅。
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   911 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 21:20 · PVG 05:20 · LAX 14:20 · JFK 17:20
    ♥ Do have faith in what you're doing.