mm_machine v1.9.1
mm_machine
这是超级美眉框架机制构建辅助模块,用于快速构建一个机制。本模块提供了一个灵活的机制管理系统,支持动态加载、热更新和模块管理等功能。
特性
- 支持动态加载和卸载模块
- 支持热更新
- 支持模块状态管理
- 灵活的配置系统
- 支持多种运行模式
安装
npm install mm_machine
核心类
Item 类
Item
类是模块的基础类,用于管理单个模块的配置和状态。
构造函数
new Item(dir, dir_base)
参数:
dir
{String} 当前目录dir_base
{String} 模块目录
属性
dir
{String} 当前路径default_file
{String} 默认配置文件路径,默认为 "./sys.json"filename
{String} 当前文件名config
{Object} 配置参数对象name
{String} 模块名称title
{String} 模块标题description
{String} 模块描述func_file
{String} 函数文件路径func_name
{String} 回调函数名sort
{Number} 排序值state
{Number} 状态(0:未启用, 1:启用)show
{Number} 显示状态(0:不显示, 1:显示)
mode
{Number} 运行模式- 1: 生产模式,文件改变不会重新加载
- 2: 热更新模式,文件改变时重新加载
- 3: 重载模式,执行完后重新加载
- 4: 热更新+重载模式
Index 类
Index
类是机制管理的核心类,用于管理多个模块。
构造函数
new Index(scope, dir_base)
参数:
scope
{Object} 作用域dir_base
{String} 模块目录
属性
scope
{String} 作用域list
{Array} 模块列表type
{String} 机制类型sort_key
{String} 排序键名mode
{Number} 运行模式,同 Item 类的 mode
使用示例
基础使用
const { Item, Index } = require('mm_machine');
// 创建自定义驱动类
class Drive extends Item {
constructor(dir, dir_base) {
super(dir, dir_base);
this.default_file = "./demo.json";
}
}
// 创建自定义引擎类
class Engine extends Index {
constructor(scope, dir_base) {
super(scope, dir_base);
this.mode = 0;
this.type = "demo";
}
}
Engine.prototype.Drive = Drive;
// 使用示例
async function demo() {
const engine = new Engine();
// 加载模块
await engine.update("./");
// 执行特定模块的方法
await engine.run('demo1', 'init');
await engine.exec('demo1', 'init');
// 执行所有模块的方法
await engine.run(null, 'main');
await engine.exec(null, 'main');
// 获取特定模块
const plug = engine.get('demo1');
if (plug) {
plug.loadFile(plug.filename);
}
}
模块配置示例
{
"name": "demo1",
"title": "示例脚本1",
"description": "用于测试动态加载、更新、卸载、删除脚本",
"func_file": "./index.js",
"func_name": "",
"sort": 10,
"state": 0,
"show": 0
}
模块实现示例
var i = 0;
function test() {
console.log("你好", i++)
}
function main() {
test();
return i;
}
exports.main = main;
exports.main_before = function() {
console.log("请求前")
}
exports.main_after = async function(ret) {
console.log("请求后", ret)
}
exports.init = function() {
console.log("初始化");
}
高级功能
热更新
系统支持多种运行模式,可以通过设置 mode
属性来控制:
- 生产模式 (mode = 1):文件改变不会触发重新加载
- 热更新模式 (mode = 2):文件改变时自动重新加载
- 重载模式 (mode = 3):执行完后重新加载,避免变量污染
- 热更新+重载模式 (mode = 4):结合了模式2和3的特性
模块生命周期
模块支持以下生命周期方法:
init
: 初始化时调用main
: 主要执行方法main_before
: 主方法执行前的钩子main_after
: 主方法执行后的钩子
模块管理
// 重载模块
engine.reload("demo1");
// 卸载模块
engine.unload("demo2");
// 卸载并删除模块
engine.unload("demo1", true);
依赖
- mm_config: ^1.1.4
- mm_hot_reload: ^1.0.5
许可证
ISC
4 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
6 months ago
7 months ago
3 months ago
7 months ago
4 months ago
7 months ago
7 months ago
7 months ago
4 months ago
4 months ago
4 months ago
7 months ago
7 months ago
4 months ago
7 months ago
4 months ago
7 months ago
4 months ago
9 months ago
9 months ago
9 months ago
9 months ago
11 months ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago