Phone: 158 4018 8888 Email: 407593529@qq.com

插件结构描述

2026-02-25 14:50:22 2

插件开发

插件目录结构

├─niucloud                                     niucloud-admin框架目录
│  ├─addon                                     插件目录
│  │  ├─helloworld                             hello World插件
│  │  │  ├─admin                               admin端口
│  │  │  ├─app                                 app
│  │  │  ├─package                             依赖包,系统安装时会自动安装依赖包
│  │  │  │  ├─admin-package.json               admin端口的依赖包
│  │  │  │  ├─composer.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 插件资源文件

选择样式

选择布局
选择颜色
选择背景
选择背景