@@ -7,7 +7,7 @@ title: 插件开发
77::: steps
88
991 . 拉取最新的 fba 项目到本地并配置好开发环境
10- 2 . 通过 [ 插件分类 ] ( #插件分类 ) 、[ 插件路由结构 ] ( #插件路由结构 ) 、[ 插件配置] ( #插件配置 ) 、[ 数据库兼容性] ( #数据库兼容性 )
10+ 2 . 通过 [ 插件类型 ] ( #插件类型 ) 、[ 插件路由 ] ( #插件路由 ) 、[ 插件配置] ( #插件配置 ) 、[ 数据库兼容性] ( #数据库兼容性 )
1111 了解插件系统的运作机制
12123 . 根据 [ 插件目录结构] ( #插件目录结构 ) 进行插件开发
13134 . 完成插件开发
@@ -16,28 +16,30 @@ title: 插件开发
1616
1717:::
1818
19- ### 插件分类
19+ ### 插件类型
2020
2121::: tabs#plugin
2222@tab <Icon name =" carbon:app " />应用级插件
2323在 [ 项目结构] ( ../backend/summary/intro.md#项目结构 ) 中,app
24- 目录下的一级文件夹被视为应用,此原理同样应用于插件系统。也就是说,如果插件被开发为应用,那么它们将会像应用一样被注入到系统中,我们称这类插件为【应用级插件】
24+ 目录下的一级文件夹被视为应用,此原理同样应用于插件系统。
25+
26+ 此类插件会像应用一样被注入到系统中,我们称这类插件为【应用级插件】
2527
2628@tab <Icon name =" fluent:table-simple-include-16-regular " />扩展级插件
27- 与【应用级插件】相反,如果插件不被开发为应用,那么它们将被开发为 app 目录下已存在应用的扩展功能 ,我们称这类插件为【扩展级插件】
29+ 此类插件会被注入到 app 目录下已存在的应用中 ,我们称这类插件为【扩展级插件】
2830:::
2931
30- ### 插件路由结构
32+ ### 插件路由
3133
3234如果插件符合插件开发的要求,则插件中的所有路由都将自动注入到 FastAPI 应用中。但值得注意的是,启动时间可能会随着插件数量的递增而增加,因为
33- fba 会在启动前对所有插件进行解析
35+ fba 会在每次启动前对所有插件进行实时解析
3436
3537::: tabs#plugin
3638@tab <Icon name =" carbon:app " />应用级插件
37- 插件路由结构应完全遵循 [ 路由结构] ( ../backend/reference/router.md#路由结构 ) 进行开发
39+ 应完全遵循 [ 路由结构] ( ../backend/reference/router.md#路由结构 ) 进行开发
3840
3941@tab <Icon name =" fluent:table-simple-include-16-regular " />扩展级插件
40- 插件路由结构必须根据现有应用中的目录结构进行 1:1 复制,可参考 fba
42+ 必须将应用中的 api 目录结构进行 1:1 复制,可参考 fba
4143中的内置插件 [ notice] ( https://github.com/fastapi-practices/fastapi_best_architecture/tree/master/backend/plugin/notice/api )
4244:::
4345
@@ -46,7 +48,7 @@ fba 会在启动前对所有插件进行解析
4648` plugin.toml ` 是插件的配置文件,每个插件都必须包含此文件
4749
4850::: caution
49- 此配置文件自 fba v1.3.0 版本起发生重大变更,仅向后兼容(低于此版本开发的插件将不可用)
51+ 此配置文件自 fba v1.5.3 版本起发生重大变更,仅向后兼容(低于此版本开发的插件将不可用)
5052:::
5153
5254::: tabs#plugin
@@ -66,8 +68,9 @@ author = ''
6668
6769# 应用配置
6870[app ]
69- # 插件路由器实例,可参考源码:backend/app/admin/api/router.py,通常默认命名为 v1
70- router = [' ' ]
71+ # 路由器最终实例
72+ # 可参考源码:backend/app/admin/api/router.py,通常默认命名为 v1
73+ router = [' v1' ]
7174```
7275
7376@tab <Icon name =" fluent:table-simple-include-16-regular " />扩展级插件
@@ -86,17 +89,17 @@ author = ''
8689
8790# 应用配置
8891[app ]
89- # 此插件属于哪个 app
90- include = ' '
92+ # 扩展的哪个应用
93+ extend = ' 应用文件夹名称 '
9194
9295# 接口配置
93- # xxx 对应的是插件 api 目录下的接口文件名(不包含后缀)
94- # 例如接口文件名为 notice.py,则 xxx 应该为 notice
95- # 如果包含多个接口文件,则应存在多个相应的 api 配置
9696[api .xxx ]
97- # xxx 路由前缀,必须以 '/' 开头
97+ # xxx 对应的是插件 api 目录下接口文件的文件名(不包含后缀)
98+ # 例如接口文件名为 notice.py,则 xxx 应该为 notice
99+ # 如果包含多个接口文件,则应存在多个接口配置
100+ # 路由前缀,必须以 '/' 开头
98101prefix = ' '
99- # 标签,用于 FastAPI 接口文档
102+ # 标签,用于 Swagger 文档
100103tags = ' '
101104```
102105
@@ -116,23 +119,52 @@ fba 内所有官方实现都同时兼容 mysql 和 postgresql,但我们不对
116119
117120- xxx 插件名 <Badge type =" danger " text =" 必须 " />
118121 - api/ 接口 <Badge type =" danger " text =" 必须 " />
119- - crud/ CRUD < Badge type = " warning " text = " 非必须 " />
120- - model 模型 < Badge type = " warning " text = " 非必须 " />
121- - __ init__ .py 在此文件内导入所有模型类 <Badge type =" danger " text =" 必须 " />
122+ - crud/ CRUD
123+ - model 模型
124+ - __ init__ .py 在此文件内导入所有模型类 <Badge type =" danger " text =" 目录存在则必须 " />
122125 - …
123- - schema/ 数据传输 < Badge type = " warning " text = " 非必须 " />
124- - service/ 服务 < Badge type = " warning " text = " 非必须 " />
125- - utils/ 工具包 < Badge type = " warning " text = " 非必须 " />
126+ - schema/ 数据传输
127+ - service/ 服务
128+ - utils/ 工具包
126129 - __ init__ .py 作为 python 包保留 <Badge type =" danger " text =" 必须 " />
127- - … 更多内容,例如 enums.py... < Badge type = " warning " text = " 非必须 " />
130+ - … 更多内容,例如 enums.py...
128131 - plugin.toml 插件配置文件 <Badge type =" danger " text =" 必须 " />
129132 - README.md 插件使用说明和您的联系方式 <Badge type =" danger " text =" 必须 " />
130- - requirements.txt 依赖包文件 < Badge type = " warning " text = " 非必须 " />
133+ - requirements.txt 依赖包文件
131134
132135:::
133136
137+ ::: warning
138+ 非必要情况下,不建议引用架构中的现有方法,如果现有方法变更,则插件也必须同步变更,否则插件将不可用
139+ :::
140+
134141## 前端
135142
136- ::: warning
137- 暂无此计划...
143+ ::: steps
144+
145+ 1 . 拉取最新的 fba_ui 项目到本地并配置好开发环境
146+ 2 . 根据 [ 插件目录结构] ( #插件目录结构-1 ) 进行插件开发
147+ 3 . 完成插件开发
148+
149+ 4 . [ 插件分享] ( ./share.md ) <Badge type =" warning " text =" 可选 " />
150+
138151:::
152+
153+ ### 插件目录结构
154+
155+ 插件统一放置在 ` apps/web-antd/src/plugins ` 目录下,以下是插件的目录结构
156+
157+ ::: file-tree
158+
159+ - xxx 插件名
160+ - api/ 接口
161+ - langs 多语言
162+ - en-US
163+ - 插件名.json
164+ - zh-CN
165+ - 插件名.json
166+ - routes/ 路由
167+ - views/ 视图
168+ - … 更多内容
169+
170+ :::
0 commit comments