# 插件開發
插件目錄結構
```
├─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開發
- 菜單語言包