0


基于 go iris 的 web 开发框架 Iris-ridge

Iris-ridge 介绍

Iris-ridge 是基于 go-iris 编写的一个快速、简单且非常高效的面向对象的 Web 开发框架。该框架可以作为敏捷 WEB 应用开发和简化企业应用开发的基础。

##  github 访问地址
github: https://github.com/lihao1988/iris-ridge

## gitee 访问地址
gitee: https://gitee.com/lihao1988/iris-ridge

目录结构

支持多应用模式部署,所以实际的目录结构取决于你采用的是单应用还是多应用模式,分别说明如下。


单应用模式

默认代码架构目录就是一个单应用模式

Iris-ridge 架构目录
├─app            应用目录
│  ├─controller      控制器目录
│  ├─dao             数据访问对象目录
│  ├─dto             数据传输对象目录
│  ├─model           数据模型目录
│  ├─pkg             引用第三方包目录
│  ├─service         接口服务层目录
│  ├─utils           工具类函数目录
│  ├─ ...            更多类库目录
│  │
│  └─app.php         应用入口文件
│
├─common          应用抽象目录(与 app 目录类似)
│  ├─ ...            关联抽象类库目录(省略...)
│  ├─global          全局变量定义目录
│  ├─lib             内部类库文件目录
│  ├─share           内部分享类库目录
│  │
│  └─...             更多类库目录
│ 
├─config          配置目录
│  ├─abstract        配置抽象目录
│  │  ├─structs          yml 配置文件所对应的 struct 文件目录
│  │  ├─abstract.go      配置抽象和初始化函数文件
│  │  ├─database.yml     数据库配置文件
│  │  ├─migration.yml    迁移配置文件
│  │  │ 
│  │  └─...              更多 yml 配置文件
│  ├─dev             yml 配置文件目录(开发环境)
│  ├─prod            yml 配置文件目录(生产环境)
│  ├─ ...            更多 yml 配置文件目录(按环境自定义)
│  │
│  └─app.yml         应用配置文件
│
├─docs            swagger 目录
│
├─extend          应用拓展组件目录
│  ├─autoload        启动组件目录    
│  │  ├─custom           自定义引用组件目录
│  │  ├─indoor           内部引用组件目录
│  │  └─autoload.go      启动组件入口文件
│  │  
│  └─...             更多应用拓展组件目录
│
├─migration       迁移功能目录
│  ├─scripts         迁移脚本目录
│  └─migration.go       迁移(.go)抽象类文件
│
├─script          应用脚本目录
│  ├─migrate         迁移包程序目录(关联根目录 goose 程序)   
│  └─...             更多 yml 配置文件   
│
├─public          WEB目录(对外访问目录)
├─route           自定义路由目录
├─tool            自定义工具方法目录     
├─view            视图目录   
├─.gitignore      git 忽略配置管理文件
├─go.mod          依赖管理文件    
├─goose           业务迁移命令行入口文件
├─LICENSE         授权说明文件 
├─main.go         入口文件
├─README.md       README 文件

多应用模式(扩展)

如果你需要一个多应用的项目架构,目录结构可以参考下面的结构进行调整(关于配置文件的详细结构参考后面章节)。
PS:与“单应用模式”一致的目录忽略…

Iris-ridge 架构目录
├─app            应用目录
│  ├─app_name        应用目录
│  │  ├─controller      控制器目录
│  │  ├─dao             数据访问对象目录
│  │  ├─dto             数据传输对象目录
│  │  ├─model           数据模型目录
│  │  ├─pkg             引用第三方包目录
│  │  ├─service         接口服务层目录
│  │  ├─utils           工具类函数目录
│  │  │
│  │  └─ ...            更多类库目录
│  │  
│  └─app.php      应用入口文件
│
├─...            更多程序目录(与"单应用模式"一致)

config 配置

根目录下 config 目录中配置文件说明,当然你也可以根据自身业务需求增加自定义的配置文件。


app.yml 入口配置文件

如下配置项明确了应用启动后读取 config 目录下哪个子目录的配置文件

# 环境设置
env: dev 

...

abstract 目录说明

如下配置中 abstract 目录中 structs 中除 app.go 对应 app.yml 配置文件,其它 struct 文件与 abstract 目录下 yml 文件一一对应。如需按各类环境调整相关配置,只需要将 abstract 目录下 yml 文件拷贝到对应环境文件夹中即可,如:dev(开发环境)、prod(生产环境)… 同时,需要修改 app.yml 中 env 配置项。如果需要新增 yml 文件,可以直接在 abstract 目录中直接新建,并在 structs 目录中创建与 yml 文件对应的 struct 文件。

