mirror of
https://github.com/bufanyun/hotgo.git
synced 2025-11-14 13:13:51 +08:00
插件增加静态文件目录自动映射,优化插件模板引擎与主模块的耦合关系
This commit is contained in:
@@ -19,9 +19,8 @@
|
||||
|
||||
1. /server/addons/hgexample/ # 插件模块目录
|
||||
2. /server/addons/modules/hgexample.go # 隐式注册插件文件
|
||||
3. /server/resource/template/addons/hgexample # pc模板目录
|
||||
4. /web/src/api/addons/hgexample # webApi目录
|
||||
5. /web/src/views/addons/hgexample # web页面目录
|
||||
3. /web/src/api/addons/hgexample # webApi目录
|
||||
4. /web/src/views/addons/hgexample # web页面目录
|
||||
|
||||
# 默认情况下没有为web页面生成菜单权限,因为在实际场景中插件不一定需要用到web页面,所以如有需要请手动到后台 权限管理 -> 菜单权限->自行添加菜单和配置权限
|
||||
```
|
||||
@@ -170,7 +169,7 @@ func (s *sSysAddonsConfig) UpdateConfigByGroup(ctx context.Context, in sysin.Upd
|
||||
如:127.0.0.1:8000/admin/hgexample/index/test
|
||||
```
|
||||
|
||||
对应控制器路径:`server/addons/hgexample/controller/admin/sys/index.go`
|
||||
- 对应控制器路径:`server/addons/hgexample/controller/admin/sys/index.go`
|
||||
|
||||
#### 前端API插件访问路径
|
||||
|
||||
@@ -179,7 +178,7 @@ func (s *sSysAddonsConfig) UpdateConfigByGroup(ctx context.Context, in sysin.Upd
|
||||
如:127.0.0.1:8000/api/hgexample/index/test
|
||||
```
|
||||
|
||||
对应控制器路径:`server/addons/hgexample/controller/api/index.go`
|
||||
- 对应控制器路径:`server/addons/hgexample/controller/api/index.go`
|
||||
|
||||
#### 前台页面插件访问路径
|
||||
|
||||
@@ -188,7 +187,17 @@ func (s *sSysAddonsConfig) UpdateConfigByGroup(ctx context.Context, in sysin.Upd
|
||||
如:127.0.0.1:8000/home/hgexample/index/test
|
||||
```
|
||||
|
||||
对应控制器路径:`server/addons/hgexample/controller/home/index.go`
|
||||
- 对应控制器路径:`server/addons/hgexample/controller/home/index.go`
|
||||
- 对应模板路径:`server/addons/hgexample/resource/public/template`
|
||||
|
||||
#### 静态资源插件访问路径
|
||||
|
||||
```
|
||||
// IP+端口或域名/home/插件名称/API路径
|
||||
如:127.0.0.1:8000/addons/hgexample/default
|
||||
```
|
||||
|
||||
- 对应资源路径:`server/addons/hgexample/resource/public`
|
||||
|
||||
|
||||
#### Websocket插件访问路径
|
||||
@@ -198,9 +207,9 @@ func (s *sSysAddonsConfig) UpdateConfigByGroup(ctx context.Context, in sysin.Upd
|
||||
如:127.0.0.1:8000/socket/hgexample/index/test
|
||||
```
|
||||
|
||||
对应控制器路径:`server/addons/hgexample/controller/socket/index.go`
|
||||
- 对应控制器路径:`server/addons/hgexample/controller/socket/index.go`
|
||||
|
||||
|
||||
### 数据迁移
|
||||
|
||||
可以将数据迁移逻辑写进server/xxx插件/main.go 文件中的Install方法中,并遵循系统规范进行数据安装
|
||||
- 可以将数据迁移逻辑写进server/xxx插件/main.go 文件中的Install方法中,并遵循系统规范进行数据安装
|
||||
|
||||
@@ -12,15 +12,16 @@
|
||||
```go
|
||||
// Skeleton 模块骨架
|
||||
type Skeleton struct {
|
||||
Label string `json:"label"` // 标识
|
||||
Name string `json:"name"` // 名称
|
||||
Group int `json:"group"` // 分组
|
||||
Logo string `json:"logo"` // logo
|
||||
Brief string `json:"brief"` // 简介
|
||||
Description string `json:"description"` // 详细描述
|
||||
Author string `json:"author"` // 作者
|
||||
Version string `json:"version"` // 版本号
|
||||
RootPath string `json:"rootPath"` // 根路径
|
||||
Label string `json:"label"` // 标识
|
||||
Name string `json:"name"` // 名称
|
||||
Group int `json:"group"` // 分组
|
||||
Logo string `json:"logo"` // logo
|
||||
Brief string `json:"brief"` // 简介
|
||||
Description string `json:"description"` // 详细描述
|
||||
Author string `json:"author"` // 作者
|
||||
Version string `json:"version"` // 版本号
|
||||
RootPath string `json:"rootPath"` // 根路径
|
||||
View *gview.View `json:"view"` // 模板引擎
|
||||
}
|
||||
|
||||
func (s *Skeleton) GetModule() Module {
|
||||
@@ -79,26 +80,4 @@ func test(ctx context.Context) {
|
||||
|
||||
#### 插件路由规则
|
||||
- 如果你不喜欢现在的路由风格,可以自行调整。修改位置在:\server\internal\library\addons\addons.go的RouterPrefix方法。
|
||||
- 调整后如web前端页面中有之前的路由风格也需同步修改。
|
||||
|
||||
```go
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"github.com/gogf/gf/v2/frame/g"
|
||||
"hotgo/internal/consts"
|
||||
)
|
||||
|
||||
// RouterPrefix 路由前缀
|
||||
// 最终效果:/应用名称/插件模块名称/xxx/xxx。如果你不喜欢现在的路由风格,可以自行调整
|
||||
func RouterPrefix(ctx context.Context, app, name string) string {
|
||||
var prefix = "/"
|
||||
|
||||
if app != "" {
|
||||
prefix = g.Cfg().MustGet(ctx, "router."+app+".prefix", "/"+app+"").String()
|
||||
}
|
||||
|
||||
return prefix + "/" + name
|
||||
}
|
||||
```
|
||||
- 注意调整后如web前端页面中如有之前的路由风格也需同步修改。
|
||||
|
||||
@@ -26,9 +26,12 @@ HotGo 入口文件->隐式注入(hotgo/addons/modules)->注册所有插件->初
|
||||
│ ├── xxx插件
|
||||
│ | ├── api
|
||||
│ | ├── controller
|
||||
│ | ├── crons
|
||||
│ | ├── global
|
||||
│ | ├── logic
|
||||
│ | ├── model
|
||||
│ | ├── queues
|
||||
│ | ├── resource
|
||||
│ | ├── router
|
||||
│ | ├── service
|
||||
│ | ├── main.go
|
||||
|
||||
@@ -15,9 +15,12 @@
|
||||
│ ├── xxx插件
|
||||
│ | ├── api
|
||||
│ | ├── controller
|
||||
│ | ├── crons
|
||||
│ | ├── global
|
||||
│ | ├── logic
|
||||
│ | ├── model
|
||||
│ | ├── queues
|
||||
│ | ├── resource
|
||||
│ | ├── router
|
||||
│ | ├── service
|
||||
│ | ├── main.go
|
||||
@@ -68,10 +71,13 @@
|
||||
| --- --- --- home | 前台PC端页面 |
|
||||
| --- --- --- websocket | 可同时为多应用提供websocket接口 |
|
||||
| --- --- controller | 接收/解析用户输入参数的入口/接口层,也可以理解为控制器 |
|
||||
| --- --- crons | 项目中由系统统一接管的定时任务处理 |
|
||||
| --- --- global | 项目内主要的全局变量和系统的一些初始化操作 |
|
||||
| --- --- logic | 业务逻辑封装管理,特定的业务逻辑实现和封装往往是项目中最复杂的部分 |
|
||||
| --- --- model | 数据结构管理模块,管理数据实体对象,以及输入与输出数据结构定义 |
|
||||
| --- --- --- input | 对内接口。用于controller调用service或service之间调用时的输入/输出结构定义,以及输入过滤和预处理 |
|
||||
| --- --- --- input | 对内接口。用于controller调用service或service之间调用时的输入/输出结构定义,以及输入过滤和预处理 |
|
||||
| --- queues | 为项目内所有的消息队列的消费者提供统一的初始化和处理 |
|
||||
| --- resource | 静态资源文件。这些文件往往可以通过 资源打包/镜像编译 的形式注入到发布文件中 |
|
||||
| --- --- router | 注册对外接口和分组中间件 |
|
||||
| --- --- service | 用于业务模块解耦的接口定义层具体的接口实现在logic中进行注入 |
|
||||
| --- main.go | 插件始化文件和模块插拔接口 |
|
||||
@@ -93,7 +99,7 @@
|
||||
| --- model | 数据结构管理模块,管理数据实体对象,以及输入与输出数据结构定义 |
|
||||
| --- --- do | 用于dao数据操作中业务模型与实例模型转换,由工具维护,用户不能修改 |
|
||||
| --- --- entity | 与数据集合绑定的程序数据结构定义,通常和数据表一一对应 |
|
||||
| --- --- input | 对内接口。用于controller调用service或service之间调用时的输入/输出结构定义,以及输入过滤和预处理 |
|
||||
| --- --- input | 对内接口。用于controller调用service或service之间调用时的输入/输出结构定义,以及输入过滤和预处理 |
|
||||
| --- packed | 将静态资源打包进可执行文件,无需单独部署 |
|
||||
| --- queues | 为项目内所有的消息队列的消费者提供统一的初始化和处理 |
|
||||
| --- router | 注册对外接口和分组中间件 |
|
||||
|
||||
Reference in New Issue
Block a user