mm_os
Version:
这是超级美眉服务端框架,用于快速构建应用程序。
213 lines (207 loc) • 7.12 kB
JavaScript
/**
* @fileOverview {0}
* @author <a href="作者主页地址">插件作者</a>
* @version 1.0
*/
/**
* 插件对象
*/
module.exports = {
/**
* 安装,把插件安装到系统中,在安装时执行
* @param {Object} option 配置参数
* @param {String} option.path 插件安装路径
* @param {Object} option.config 插件配置信息
* @param {String} option.version 插件版本号
* @return {String} 成功返回null,否则返回错误提示。常见错误:路径不存在、版本不兼容、依赖缺失等
*/
install(option) {
var msg = null;
// 此处常用于更新文件和导入数据库等操作。通常为一次操作
return msg;
},
/**
* 加载插件,当脚本被引入时会执行
* @param {Object} option 配置参数
* @return {String} 成功返回null, 否则返回错误提示。常见错误:依赖模块加载失败、模块冲突等
*/
load(option) {
var msg = null;
// 此处通常用于require加载其他相关模块(不在脚本文件中直接require模块,可提高启动速度,可根据插件优先级优先加载模块)
return msg;
},
/**
* 初始化插件,设置全局变量、路由规则和定时任务等
* @param {Object} option 配置参数
* @return {String} 成功返回null, 否则返回错误提示。常见错误:配置格式错误、路由冲突等
*/
init(option) {
var msg = null;
// 此处主要用于重置全局变量和配置,更新路由和更新定时任务等操作
return msg;
},
/**
* 启动插件,开启路由监听和定时任务
* @param {Object} option 配置参数
* @return {String} 成功返回null,否则返回错误提示。常见错误:端口被占用、服务启动超时等
*/
start(option) {
var msg = null;
// 此处主要用于开启路由和定时任务
return msg;
},
/**
* 重启插件,在配置更改或插件更新时执行
* @param {Object} option 配置参数
* @return {String} 成功返回null,否则返回错误提示。常见错误:重启超时、服务未完全停止等
*/
restart(option) {
var msg = null;
this.stop();
this.start();
return msg;
},
/**
* 暂停插件,临时停止路由和定时任务的执行
* @param {Object} option 配置参数
* @return {String} 成功返回null,否则返回错误提示。常见错误:有未完成的任务、停止超时等
*/
stop(option) {
var msg = null;
// 此处主要用于关闭路由和定时任务
return msg;
},
/**
* 结束插件,清理路由、定时任务和连接
* @param {Object} option 配置参数
* @return {String} 成功返回null,否则返回错误提示。常见错误:资源释放失败、清理超时等
*/
end(option) {
var msg = null;
// 主要用于移除注册的路由、 定时任务连接
return msg;
},
/**
* 卸载已加载的模块,释放内存资源
* @param {Object} option 配置参数
* @return {String} 成功返回null,否则返回错误提示。常见错误:模块正在使用、依赖关系阻止卸载等
*/
unload(option) {
var msg = null;
// 主要用于移除加载的模块,释放内存(卸载require的模块,降低系统运行内存)
return msg;
},
/**
* 插件版本更新,包括下载、安装和重启
* @param {Object} option 配置参数
* @return {String} 成功返回null, 否则返回错误提示。常见错误:网络问题、版本冲突、空间不足等
*/
update(option) {
var msg = null;
// 下载最新版本,重新安装、重新加载并初始化,如果本身程序属于启动状态,将重新启动
this.install(option);
if (this.config.state == 1) {
this.load(option);
this.init(option);
this.start(option);
}
return msg;
},
/**
* 卸载插件,完全移除插件及其相关资源
* @param {Object} option 配置参数
* @return {String} 成功返回null,否则返回错误提示。常见错误:文件删除失败、数据库清理失败等
*/
uninstall(option) {
var msg = null;
// 此处从系统中完全删除程序及其所有相关文件和配置。卸载后,该插件不会在系统中留下任何痕迹
return msg;
},
/**
* 配置更新后的处理函数
* @param {Object} options 更新后的配置对象
*/
update_options_after(options) {
if (this.config.state) {
this.restart();
}
},
/**
* 获取插件使用帮助信息
* @param {String} item 查询的功能项,如"install"、"api"等
* @return {Object} 返回帮助信息对象
* @example
* // 获取安装相关帮助
* help("install")
* // 返回: {title: "安装说明", steps: ["步骤1...", "步骤2..."], examples: [...]}
*/
help(item) {
var tip = "";
switch (item) {
case "run":
break;
default:
break;
}
return tip;
},
/**
* 插件主程序,处理核心业务逻辑
* @param {Object} param1 业务参数对象
* @param {Object} param2 配置参数对象
* @return {Object} 返回执行结果对象 {code: 0, msg: "success", data: {}}
* @example
* main({action: "process", data: {id: 1}}, {options: {async: true}})
* // 返回: {code: 0, msg: "处理成功", data: {result: "..."}}
*/
main(param1, param2) {
var ret = null;
return ret;
},
/**
* 执行命令行指令
* @param {String} content 指令内容,格式为"命令 参数1 参数2..."
* @return {String} 执行结果文本
* @example
* cmd("status --detail")
* // 返回: "运行状态: 正常\n内存使用: 80MB\n已运行时间: 2h"
*/
cmd(content) {
var ret = "";
return ret;
},
/**
* 插件API接口,供其他插件调用
* @param {Object} ctx HTTP上下文对象
* @param {String} ctx.method 请求方法
* @param {Object} ctx.query 查询参数
* @param {Object} ctx.body 请求体数据
* @param {Object} db 数据库管理器实例
* @return {Object} 返回API执行结果 {code: 200, data: {}, msg: ""}
* @example
* api({method: "GET", query: {id: 1}}, db)
* // 返回: {code: 200, data: {name: "test"}, msg: "success"}
*/
api(ctx, db) {
var ret = "";
return ret;
},
/**
* 聊天消息处理函数,用于机器人开发
* @param {String} from_user 发送消息用户的唯一标识
* @param {String} to_user 接收消息用户的唯一标识
* @param {String} content 消息内容
* @param {String} group 群组ID,个人聊天时为空
* @param {Number} type 会话类型: 1-永久会话/群、2-临时会话/群
* @param {String} msg_type 消息类型: event-事件消息、message-普通消息(默认)
* @param {Object} db 数据管理器实例
* @return {String} 回复消息内容
* @example
* chat("user1", "user2", "你好", "", 1, "message", db)
* // 返回: "你好,我是智能助手,有什么可以帮你的吗?"
*/
async chat(from_user, to_user, group, content, type, msg_type, db) {
var ret = "";
return ret;
}
};