├─config        配置目录
│  ├─abstract       默认目录
│  │  ├─structs          yml 配置文件对应 struct 文件目录 
│  │  │  ├─app.go            app.yml 对应 struct 文件
│  │  │  ├─database.go       database.yml 对应 struct 文件
│  │  │  ├─migration.go      migration.yml 对应 struct 文件
│  │  │  │
│  │  │  └─...              更多 yml 配置文件对应 struct 文件
│  │  ├─abstract.go      config 配置 init 函数文件
│  │  ├─database.yml     数据库配置文件
│  │  ├─migration.yml    迁移配置文件
│  │  │ 
│  │  └─...              更多 yml 配置文件
│  ├─dev             yml 配置文件目录(开发环境)
│  ├─prod            yml 配置文件目录(生产环境)
│  ├─ ...            更多 yml 配置文件目录(按环境自定义)
│  │
│  └─app.yml         应用配置文件
│                  

多应用模式 - 配置

针对启用“多应用模式”,需要调整根目录下 app 目录中 app.gp 文件中的相关引用。

// 单应用模式下
import (
    ...

    // for init controller route and table model
    // import all module's controllers
    _ "ridge/app/controller"
    
    // import all module's models
    _ "ridge/app/model"

    ...
)

// 多应用模式 [app_name - 应用名称]
import (
    ...

    // for init controller route and table model
    // import all module's controllers
    _ "ridge/app/<app_name>/controller"
    
    // import all module's models
    _ "ridge/app/<app_name>/model"

    ...
)

同时,可以针对应用名称<app_name>对应用模块下 controller 层的动态路由前缀进行调整,其调整文件为应用文件夹下 controller 目录中 controller.go 文件。

// 单应用模式下(默认)
// 目录 app/controller/controller.go
// Party custom routing prefix of "app" module
func (c *Controller) Party() string {
    return "app"
}

// 多应用模式 [app_name - 应用名称]
// 目录 app/<app_name>/controller/controller.go
// Party custom routing prefix of "app_name" module
func (c *Controller) Party() string {
    return "app_name"
}

数据迁移

数据迁移依赖 gorm 和 goose 组件,其中默认自动迁移 gorm 依赖表 model 结构体的迁移,同时支持 goose 自动迁移模式或命令行迁移模式。

gorm - 表结构创建
// 在应用目录下 model 目录中创建对应表 model文件
// 可以参考 app/model/userModel.go 文件
goose - 数据迁移配置
// goose 相关配置
// 需要配置 config 目录中 migration.yml
# 迁移文件目录
migration_dir: /migration/scripts

# 是否允许迁移缺失
allow_missing: true

# 是否自动执行数据迁移
auto_migrate: false
goose - 命令行操作
// 使用 goose 命令行
./goose up      // 执行迁移
./goose dwon    // 回退迁移
./goose status  // 查看迁移状态
./goose --help  // 可以查看相关命令格式

其它说明

对一些其它功能内容的使用进行简单说明,主要涉及内容:自定义路由、swagger 使用、前后端分离方式和 view 方式。


自定义路由

自定义路由,可分为应用内部自定义路由和外部自定义路由。
** 其 controller 层的路由为动态路由,无需手动维护。

* 内部自定义路由
可以在根目录中 app 目录下 app.go 文件中进行应用内部自定义路由的设置。

* 外部自定义路由
可以在根目录 route 目录中 route.go 文件中进行外部自定义路由的设置。

生成 swagger 文档

通过编写 swagger 规范生成 api 的接口文档

## swagger 范例:app/controller/userController.go

// PostLogin user login operate
// @Tags 用户功能模块
// @Summary 用户登录
// @Description 用于用户登录操作
// @Accept application/json
// @Produce application/json
// @Param Authorization header string true "auth token"
// @Param data body dto.LoginReq true "用户信息"
// @Success 200 {object} dto.APISuccess    "请求成功"
// @Failure 400 {object} dto.APIError "请求错误"
// @Router /app/user/login [post]

swagger 脚本

# swag  init

注意事项

如使用 go build 生成二进制程序(main),需要同时拷贝 config、migration、public 和 view 文件夹,并确保二进制程序(main)与相关文件夹在同一目录下,如需使用迁移命令行程序(goose)也需与其在同一目录。

Iris-ridge 架构目录
├─config         配置目录
├─migration      迁移功能目录(迁移脚本 .go 或 .sql )          
├─public         WEB目录(对外访问目录)
│
├─goose          迁移二进制程序文件
├─main           入口启动二进制程序文件
│
├─...            更多程序或目录
标签: golang go web

本文转载自: https://blog.csdn.net/qq_35821673/article/details/143018725
版权归原作者 行泽一 所有, 如有侵权,请联系我们删除。

“基于 go iris 的 web 开发框架 Iris-ridge”的评论:

还没有评论