1. 后端处理服务器API
1.1  数据库结构
1.2  后端处理服务器HTTP 接口
1.3. 数据包
1.3.1  数据包的基本信息
1.3.2  所有数据包
2. 后端处理服务器应用集成API
2.1  设置应用集成
2.2  API 格式和签名机制
2.3  API 定义
3. 客户端扩展机制
3.1. 扩展定义
3.1.1  扩展类型
3.1.2  扩展包目录结构
3.1.3  扩展描述文件
3.2. 扩展模块
3.2.1  主入口模块
3.2.2. 扩展模块API
3.2.2.1  扩展 API 概览
3.2.2.2  扩展 API 权限
3.2.2.3  扩展 API 定义
3.2.3  扩展实例对象
3.2.4  数据存储机制
3.2.5  自定义上下文菜单
3.2.6  自定义命令
3.2.7  自定义网址解析
3.3. 开发扩展
3.3.1  载入开发中的扩展
3.3.2  开发应用扩展
3.3.3  开发插件扩展
3.3.4  开发主题扩展
3.4  内置扩展
3.5  分发扩展
4. 会话机器人开发指南
4.1  机器人应用开发

扩展描述文件

2020-08-11 10:53:13
孙浩
10687
最后编辑:孙浩 于 2020-08-11 10:56:50
分享链接

扩展描述文件是一个扩展必须提供的文件,用来描述一个扩展的名称、类型及其他关键信息。喧喧的扩展描述文件文件名为 package.json,兼容 npm 包管理器中的 package.json 文件格式

一个最简单的应用扩展仅需要在扩展包中包含描述文件即可实现。以下为扩展描述文件中支持的配置项目:

