# 插件开发
插件目录结构
```
├─niucloud niucloud-admin框架目录
│ ├─addon 插件目录
│ │ ├─helloworld hello World插件
│ │ │ ├─admin admin端口
│ │ │ ├─app app
│ │ │ ├─package 依赖包,系统安装时会自动安装依赖包
│ │ │ │ ├─admin-package.json admin端口的依赖包
│ │ │ │ ├─composer-package.json 主应用依赖包
│ │ │ │ ├─uni-app-package.json uni-app端依赖包
│ │ │ │ ├─uni-app-pages.php uni-app端口页面文件
│ │ │ │ ├─web-package.json web前端依赖包
│ │ │ ├─resource 插件资源文件
│ │ │ ├─sql 插件的sql文件夹
│ │ │ │ ├─install.sql 插件安装时会自动调用执行
│ │ │ │ ├─unInstall.sql 插件卸载时会自动调用执行
│ │ │ ├─uni-app uni-app端口
│ │ │ ├─HelloWorld.php 插件主安装、卸载、更新时自动调用相关函数
│ │ │ ├─info.json 插件的配置文件
│ │ ├─myctl myctl插件
│ │ ├─... 其他插件
│ ├─app 主应用目录
```
### 开发插件步骤
1. 建立插件文件目录
我们要在niucloud\addon\ 建立插件的目录。这个目录要注意一般带有自己公司或者厂家的前缀或者后缀,防止和别人开发的同名插件冲突。
插件目录结构几乎和app的目录结构相同,这样,同样的配置文件config、数据字典dict、前后端端口,基本可以参照app目录结构来建立。
### **info.json 插件的配置文件**
title 插件的标题
desc 插件描述
key 插件关键字
version 插件版本号
author 插件作者
url 开发者网址
type 插件类型 默认值为"addon",一般不做修改
support_app 插件支持的应用,为空或省略时表示该插件支持任何应用安装。如果制定插件名称,只能指定应用安装
```
{
"title": "hello world",
"desc": "Niucloud hello world演示插件",
"key": "hello_world",
"version": "1.0.1",
"author": "niucloud",
"url": "https://www.niucloud.com",
"type": "addon",
"support_app": "niucloud"
}
```
### **HelloWorld.php 插件程序**
每个插件都需要自己实现install, unstall, upgrade 方法。
```
class HelloWorld
{
/**
* 插件安装执行
*/
public function install()
{
return true;
}
/**
* 插件卸载执行
*/
public function uninstall()
{
return true;
}
/**
* 插件升级执行
*/
public function upgrade()
{
return true;
}
}
```
### **install.sql**
```
CREATE TABLE IF NOT EXISTS `{{prefix}}hello_world` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL DEFAULT '' COMMENT '名称',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='演示插件表';
INSERT INTO `{{prefix}}hello_world`(`id`, `name`) VALUES (1, '名称');
```
### **unInstall.sql**
```
DROP TABLE IF EXISTS `{{prefix}}hello_world`;
```
### **resource 插件资源文件**
- 写给程序员的一封信
- 源码下载
- 安装部署
- 环境要求
- 安装视频教程
- 本地安装部署教程
- 二次开发安装视频教程
- 宝塔部署
- 授权绑定
- 二次开发须知
- 技术栈
- 目录结构
- 命名规范
- 二次开发指导
- 二次开发环境搭建步骤
- 二次开发注意事项
- 单站和Saas模式开发
- 插件结构描述
- MENU开发
- DIY组件/页面开发
- 自定义手机端DIY装修页面
- Route 路由处理
- Services中的core文件夹
- 自定义站点管理端控制台页面样式
- 调用素材资源
- Resource资源文件
- 引入图标ICON
- SMS发送短信开发
- Job 计划任务
- 计划任务启动
- 计划任务开发
- 生产环境编译打包处理步骤
- 生产环境搭建步骤
- 插件安装时npm,composer检测不可用问题处理
- 上传图片大小限制
- 插件uniapp开发
- 菜单语言包