mm_machine 2.1.5 → 2.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/item.js +1 -1
- package/package.json +18 -30
- package/.gitattributes +0 -5
- package/.prettierrc +0 -8
- package/app/test1/config_demo.json +0 -10
- package/app/test1/demo.json +0 -10
- package/app/test1/index.js +0 -63
- package/app/test2/after.js +0 -13
- package/app/test2/config_demo.json +0 -10
- package/app/test2/demo.json +0 -10
- package/app/test2/index.js +0 -16
- package/app/test2/main.js +0 -36
- package/debug_config.js +0 -37
- package/debug_detailed.js +0 -75
- package/debug_test.js +0 -65
- package/demo/test1/config_demo.json +0 -34
- package/demo/test1/demo.json +0 -34
- package/demo/test1/index.js +0 -33
- package/demo/test2/after.js +0 -15
- package/demo/test2/config_demo.json +0 -70
- package/demo/test2/demo.json +0 -70
- package/demo/test2/index.js +0 -34
- package/demo/test2/main.js +0 -16
- package/demo2/test1/demo.json +0 -34
- package/demo2/test1/index.js +0 -33
- package/demo2/test2/after.js +0 -15
- package/demo2/test2/demo.json +0 -70
- package/demo2/test2/main.js +0 -16
- package/eslint.config.js +0 -209
- package/methods_documentation.md +0 -225
- package/nodemon.json +0 -25
- package/test.js +0 -151
- package/test_easy.js +0 -52
package/item.js
CHANGED
|
@@ -92,7 +92,7 @@ class Item {
|
|
|
92
92
|
* @param {...*} args - 可选参数
|
|
93
93
|
*/
|
|
94
94
|
Item.prototype.log = function (level, message, ...args) {
|
|
95
|
-
this._logger[level](`[${this.config.name}] ${message}`, ...args);
|
|
95
|
+
this._logger[level](`[${this.constructor.name}] [${this.config.name}] ${message}`, ...args);
|
|
96
96
|
};
|
|
97
97
|
|
|
98
98
|
/**
|
package/package.json
CHANGED
|
@@ -1,49 +1,37 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mm_machine",
|
|
3
|
-
"version": "2.1.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "2.1.6",
|
|
4
|
+
"description": "A flexible Node.js plugin mechanism system for dynamic loading, management and execution of modules. Supports hot reload, lifecycle management, and modern JavaScript features.",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"scripts": {
|
|
7
|
-
"test": "node ./test.js"
|
|
8
|
-
"dev": "nodemon ./test.js",
|
|
9
|
-
"lint": "eslint .",
|
|
10
|
-
"lint:fix": "eslint . --fix",
|
|
11
|
-
"format": "prettier --write .",
|
|
12
|
-
"format:check": "prettier --check ."
|
|
7
|
+
"test": "node ./test.js"
|
|
13
8
|
},
|
|
14
9
|
"repository": {
|
|
15
10
|
"type": "git",
|
|
16
11
|
"url": "git+https://gitee.com/qiuwenwu91/mm_machine.git"
|
|
17
12
|
},
|
|
18
13
|
"keywords": [
|
|
19
|
-
"
|
|
20
|
-
"com",
|
|
21
|
-
"run",
|
|
22
|
-
"cmd",
|
|
23
|
-
"load",
|
|
24
|
-
"save",
|
|
25
|
-
"get",
|
|
26
|
-
"set",
|
|
27
|
-
"add",
|
|
28
|
-
"del",
|
|
29
|
-
"hot-reload",
|
|
14
|
+
"plugin-system",
|
|
30
15
|
"module-management",
|
|
31
|
-
"
|
|
16
|
+
"hot-reload",
|
|
17
|
+
"dynamic-loading",
|
|
18
|
+
"nodejs",
|
|
19
|
+
"javascript",
|
|
20
|
+
"framework",
|
|
21
|
+
"mechanism"
|
|
32
22
|
],
|
|
33
23
|
"author": "邱文武",
|
|
34
24
|
"license": "ISC",
|
|
35
|
-
"
|
|
36
|
-
"
|
|
25
|
+
"engines": {
|
|
26
|
+
"node": ">=12.0.0"
|
|
37
27
|
},
|
|
38
|
-
"
|
|
28
|
+
"files": [
|
|
29
|
+
"index.js",
|
|
30
|
+
"item.js",
|
|
31
|
+
"README.md"
|
|
32
|
+
],
|
|
39
33
|
"dependencies": {
|
|
40
34
|
"mm_config": "^2.2.3",
|
|
41
|
-
"mm_hot_reload": "^1.
|
|
42
|
-
},
|
|
43
|
-
"devDependencies": {
|
|
44
|
-
"eslint": "^9.39.2",
|
|
45
|
-
"eslint-plugin-jsdoc": "^62.5.0",
|
|
46
|
-
"mm_eslint": "^1.6.3",
|
|
47
|
-
"prettier": "^3.8.1"
|
|
35
|
+
"mm_hot_reload": "^1.2.0"
|
|
48
36
|
}
|
|
49
37
|
}
|
package/.gitattributes
DELETED
package/.prettierrc
DELETED
package/app/test1/demo.json
DELETED
package/app/test1/index.js
DELETED
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 计数器变量
|
|
3
|
-
* @type {number}
|
|
4
|
-
*/
|
|
5
|
-
var counter = 200;
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* 测试函数
|
|
9
|
-
* @private
|
|
10
|
-
*/
|
|
11
|
-
function _test() {
|
|
12
|
-
console.log('测试模块1执行', counter++);
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* 主函数
|
|
17
|
-
* @returns {object} 返回执行结果
|
|
18
|
-
* @returns {string} return.message - 消息内容
|
|
19
|
-
* @returns {number} return.value - 计数器值
|
|
20
|
-
*/
|
|
21
|
-
function main() {
|
|
22
|
-
_test();
|
|
23
|
-
return { message: '测试模块1返回', value: counter };
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
exports.main = main;
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* 主函数执行前的钩子函数
|
|
30
|
-
* @returns {void}
|
|
31
|
-
*/
|
|
32
|
-
exports.main_before = function () {
|
|
33
|
-
console.log('测试模块1前置钩子');
|
|
34
|
-
};
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* 主函数执行后的钩子函数
|
|
38
|
-
* @param {object} ret - 主函数返回值
|
|
39
|
-
* @param {string} ret.message - 消息内容
|
|
40
|
-
* @param {number} ret.value - 计数器值
|
|
41
|
-
* @returns {Promise<void>}
|
|
42
|
-
*/
|
|
43
|
-
exports.main_after = async function (ret) {
|
|
44
|
-
console.log('测试模块1后置钩子', ret);
|
|
45
|
-
};
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* 模块加载时的钩子函数
|
|
49
|
-
* @returns {void}
|
|
50
|
-
*/
|
|
51
|
-
exports.load = function () {
|
|
52
|
-
console.log('加载测试模块1');
|
|
53
|
-
};
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
* 模块初始化时的钩子函数
|
|
57
|
-
* @returns {void}
|
|
58
|
-
*/
|
|
59
|
-
exports.init = function () {
|
|
60
|
-
console.log('初始化测试模块1');
|
|
61
|
-
};
|
|
62
|
-
|
|
63
|
-
console.log('测试模块1被引用');
|
package/app/test2/after.js
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 主函数执行后的钩子函数
|
|
3
|
-
* @param {object} ret - 主函数返回值
|
|
4
|
-
* @param {string} ret.result - 执行结果
|
|
5
|
-
* @param {number} ret.count - 计数器值
|
|
6
|
-
* @returns {object} 返回处理后的结果
|
|
7
|
-
*/
|
|
8
|
-
exports.main_after = function (ret) {
|
|
9
|
-
console.log('测试模块2后置处理', ret);
|
|
10
|
-
return ret;
|
|
11
|
-
};
|
|
12
|
-
|
|
13
|
-
console.log('测试模块2后置处理文件已加载');
|
package/app/test2/demo.json
DELETED
package/app/test2/index.js
DELETED
package/app/test2/main.js
DELETED
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 计数器变量
|
|
3
|
-
* @type {number}
|
|
4
|
-
*/
|
|
5
|
-
var count = 0;
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* 主函数
|
|
9
|
-
* @returns {object} 返回执行结果
|
|
10
|
-
* @returns {string} return.result - 执行结果
|
|
11
|
-
* @returns {number} return.count - 计数器值
|
|
12
|
-
*/
|
|
13
|
-
function main() {
|
|
14
|
-
console.log('测试模块2执行', count++);
|
|
15
|
-
return { result: '测试模块2结果', count: count };
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
exports.main = main;
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* 模块加载时的钩子函数
|
|
22
|
-
* @returns {void}
|
|
23
|
-
*/
|
|
24
|
-
exports.load = function () {
|
|
25
|
-
console.log('加载测试模块2');
|
|
26
|
-
};
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* 模块初始化时的钩子函数
|
|
30
|
-
* @returns {void}
|
|
31
|
-
*/
|
|
32
|
-
exports.init = function () {
|
|
33
|
-
console.log('初始化测试模块2');
|
|
34
|
-
};
|
|
35
|
-
|
|
36
|
-
console.log('测试模块2被引用');
|
package/debug_config.js
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
const { conf } = require('mm_config');
|
|
2
|
-
|
|
3
|
-
async function testConfigMerge() {
|
|
4
|
-
console.log('=== 测试配置合并 ===');
|
|
5
|
-
|
|
6
|
-
const base_config = {
|
|
7
|
-
name: 'test',
|
|
8
|
-
sort: 10,
|
|
9
|
-
state: 1,
|
|
10
|
-
show: 0
|
|
11
|
-
};
|
|
12
|
-
|
|
13
|
-
const new_config = {
|
|
14
|
-
name: 'test1',
|
|
15
|
-
sort: 10,
|
|
16
|
-
state: 1,
|
|
17
|
-
show: 1,
|
|
18
|
-
SORT: 10,
|
|
19
|
-
STATE: 1,
|
|
20
|
-
SHOW: 0
|
|
21
|
-
};
|
|
22
|
-
|
|
23
|
-
console.log('基础配置:', base_config);
|
|
24
|
-
console.log('新配置:', new_config);
|
|
25
|
-
|
|
26
|
-
// 测试conf函数
|
|
27
|
-
const result = await conf({ ...base_config, ...new_config }, 'test.json');
|
|
28
|
-
console.log('conf合并结果:', result);
|
|
29
|
-
|
|
30
|
-
// 测试普通合并
|
|
31
|
-
const normal_merge = { ...base_config, ...new_config };
|
|
32
|
-
console.log('普通合并结果:', normal_merge);
|
|
33
|
-
|
|
34
|
-
console.log('=== 测试结束 ===');
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
testConfigMerge().catch(console.error);
|
package/debug_detailed.js
DELETED
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
const { Item, Index } = require('./index.js');
|
|
2
|
-
|
|
3
|
-
class Drive extends Item {
|
|
4
|
-
constructor(dir, dir_base) {
|
|
5
|
-
super(dir, dir_base);
|
|
6
|
-
this.default_file = './demo.json';
|
|
7
|
-
}
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
class Engine extends Index {
|
|
11
|
-
constructor(scope, dir_base) {
|
|
12
|
-
super(scope, dir_base);
|
|
13
|
-
this.mode = 1; // 生产模式
|
|
14
|
-
this.type = 'demo';
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
Engine.prototype.Drive = Drive;
|
|
19
|
-
|
|
20
|
-
async function debugDetailed() {
|
|
21
|
-
console.log('=== 详细调试 ===');
|
|
22
|
-
|
|
23
|
-
// 检查全局对象
|
|
24
|
-
console.log('1. 检查全局对象 $:', typeof global.$ !== 'undefined');
|
|
25
|
-
console.log('$.mod:', typeof $.mod !== 'undefined' ? '已定义' : '未定义');
|
|
26
|
-
console.log('$.loadJson:', typeof $.loadJson === 'function' ? '已定义' : '未定义');
|
|
27
|
-
|
|
28
|
-
// 检查文件路径方法
|
|
29
|
-
const test_file = './app/test1/demo.json'.fullname(__dirname);
|
|
30
|
-
console.log('2. 检查文件路径方法:');
|
|
31
|
-
console.log('文件路径:', test_file);
|
|
32
|
-
console.log('文件存在:', test_file.hasFile ? test_file.hasFile() : 'hasFile方法不存在');
|
|
33
|
-
|
|
34
|
-
// 检查文件加载
|
|
35
|
-
console.log('3. 检查文件加载:');
|
|
36
|
-
try {
|
|
37
|
-
const json_content = test_file.loadJson ? test_file.loadJson() : 'loadJson方法不存在';
|
|
38
|
-
console.log('文件内容:', json_content);
|
|
39
|
-
} catch (err) {
|
|
40
|
-
console.log('文件加载错误:', err.message);
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
// 检查$.loadJson
|
|
44
|
-
console.log('4. 检查$.loadJson:');
|
|
45
|
-
try {
|
|
46
|
-
const json_content2 = $.loadJson ? $.loadJson(test_file) : '$.loadJson不存在';
|
|
47
|
-
console.log('$.loadJson结果:', json_content2);
|
|
48
|
-
} catch (err) {
|
|
49
|
-
console.log('$.loadJson错误:', err.message);
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
// 创建引擎测试
|
|
53
|
-
console.log('\n5. 创建引擎测试:');
|
|
54
|
-
var engine = new Engine('sys', __dirname);
|
|
55
|
-
|
|
56
|
-
// 测试单个文件加载
|
|
57
|
-
console.log('6. 测试文件加载:');
|
|
58
|
-
try {
|
|
59
|
-
const result = await engine.loadFile(test_file, true);
|
|
60
|
-
console.log('loadFile结果:', result);
|
|
61
|
-
console.log('模块列表长度:', engine.list.length);
|
|
62
|
-
|
|
63
|
-
if (engine.list.length > 0) {
|
|
64
|
-
const module = engine.list[0];
|
|
65
|
-
console.log('模块配置:', module.config);
|
|
66
|
-
console.log('模块complete:', module.complete);
|
|
67
|
-
}
|
|
68
|
-
} catch (err) {
|
|
69
|
-
console.log('loadFile错误:', err.message);
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
console.log('\n=== 详细调试结束 ===');
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
debugDetailed().catch(console.error);
|
package/debug_test.js
DELETED
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
const { Item, Index } = require('./index.js');
|
|
2
|
-
|
|
3
|
-
class Drive extends Item {
|
|
4
|
-
constructor(dir, dir_base) {
|
|
5
|
-
super(dir, dir_base);
|
|
6
|
-
this.default_file = './demo.json';
|
|
7
|
-
}
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
class Engine extends Index {
|
|
11
|
-
constructor(scope, dir_base) {
|
|
12
|
-
super(scope, dir_base);
|
|
13
|
-
this.mode = 1; // 生产模式
|
|
14
|
-
this.type = 'demo';
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
Engine.prototype.Drive = Drive;
|
|
19
|
-
|
|
20
|
-
async function debugTest() {
|
|
21
|
-
console.log('=== 开始调试 ===');
|
|
22
|
-
|
|
23
|
-
var engine = new Engine('sys', __dirname);
|
|
24
|
-
|
|
25
|
-
console.log('1. 创建引擎成功');
|
|
26
|
-
console.log('引擎配置:', {
|
|
27
|
-
mode: engine.mode,
|
|
28
|
-
type: engine.type,
|
|
29
|
-
scope: engine.scope
|
|
30
|
-
});
|
|
31
|
-
|
|
32
|
-
console.log('2. 开始加载模块...');
|
|
33
|
-
await engine.update('./app/', false, true, true);
|
|
34
|
-
|
|
35
|
-
console.log('3. 模块加载完成');
|
|
36
|
-
console.log('模块数量:', engine.list.length);
|
|
37
|
-
|
|
38
|
-
// 检查每个模块
|
|
39
|
-
for (var i = 0; i < engine.list.length; i++) {
|
|
40
|
-
var module = engine.list[i];
|
|
41
|
-
console.log(`\n模块 ${i}:`, {
|
|
42
|
-
name: module.config?.name,
|
|
43
|
-
state: module.config?.state,
|
|
44
|
-
func_name: module.config?.func_name,
|
|
45
|
-
func_file: module.config?.func_file,
|
|
46
|
-
complete: module.complete
|
|
47
|
-
});
|
|
48
|
-
|
|
49
|
-
// 检查模块是否有main方法
|
|
50
|
-
console.log('模块方法检查:', {
|
|
51
|
-
hasMain: typeof module.main === 'function',
|
|
52
|
-
hasExec: typeof module.exec === 'function'
|
|
53
|
-
});
|
|
54
|
-
|
|
55
|
-
if (module.config?.state === 1) {
|
|
56
|
-
console.log('尝试执行模块方法...');
|
|
57
|
-
var result = await module.exec('main');
|
|
58
|
-
console.log('执行结果:', result);
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
console.log('\n=== 调试结束 ===');
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
debugTest().catch(console.error);
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
/**
|
|
3
|
-
* 名称, 由中英文和下“_”组成, 用于卸载接口 例如: demo
|
|
4
|
-
*/
|
|
5
|
-
"name": "demo1",
|
|
6
|
-
/**
|
|
7
|
-
* 标题, 介绍作用
|
|
8
|
-
*/
|
|
9
|
-
"title": "示例脚本1",
|
|
10
|
-
/**
|
|
11
|
-
* 描述, 用于描述该有什么用的
|
|
12
|
-
*/
|
|
13
|
-
"description": "用于测试动态加载、更新、卸载、删除脚本",
|
|
14
|
-
/**
|
|
15
|
-
* 文件路径, 当调用函数不存在时,会先从文件中加载
|
|
16
|
-
*/
|
|
17
|
-
"func_file": "./index.js",
|
|
18
|
-
/**
|
|
19
|
-
* 回调函数名 用于决定调用脚本的哪个函数
|
|
20
|
-
*/
|
|
21
|
-
"func_name": "",
|
|
22
|
-
/**
|
|
23
|
-
* 排序
|
|
24
|
-
*/
|
|
25
|
-
"sort": 10,
|
|
26
|
-
/**
|
|
27
|
-
* 状态, 0表示未启用, 1表示启用
|
|
28
|
-
*/
|
|
29
|
-
"state": 0,
|
|
30
|
-
/**
|
|
31
|
-
* 显示, 0表示不显示, 1表示显示
|
|
32
|
-
*/
|
|
33
|
-
"show": 0
|
|
34
|
-
}
|
package/demo/test1/demo.json
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
/**
|
|
3
|
-
* 名称, 由中英文和下“_”组成, 用于卸载接口 例如: demo
|
|
4
|
-
*/
|
|
5
|
-
"name": "demo1",
|
|
6
|
-
/**
|
|
7
|
-
* 标题, 介绍作用
|
|
8
|
-
*/
|
|
9
|
-
"title": "示例脚本1",
|
|
10
|
-
/**
|
|
11
|
-
* 描述, 用于描述该有什么用的
|
|
12
|
-
*/
|
|
13
|
-
"description": "用于测试动态加载、更新、卸载、删除脚本",
|
|
14
|
-
/**
|
|
15
|
-
* 文件路径, 当调用函数不存在时,会先从文件中加载
|
|
16
|
-
*/
|
|
17
|
-
"func_file": "./index.js",
|
|
18
|
-
/**
|
|
19
|
-
* 回调函数名 用于决定调用脚本的哪个函数
|
|
20
|
-
*/
|
|
21
|
-
"func_name": "",
|
|
22
|
-
/**
|
|
23
|
-
* 排序
|
|
24
|
-
*/
|
|
25
|
-
"sort": 10,
|
|
26
|
-
/**
|
|
27
|
-
* 状态, 0表示未启用, 1表示启用
|
|
28
|
-
*/
|
|
29
|
-
"state": 0,
|
|
30
|
-
/**
|
|
31
|
-
* 显示, 0表示不显示, 1表示显示
|
|
32
|
-
*/
|
|
33
|
-
"show": 0
|
|
34
|
-
}
|
package/demo/test1/index.js
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
var i = 0;
|
|
2
|
-
|
|
3
|
-
function test() {
|
|
4
|
-
console.log('你好123', i++);
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
*
|
|
9
|
-
*/
|
|
10
|
-
function main() {
|
|
11
|
-
test();
|
|
12
|
-
return i;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
exports.main = main;
|
|
16
|
-
|
|
17
|
-
exports.main_before = function () {
|
|
18
|
-
console.log('test1请求前');
|
|
19
|
-
};
|
|
20
|
-
|
|
21
|
-
exports.main_after = async function (ret) {
|
|
22
|
-
console.log('test1请求后', ret);
|
|
23
|
-
};
|
|
24
|
-
|
|
25
|
-
exports.load = function () {
|
|
26
|
-
console.log('加载test1');
|
|
27
|
-
};
|
|
28
|
-
|
|
29
|
-
exports.init = function () {
|
|
30
|
-
console.log('初始化test1');
|
|
31
|
-
};
|
|
32
|
-
|
|
33
|
-
console.log('引用了test1');
|
package/demo/test2/after.js
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
class Demo {
|
|
2
|
-
constructor() {}
|
|
3
|
-
}
|
|
4
|
-
var i = 0;
|
|
5
|
-
Demo.prototype.main = function () {
|
|
6
|
-
console.log('我很好123', i++);
|
|
7
|
-
return i;
|
|
8
|
-
};
|
|
9
|
-
Demo.prototype.init = function () {
|
|
10
|
-
console.log('初始化test2');
|
|
11
|
-
};
|
|
12
|
-
|
|
13
|
-
module.exports = new Demo();
|
|
14
|
-
|
|
15
|
-
console.log('引用了test2 after');
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
[
|
|
2
|
-
{
|
|
3
|
-
/**
|
|
4
|
-
* 名称, 由中英文和下“_”组成, 用于卸载接口 例如: demo
|
|
5
|
-
*/
|
|
6
|
-
"name": "demo2",
|
|
7
|
-
/**
|
|
8
|
-
* 标题, 介绍作用
|
|
9
|
-
*/
|
|
10
|
-
"title": "示例脚本2",
|
|
11
|
-
/**
|
|
12
|
-
* 描述, 用于描述该有什么用的
|
|
13
|
-
*/
|
|
14
|
-
"description": "用于测试动态加载、更新、卸载、删除脚本",
|
|
15
|
-
/**
|
|
16
|
-
* 文件路径, 当调用函数不存在时,会先从文件中加载
|
|
17
|
-
*/
|
|
18
|
-
"func_file": "./main.js",
|
|
19
|
-
/**
|
|
20
|
-
* 回调函数名 用于决定调用脚本的哪个函数
|
|
21
|
-
*/
|
|
22
|
-
"func_name": "",
|
|
23
|
-
/**
|
|
24
|
-
* 排序
|
|
25
|
-
*/
|
|
26
|
-
"sort": 10,
|
|
27
|
-
/**
|
|
28
|
-
* 状态, 0表示未启用, 1表示启用
|
|
29
|
-
*/
|
|
30
|
-
"state": 1,
|
|
31
|
-
/**
|
|
32
|
-
* 显示, 0表示不显示, 1表示显示
|
|
33
|
-
*/
|
|
34
|
-
"show": 0
|
|
35
|
-
},
|
|
36
|
-
{
|
|
37
|
-
/**
|
|
38
|
-
* 名称, 由中英文和下“_”组成, 用于卸载接口 例如: demo
|
|
39
|
-
*/
|
|
40
|
-
"name": "demo3",
|
|
41
|
-
/**
|
|
42
|
-
* 标题, 介绍作用
|
|
43
|
-
*/
|
|
44
|
-
"title": "示例脚本3",
|
|
45
|
-
/**
|
|
46
|
-
* 描述, 用于描述该有什么用的
|
|
47
|
-
*/
|
|
48
|
-
"description": "用于测试动态加载、更新、卸载、删除脚本",
|
|
49
|
-
/**
|
|
50
|
-
* 文件路径, 当调用函数不存在时,会先从文件中加载
|
|
51
|
-
*/
|
|
52
|
-
"func_file": "./after.js",
|
|
53
|
-
/**
|
|
54
|
-
* 回调函数名 用于决定调用脚本的哪个函数
|
|
55
|
-
*/
|
|
56
|
-
"func_name": "main",
|
|
57
|
-
/**
|
|
58
|
-
* 排序
|
|
59
|
-
*/
|
|
60
|
-
"sort": 10,
|
|
61
|
-
/**
|
|
62
|
-
* 状态, 0表示未启用, 1表示启用
|
|
63
|
-
*/
|
|
64
|
-
"state": 1,
|
|
65
|
-
/**
|
|
66
|
-
* 显示, 0表示不显示, 1表示显示
|
|
67
|
-
*/
|
|
68
|
-
"show": 0
|
|
69
|
-
}
|
|
70
|
-
]
|