{
    // 扩展的名称,扩展名称只能包含字母、数字、短横线及下划线,且第一个字符必须为字母
    // 扩展的名称必须唯一,相同名称的扩展会提示覆盖或升级,为避免与其他扩展发生冲突,也可以使用 guid 做为扩展名称
    "name": "simple-extension",
    // 扩展在界面上显示的名称
    "displayName": "简单扩展",
    // 扩展的介绍文本
    "description": "这是一个简单扩展的例子。",
    // 扩展的版本
    "version": "1.0.0",
    // 扩展开发的作者
    "author": "Catouse",
    // 扩展的发布者
    "publisher": "易软天创",
    // 扩展许可协议类型
    "license": "MIT",
    // 扩展主页
    "homepage": "http://xuan.im/extensions",
    // 扩展配置对象
    "xext": {
        // 扩展类型,目前支持的类型包括:
        //   * app    -  应用扩展
        //   * plugin -  插件扩展
        //   * theme  -  主题扩展
        "type": "app",
        // 扩展图标,可以使用如下值
        //   * 使用 Material Design Icons (https://materialdesignicons.com/),使用 mdi- 前缀,例如 mdi-star
        //   * 使用 http:// 或 https:// 协议开头图片地址,例如 http://zui.sexy/img/icon.png
        //   * 使用相对扩展包目录的相对地址,例如 img/icon.png
        // 需要注意:
        //   * 当扩展类型为 app 时,如果不指定则会使用应用图标(appIcon)
        //   * 如果使用图片作为扩展图标,确保作为图标的图片长宽比例为1:1(正方形图片),并且大小不小于 512x512
        "icon": "mdi-star",
        // 扩展主要颜色,可能被用到自动生成的图标上或作为部分界面背景
        "accentColor": "#aa00ff",
        // 针对扩展类型 app - 应用界面类型
        // 可选值包括:
        //   * insideView:提供 React 组件作为界面视图
        //   * webView:完整的网页视图
        //   * browser: 使用用户默认浏览器打开
        //   * custom:当用户点击应用图标时执行自定义操作
        "appType": "insideView",
        // 当 appType 为 webView 时加载的页面地址,可以包含以下格式的地址:
        //   * 使用 http:// 或 https:// 协议开头的网站页面地址,例如 http://zui.sexy/m
        //   * 使用相对扩展包目录的相对地址,通常指向一个 html 文件,例如 lib/page/index.html
        "webViewUrl": "http://zui.sexy/m",
        // 当 appType 为 webView 时,指定一个脚本在 webview 页面中其他脚本执行之前先加载,此脚本必须为扩展包内的 JavaScript 文件。
        "webViewPreloadScript": "lib/preload.js",
        // 针对扩展类型 app - 应用图标,可以使用如下值
        //   * 使用 Material Design Icons (https://materialdesignicons.com/),使用 mdi- 前缀,例如 mdi-star
        //   * 使用 http:// 或 https:// 协议开头图片地址,例如 http://zui.sexy/img/icon.png
        //   * 使用相对扩展包目录的相对地址,例如 img/icon.png
        // 需要注意:
        //   * 如果不指定则会使用扩展图标(icon)作为应用图标
        //   * 如果使用图片作为应用图标,确保作为图标的图片长宽比例为1:1(正方形),并且大小不小于 512x512
        "appIcon": "mdi-star",
        // 针对扩展类型 app - 应用配色,可能被用到图标上,如果不指定会使用扩展的 accentColor
        "appAccentColor": "#aa00ff",
        // 针对扩展类型 app - 界面背景色,可以设置为透明(transparent),默认为白色 #fff
        "appBackColor": "#fff",
        // 针对扩展类型 app - 是否允许用户将应用图标固定在窗口菜单上,可选值包括:
        //   * true,表示默认即将应用图标固定在菜单上;
        //   * false,不允许将应用图标固定在菜单上;
        //   * 'auto',默认不固定在菜单上,但允许用户自己设置;
        //   * 'fixed',将应用图标固定在菜单上且不允许用户更改此设置(此选项仅对远程扩展或者内置扩展有效,否则与 true 相同);
        //   * 'main-fixed',将应用图标固定在主导航菜单上且不允许用户更改此设置(此选项仅对远程扩展或者内置扩展有效,否则与 true 相同);
        "pinnedOnMenu": "auto",
        // 针对扩展类型 app - 当将应用图标固定在窗口菜单上时的顺序,数值越小越靠前
        "pinnedOnMenuOrder": 100,
        // 针对扩展类型 app - 应用在菜单上显示的图标,可以使用如下值
        //   * 使用 Material Design Icons (https://materialdesignicons.com/),使用 mdi- 前缀,例如 mdi-star
        //   * 使用 http:// 或 https:// 协议开头图片地址,例如 http://zui.sexy/img/icon.png
        //   * 使用相对扩展包目录的相对地址,例如 img/icon.png
        // 需要注意:
        //   * 如果不指定则会使用应用图标(icon)作为应用图标
        //   * 如果使用图片作为应用图标,确保作为图标的图片长宽比例为1:1(正方形),并且大小不小于 256x256
        "menuIcon": "mdi-star",
        // 针对扩展类型 plugin 或 app - 模块主要入口脚本文件位置,可以包含以下格式的地址:
        //   * 使用相对扩展包目录的相对地址,例如 lib/index.js
        // 当扩展类型为 plugin 时会自动从扩展包目录下寻找 index.js 文件作为模块主入口文件,如果符合此种情况则可以忽略此字段
        "main": "lib/index.js",
        // 是否允许热加载扩展,默认值为 false,如果设置为 true,则安装扩展后无需重启就能使用
        "hot": false,
        // 扩展分组,使用一个字符串指定扩展所属的分组
        // 仅当运行时配置项 `ui.exts.categories` 启用时生效
        // 当 `ui.exts.categories` 值为 `true` 时,此属性即为分组在界面上显示的名称
        // 当 `ui.exts.categories` 为分组信息表(例如 `{office: {label: "办公", order: 1}, game: {label: "游戏", order: 2}}`)或分组信息清单(例如 `[{name: "office", label: "办公", order: 1}, {name: "game", label: "游戏", order: 2}]`)时,此属性应该为分组的内部名称,而不是显示名称,因为显示名称会在 `ui.exts.categories` 中指定
        "category": "office",
        // 针对扩展类型 theme - 主题列表
        // 通过一个对象数组,声明多个主题配置
        "themes": [
            {
                // 主题内部名称
                "name": "dark",
                // 主题的描述文本,可能会在界面上显示
                "description": "这是一个暗黑主题",
                // 主题显示名称
                "displayName": "暗色",
                // 主题 CSS 文件位置,可以是相对包的路径或者一个可访问的网址
                "style": "lib/themes/dark.css",
                // 主题的主要颜色
                "color": "#ff00f1",
                // 主题载入方式,可取值包括:
                //   * append   在默认样式的基础上附加样式
                //   * override 替代默认样式
                "inject": "override",
                // 主题的预览图片地址
                "preview": "lib/themes/preview-dark.png"
            },
            // ... 其他主题配置对象
        ],
        // 申明扩展需要访问的 API
        "usePermissions": [
            "@L2",
            "members",
            "contextmenu.showContextMenu",
            "-members.getDeptsTree"
        ]
    },
    // 扩展要求的运行环境
    "engines": {
        // 扩展对喧喧版本的支持
        "xuanxuan": "^${version}",
        // 扩展所支持的平台
        "platform": "electron,nwjs",
        // 扩展所依赖的其他扩展
        "extensions": [],
    },
    // 扩展关键字,可以用于搜索
    "keywords": ["xuanxuan", "im", "extension", "sample"],
    // Bugs 反馈页面
    "bugs": {
      "url": "https://github.com/easysoft/xuanxuan/issues"
    },
    // 代码库地址
    "repository": {
        "url": "https://github.com/easysoft/xuanxuan/",
        "type": "git"
    },
    // ...兼容其他 npm package.json 属性
}
发表评论
评论通过审核后显示。
联系我们
公众号