[comment]: # aside: 2

[comment]: # ({f9b7e108-12a4ad08})
# 模块

[comment]: # ({/f9b7e108-12a4ad08})

[comment]: # ({d4a488b3-f1b884d6})
### 什么是 PHP 前端模块？

-   模块是一个具有唯一ID、名称、描述、作者以及其他在清单文件中定义的字段的实体，同时包含位于Zabbix前端安装目录中的*modules*目录下单个文件夹内的PHP、JavaScript和其他文件（例如，*zabbix/ui/modules*）。
-   模块应遵循简单的规则以确保正确运行。
-   模块必须由管理员在前端安装（解压）并启用。

[comment]: # ({/d4a488b3-f1b884d6})

[comment]: # ({05b693b4-4e4bad2b})
### 一个模块的用途

-   通过自定义前端部分添加新功能；
-   创建自定义仪表板小工具get类型（参见[widget modules](/devel/modules/widgets)）；
-   覆盖或扩展现有功能。

[comment]: # ({/05b693b4-4e4bad2b})

[comment]: # ({ec03fb13-064ddd80})
### 模块不可用于的情况

-   注册新的 API 方法或修改现有方法。

[comment]: # ({/ec03fb13-064ddd80})

[comment]: # ({bacf43f1-bfe0360a})
### 模块的工作原理

-   启用的模块会在每次HTTP请求时被启动，且在执行动作代码之前启动。
-   该模块将注册新的动作或重新定义已有的动作。
-   该模块将添加新的前端部分，并删除或重新定义已有的前端部分。
-   该模块将在必要时挂钩到前端事件，例如 onBeforeAction 和 onTerminate。
-   最终通过执行动作代码来运行所请求的动作 —— 该代码可以是默认的，也可以由模块定义。

[comment]: # ({/bacf43f1-bfe0360a})

[comment]: # ({501a7539-7aea12f6})
### 下一步前往何处

无论您是更喜欢通过实践学习还是先阅读指南，这些页面包含了构建自己的模块所需的信息和步骤：

- [Step-by-step tutorials for writing your first module](/devel/modules/tutorials)
- [Module file structure](/devel/modules/file_structure)
- [Widget module specifics](/devel/modules/widgets)
- [Module examples to reuse](/devel/modules/examples)

[comment]: # ({/501a7539-7aea12f6})
