@@ -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