当 使用 CLI 生成器创建插件 时,Strapi 会在 ./src/plugins/my-plugin
文件夹中为您生成以下样板结构:
bash
. # 插件文件夹的根目录(例如,/src/plugins/my-plugin)
├── admin # 插件的管理面板部分。
│ └── src
│ ├── components # 包含前端组件
│ │ ├── Initializer
│ │ │ └── index.js # 插件初始化程序
│ │ └── PluginIcon
│ │ └── index.js # 包含主导航中插件的图标
│ ├── pages # 包含插件的页面
│ │ ├── App
│ │ │ └── index.js # 实际页面的骨架
│ │ └── HomePage
│ │ └── index.js # 插件的主页
│ ├── translations # 翻译文件,使插件支持 i18n
│ │ ├── en.json
│ │ └── fr.json
│ └── utils
│ │ └── getTrad.js # getTrad 函数返回相应的插件翻译
│ ├── index.js # 插件的主要设置,用于在管理面板中注册元素
│ └── pluginId.js # 根据 package.json 名称计算的 pluginId 变量
├── node_modules
├── server # 插件的后端部分
│ ├── config
│ │ └── index.js # 包含默认服务器配置
│ ├── content-types # 特定于插件的内容类型
│ │ └── index.js # 加载插件的所有内容类型
│ ├── controllers # 特定于插件的控制器
│ │ ├── index.js # 加载所有插件的控制器
│ │ └── my-controller.js # 自定义控制器示例。您可以重命名或删除它。
│ ├── middlewares # 特定于您的插件的中间件
│ │ └── index.js # 加载所有插件的中间件
│ ├── policies # 特定于您的插件的策略
│ │ └── index.js # 加载所有插件的策略
│ ├── routes # 特定于您的插件的路由
│ │ └── index.js # 包含 my-controller 自定义控制器示例的示例路由
│ └── services # 特定于您的插件的服务
│ │ ├── index.js # 加载所有插件的服务
│ │ └── my-service.js # 自定义服务示例。您可以重命名或删除它。
│ ├── bootstrap.js # 插件注册后立即调用的函数
│ ├── destroy.js # Strapi 实例销毁后调用以清理插件的函数
│ ├── index.js # 加载所有服务器元素的代码
│ └── register.js # 在引导之前调用以加载插件的函数。
├── package.json
├── README.md
├── strapi-admin.js # 管理面板的入口点(前端)
└── strapi-server.js # 服务器的入口点(后端)
Strapi 插件分为 2 个部分,每个部分位于不同的文件夹中并提供不同的 API:
插件部分 | 说明 | 文件夹 | API |
---|---|---|---|
管理面板 | 包括 管理面板 中可见的内容(组件、导航、设置等) | /admin | 管理面板 API |
后端服务器 | 包括与 后端服务器 相关的内容(内容类型、控制器、中间件等) | /server | 服务器 API |
- 仅限服务器的插件:您可以创建一个仅使用服务器部分的插件来增强应用程序的 API。例如,此插件可以具有自己的可见或不可见的内容类型、控制器操作和路由,这些对于特定用例很有用。在这种情况下,您不需要您的插件在管理面板中有一个界面。
- 管理面板插件与特定于应用程序的自定义:您可以创建一个插件来将一些组件注入管理面板。但是,您也可以通过创建
./src/admin/app.js
文件并调用bootstrap
生命周期函数来注入您的组件来实现这一点。在这种情况下,决定是否创建插件取决于您是否计划重用和分发代码,或者它是否仅适用于独特的 Strapi 应用程序。