1.9.1 • Published 7 months ago

mm_machine v1.9.1

Weekly downloads
5
License
ISC
Repository
github
Last release
7 months ago

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 属性来控制:

  1. 生产模式 (mode = 1):文件改变不会触发重新加载
  2. 热更新模式 (mode = 2):文件改变时自动重新加载
  3. 重载模式 (mode = 3):执行完后重新加载,避免变量污染
  4. 热更新+重载模式 (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

1.8.2

7 months ago

1.8.1

10 months ago

1.8.0

10 months ago

1.7.9

10 months ago

1.7.8

10 months ago

1.7.7

10 months ago

1.7.6

10 months ago

1.7.5

10 months ago

1.7.4

10 months ago

1.9.1

7 months ago

1.7.3

11 months ago

1.9.0

7 months ago

1.7.2

11 months ago

1.7.1

11 months ago

1.7.0

11 months ago

1.8.9

7 months ago

1.8.8

7 months ago

1.8.7

7 months ago

1.6.9

11 months ago

1.6.8

11 months ago

1.8.5

7 months ago

1.6.7

11 months ago

1.8.4

7 months ago

1.6.6

11 months ago

1.8.3

7 months ago

1.6.4

1 year ago

1.6.3

1 year ago

1.6.2

1 year ago

1.6.5

1 year ago

1.6.1

1 year ago

1.6.0

2 years ago

1.5.8

2 years ago

1.5.5

2 years ago

1.5.7

2 years ago

1.5.6

2 years ago

1.4.6

3 years ago

1.5.4

3 years ago

1.4.5

3 years ago

1.5.3

3 years ago

1.4.4

3 years ago

1.5.2

3 years ago

1.5.1

3 years ago

1.5.0

3 years ago

1.4.9

3 years ago

1.4.8

3 years ago

1.4.7

3 years ago

1.4.3

5 years ago

1.4.2

5 years ago

1.4.1

5 years ago

1.3.9

5 years ago

1.3.7

5 years ago

1.3.6

6 years ago

1.3.5

6 years ago

1.3.4

6 years ago

1.3.3

6 years ago

1.3.2

6 years ago

1.3.1

6 years ago

1.3.0

6 years ago

1.2.9

6 years ago

1.2.8

6 years ago

1.2.7

6 years ago

1.2.6

6 years ago

1.2.5

6 years ago

1.2.4

6 years ago

1.2.3

6 years ago

1.2.2

6 years ago

1.2.1

6 years ago

1.2.0

6 years ago