mm_os 4.2.4 → 4.2.7
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/README.md +1 -1
- package/README_EN.md +2 -2
- package/adapter/adapter.js +105 -52
- package/adapter/custom_persistence.js +32 -31
- package/adapter/mqtt.js +59 -79
- package/adapter/socket.js +188 -58
- package/adapter/web.js +92 -68
- package/adapter/websocket.js +43 -146
- package/com/api/drive.js +732 -708
- package/com/api/index.js +196 -198
- package/com/api/script.tpl.js +24 -24
- package/com/cmd/config.tpl.json +48 -122
- package/com/cmd/drive.js +176 -1548
- package/com/cmd/index.js +287 -1066
- package/com/cmd/job/config.json +66 -0
- package/com/cmd/job/index.js +241 -0
- package/com/cmd/job/test.js +188 -0
- package/com/cmd/script.tpl.js +12 -33
- package/com/db/drive.js +2206 -2019
- package/com/db/index.js +241 -242
- package/com/event/config.tpl.json +3 -1
- package/com/event/drive.js +3 -1
- package/com/event/index.js +73 -46
- package/com/event/script.tpl.js +22 -22
- package/com/mqtt/config.tpl.json +16 -8
- package/com/mqtt/drive.js +696 -676
- package/com/mqtt/index.js +1012 -822
- package/com/mqtt/index.test.js +503 -0
- package/com/mqtt/mm_mqtt.js +446 -420
- package/com/mqtt/script.tpl.js +3 -7
- package/com/nav/drive.js +7 -7
- package/com/nav/index.js +228 -231
- package/com/param/index.js +19 -17
- package/com/pendant/index.js +467 -441
- package/com/socket/drive.js +679 -651
- package/com/socket/index.js +94 -48
- package/com/sql/drive.js +1283 -1259
- package/com/sql/index.js +152 -150
- package/com/static/drive.js +1 -1
- package/com/static/index.js +232 -226
- package/com/static/script.tpl.js +25 -25
- package/com/task/drive.js +428 -405
- package/com/task/index.js +154 -148
- package/com/task/script.tpl.js +37 -34
- package/com/template/drive.js +1 -1
- package/com/template/index.js +141 -138
- package/com.js +87 -6
- package/common/middleware/web_after/index.js +5 -11
- package/common/middleware/web_base/index.js +1 -1
- package/common/middleware/web_cors/index.js +1 -1
- package/common/middleware/web_error/index.js +131 -119
- package/common/middleware/web_error/middleware.json +2 -1
- package/common/middleware/web_logger/index.js +1 -1
- package/common/middleware/web_main/index.js +2 -0
- package/common/middleware/web_static/index.js +2 -2
- package/common/middleware/web_waf/index.js +1 -1
- package/core/app/config.tpl.json +4 -4
- package/core/app/index.js +710 -534
- package/core/middleware/index.js +1 -9
- package/core/mod/config.tpl.json +1 -1
- package/core/model/config.tpl.json +1 -1
- package/core/plugin/config.tpl.json +15 -3
- package/core/plugin/index.js +31 -0
- package/core/pusher/index.js +158 -161
- package/core/scene/loop.js +1306 -1255
- package/core/store/index.js +1794 -1755
- package/core/store/sql.js +1488 -1464
- package/core/zone/bat/index.js +744 -728
- package/core/zone/config.tpl.json +3 -3
- package/core/zone/index.js +655 -616
- package/os.js +0 -4
- package/package.json +16 -16
- package/server.js +583 -427
- package/com/cmd/nlp.js +0 -525
- package/core/app/index copy.js +0 -611
- package/software.js +0 -194
- package/tcp.js +0 -279
package/com/task/index.js
CHANGED
|
@@ -1,148 +1,154 @@
|
|
|
1
|
-
const Manager = require(
|
|
2
|
-
const Drive = require(
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* 任务类
|
|
6
|
-
* @augments {Manager}
|
|
7
|
-
* @class
|
|
8
|
-
*/
|
|
9
|
-
class Task extends Manager {
|
|
10
|
-
/**
|
|
11
|
-
* 配置参数
|
|
12
|
-
* @type {object}
|
|
13
|
-
*/
|
|
14
|
-
static config = {
|
|
15
|
-
/**
|
|
16
|
-
* 名称
|
|
17
|
-
* @type {string}
|
|
18
|
-
*/
|
|
19
|
-
name:
|
|
20
|
-
/**
|
|
21
|
-
* 标题
|
|
22
|
-
* @type {string}
|
|
23
|
-
*/
|
|
24
|
-
title:
|
|
25
|
-
/**
|
|
26
|
-
* 描述
|
|
27
|
-
* @type {string}
|
|
28
|
-
*/
|
|
29
|
-
description:
|
|
30
|
-
/**
|
|
31
|
-
* 检索文件名
|
|
32
|
-
* @type {string}
|
|
33
|
-
*/
|
|
34
|
-
filename:
|
|
35
|
-
/**
|
|
36
|
-
* 模板目录
|
|
37
|
-
* @type {string}
|
|
38
|
-
*/
|
|
39
|
-
tpl_dir: __dirname,
|
|
40
|
-
/**
|
|
41
|
-
* 基础目录
|
|
42
|
-
* @type {string}
|
|
43
|
-
*/
|
|
44
|
-
base_dir:
|
|
45
|
-
/**
|
|
46
|
-
* 自定义目录,加载项目自定义资源
|
|
47
|
-
* @type {string}
|
|
48
|
-
*/
|
|
49
|
-
dir:
|
|
50
|
-
/**
|
|
51
|
-
* 搜索模式 dir按目录搜索 | file按文件名搜索
|
|
52
|
-
* @type {string}
|
|
53
|
-
*/
|
|
54
|
-
search_way:
|
|
55
|
-
/**
|
|
56
|
-
* 是否懒加载
|
|
57
|
-
* @type {boolean}
|
|
58
|
-
*/
|
|
59
|
-
lazy_load: false,
|
|
60
|
-
/**
|
|
61
|
-
* 模式
|
|
62
|
-
* 1.生产模式,改变文件不会重新加载
|
|
63
|
-
* 2.热更新模式,改变配置文件会重新加载配置,不重新加载脚本
|
|
64
|
-
* 3.热重载模式,改变配置文件都会加载配置和脚本
|
|
65
|
-
* 4.重载模式,执行完后重新加载脚本,避免变量污染
|
|
66
|
-
* 5.热更新+重载模式,改变配置文件重新加载配置和脚本,执行完后重新加载脚本
|
|
67
|
-
* @type {number}
|
|
68
|
-
*/
|
|
69
|
-
mode: 3
|
|
70
|
-
};
|
|
71
|
-
|
|
72
|
-
/**
|
|
73
|
-
* 构造函数
|
|
74
|
-
* @param {object} config 配置参数
|
|
75
|
-
* @param {object} parent 父级模块
|
|
76
|
-
*/
|
|
77
|
-
constructor(config, parent) {
|
|
78
|
-
super({ ...Task.config, ...config }, parent);
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
/**
|
|
83
|
-
* 任务驱动类
|
|
84
|
-
* @type {Drive}
|
|
85
|
-
*/
|
|
86
|
-
Task.prototype.Drive = Drive;
|
|
87
|
-
|
|
88
|
-
/**
|
|
89
|
-
* 执行任务
|
|
90
|
-
* @param {string} name 要执行的名称
|
|
91
|
-
*/
|
|
92
|
-
Task.prototype.run = async function (name) {
|
|
93
|
-
if (name) {
|
|
94
|
-
let mod = this.getMod(name);
|
|
95
|
-
if (mod) {
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
1
|
+
const Manager = require("mm_machine").Manager;
|
|
2
|
+
const Drive = require("./drive");
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* 任务类
|
|
6
|
+
* @augments {Manager}
|
|
7
|
+
* @class
|
|
8
|
+
*/
|
|
9
|
+
class Task extends Manager {
|
|
10
|
+
/**
|
|
11
|
+
* 配置参数
|
|
12
|
+
* @type {object}
|
|
13
|
+
*/
|
|
14
|
+
static config = {
|
|
15
|
+
/**
|
|
16
|
+
* 名称
|
|
17
|
+
* @type {string}
|
|
18
|
+
*/
|
|
19
|
+
name: "",
|
|
20
|
+
/**
|
|
21
|
+
* 标题
|
|
22
|
+
* @type {string}
|
|
23
|
+
*/
|
|
24
|
+
title: "任务管理器",
|
|
25
|
+
/**
|
|
26
|
+
* 描述
|
|
27
|
+
* @type {string}
|
|
28
|
+
*/
|
|
29
|
+
description: "这是任务管理器",
|
|
30
|
+
/**
|
|
31
|
+
* 检索文件名
|
|
32
|
+
* @type {string}
|
|
33
|
+
*/
|
|
34
|
+
filename: "task.json",
|
|
35
|
+
/**
|
|
36
|
+
* 模板目录
|
|
37
|
+
* @type {string}
|
|
38
|
+
*/
|
|
39
|
+
tpl_dir: __dirname,
|
|
40
|
+
/**
|
|
41
|
+
* 基础目录
|
|
42
|
+
* @type {string}
|
|
43
|
+
*/
|
|
44
|
+
base_dir: "../common/task".fullname(__dirname),
|
|
45
|
+
/**
|
|
46
|
+
* 自定义目录,加载项目自定义资源
|
|
47
|
+
* @type {string}
|
|
48
|
+
*/
|
|
49
|
+
dir: "./app".fullname(),
|
|
50
|
+
/**
|
|
51
|
+
* 搜索模式 dir按目录搜索 | file按文件名搜索
|
|
52
|
+
* @type {string}
|
|
53
|
+
*/
|
|
54
|
+
search_way: "file",
|
|
55
|
+
/**
|
|
56
|
+
* 是否懒加载
|
|
57
|
+
* @type {boolean}
|
|
58
|
+
*/
|
|
59
|
+
lazy_load: false,
|
|
60
|
+
/**
|
|
61
|
+
* 模式
|
|
62
|
+
* 1.生产模式,改变文件不会重新加载
|
|
63
|
+
* 2.热更新模式,改变配置文件会重新加载配置,不重新加载脚本
|
|
64
|
+
* 3.热重载模式,改变配置文件都会加载配置和脚本
|
|
65
|
+
* 4.重载模式,执行完后重新加载脚本,避免变量污染
|
|
66
|
+
* 5.热更新+重载模式,改变配置文件重新加载配置和脚本,执行完后重新加载脚本
|
|
67
|
+
* @type {number}
|
|
68
|
+
*/
|
|
69
|
+
mode: process.env.NODE_ENV === "production" ? 1 : 3,
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* 构造函数
|
|
74
|
+
* @param {object} config 配置参数
|
|
75
|
+
* @param {object} parent 父级模块
|
|
76
|
+
*/
|
|
77
|
+
constructor(config, parent) {
|
|
78
|
+
super({ ...Task.config, ...config }, parent);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* 任务驱动类
|
|
84
|
+
* @type {Drive}
|
|
85
|
+
*/
|
|
86
|
+
Task.prototype.Drive = Drive;
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* 执行任务
|
|
90
|
+
* @param {string} name 要执行的名称
|
|
91
|
+
*/
|
|
92
|
+
Task.prototype.run = async function (name) {
|
|
93
|
+
if (name) {
|
|
94
|
+
let mod = this.getMod(name);
|
|
95
|
+
if (mod) {
|
|
96
|
+
if (!mod.isLoaded()) {
|
|
97
|
+
await mod.do("load");
|
|
98
|
+
}
|
|
99
|
+
await mod.run();
|
|
100
|
+
}
|
|
101
|
+
} else {
|
|
102
|
+
let infos = this.getInfos();
|
|
103
|
+
for (var i = 0, info; (info = infos[i++]);) {
|
|
104
|
+
if (info.state === 1) {
|
|
105
|
+
try {
|
|
106
|
+
let mod = this.getMod(info.name);
|
|
107
|
+
if (mod) {
|
|
108
|
+
if (!mod.isLoaded()) {
|
|
109
|
+
await mod.do("load");
|
|
110
|
+
}
|
|
111
|
+
await mod.run();
|
|
112
|
+
}
|
|
113
|
+
} catch (error) {
|
|
114
|
+
this.log("error", "定时任务错误", info.name, error);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
};
|
|
120
|
+
|
|
121
|
+
exports.Task = Task;
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* Task模板池
|
|
125
|
+
*/
|
|
126
|
+
if (!$.pool.task) {
|
|
127
|
+
$.pool.task = {};
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* Task管理器,用于创建缓存
|
|
132
|
+
* @param {string} scope 作用域
|
|
133
|
+
* @param {string} title 标题
|
|
134
|
+
* @returns {object} 返回一个缓存类
|
|
135
|
+
*/
|
|
136
|
+
function taskAdmin(scope, title) {
|
|
137
|
+
var sc = scope || $.val.scope + "";
|
|
138
|
+
var obj = $.pool.task[sc];
|
|
139
|
+
if (!obj) {
|
|
140
|
+
$.pool.task[sc] = new Task({
|
|
141
|
+
name: sc,
|
|
142
|
+
title: title,
|
|
143
|
+
});
|
|
144
|
+
obj = $.pool.task[sc];
|
|
145
|
+
}
|
|
146
|
+
return obj;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* @module 导出Task管理器
|
|
151
|
+
*/
|
|
152
|
+
if ($.admin) {
|
|
153
|
+
$.admin.task = taskAdmin;
|
|
154
|
+
}
|
package/com/task/script.tpl.js
CHANGED
|
@@ -1,37 +1,40 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 定时任务函数
|
|
3
|
-
*/
|
|
4
|
-
exports.main = async function main() {
|
|
5
|
-
this.log('debug', '定时任务, 执行中...');
|
|
6
|
-
};
|
|
7
1
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
2
|
+
module.exports = {
|
|
3
|
+
/**
|
|
4
|
+
* 定时任务函数
|
|
5
|
+
*/
|
|
6
|
+
async main() {
|
|
7
|
+
this.log('debug', '定时任务, 执行中...');
|
|
8
|
+
},
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* 执行结果通知
|
|
12
|
+
* @param {string} name 任务名称
|
|
13
|
+
* @param {string} state 状态
|
|
14
|
+
*/
|
|
15
|
+
async notify(name, state) {
|
|
16
|
+
switch (state) {
|
|
17
|
+
case 'init':
|
|
18
|
+
this.log('debug', '任务-初始化');
|
|
19
|
+
break;
|
|
20
|
+
case 'start':
|
|
21
|
+
this.log('debug', '任务-开始执行');
|
|
22
|
+
break;
|
|
23
|
+
case 'stop':
|
|
24
|
+
this.log('debug', '任务-已暂停');
|
|
25
|
+
break;
|
|
26
|
+
case 'suspend':
|
|
27
|
+
// 主动中断
|
|
28
|
+
this.log('debug', '任务-已中断');
|
|
29
|
+
break;
|
|
30
|
+
case 'time_end':
|
|
31
|
+
this.log('debug', '任务-已到期');
|
|
32
|
+
break;
|
|
33
|
+
case 'completed':
|
|
34
|
+
this.log('debug', '任务-已完成');
|
|
35
|
+
break;
|
|
36
|
+
default:
|
|
37
|
+
break;
|
|
38
|
+
}
|
|
36
39
|
}
|
|
37
40
|
};
|
package/com/template/drive.js
CHANGED
package/com/template/index.js
CHANGED
|
@@ -1,138 +1,141 @@
|
|
|
1
|
-
const compressing = require(
|
|
2
|
-
const
|
|
3
|
-
const Drive = require(
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* 主题模板管理类
|
|
7
|
-
* @class
|
|
8
|
-
*/
|
|
9
|
-
class Template extends
|
|
10
|
-
/**
|
|
11
|
-
* 配置参数
|
|
12
|
-
* @type {object}
|
|
13
|
-
*/
|
|
14
|
-
static config = {
|
|
15
|
-
/**
|
|
16
|
-
* 名称
|
|
17
|
-
* @type {string}
|
|
18
|
-
*/
|
|
19
|
-
name:
|
|
20
|
-
/**
|
|
21
|
-
* 标题
|
|
22
|
-
* @type {string}
|
|
23
|
-
*/
|
|
24
|
-
title:
|
|
25
|
-
/**
|
|
26
|
-
* 描述
|
|
27
|
-
* @type {string}
|
|
28
|
-
*/
|
|
29
|
-
description:
|
|
30
|
-
/**
|
|
31
|
-
* 检索文件名
|
|
32
|
-
* @type {string}
|
|
33
|
-
*/
|
|
34
|
-
filename:
|
|
35
|
-
/**
|
|
36
|
-
* 模板目录
|
|
37
|
-
* @type {string}
|
|
38
|
-
*/
|
|
39
|
-
tpl_dir: __dirname,
|
|
40
|
-
/**
|
|
41
|
-
* 基础目录
|
|
42
|
-
* @type {string}
|
|
43
|
-
*/
|
|
44
|
-
base_dir:
|
|
45
|
-
/**
|
|
46
|
-
* 自定义目录,加载项目自定义资源
|
|
47
|
-
* @type {string}
|
|
48
|
-
*/
|
|
49
|
-
dir:
|
|
50
|
-
/**
|
|
51
|
-
* 搜索模式 dir按目录搜索 | file按文件名搜索
|
|
52
|
-
* @type {string}
|
|
53
|
-
*/
|
|
54
|
-
search_way:
|
|
55
|
-
/**
|
|
56
|
-
* 是否懒加载
|
|
57
|
-
* @type {boolean}
|
|
58
|
-
*/
|
|
59
|
-
lazy_load: true,
|
|
60
|
-
/**
|
|
61
|
-
* 模式
|
|
62
|
-
* 1.生产模式,改变文件不会重新加载
|
|
63
|
-
* 2.热更新模式,改变配置文件会重新加载配置,不重新加载脚本
|
|
64
|
-
* 3.热重载模式,改变配置文件都会加载配置和脚本
|
|
65
|
-
* 4.重载模式,执行完后重新加载脚本,避免变量污染
|
|
66
|
-
* 5.热更新+重载模式,改变配置文件重新加载配置和脚本,执行完后重新加载脚本
|
|
67
|
-
* @type {number}
|
|
68
|
-
*/
|
|
69
|
-
mode: 3
|
|
70
|
-
};
|
|
71
|
-
|
|
72
|
-
/**
|
|
73
|
-
* 构造函数
|
|
74
|
-
* @param {object} config 配置参数
|
|
75
|
-
* @param {object} parent 父项
|
|
76
|
-
*/
|
|
77
|
-
constructor(config, parent) {
|
|
78
|
-
super({ ...Template.config, ...config }, parent);
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
Template.prototype.Drive = Drive;
|
|
83
|
-
|
|
84
|
-
/**
|
|
85
|
-
* 解压模板
|
|
86
|
-
* @param {string} file 模板压缩文件
|
|
87
|
-
* @returns {object} 解压后的文件对象
|
|
88
|
-
*/
|
|
89
|
-
Template.prototype.unzip = async function(file) {
|
|
90
|
-
var done = await compressing.zip.uncompress(
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
*
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
1
|
+
const compressing = require("compressing");
|
|
2
|
+
const Manager = require("mm_machine").Manager;
|
|
3
|
+
const Drive = require("./drive").Drive;
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* 主题模板管理类
|
|
7
|
+
* @class
|
|
8
|
+
*/
|
|
9
|
+
class Template extends Manager {
|
|
10
|
+
/**
|
|
11
|
+
* 配置参数
|
|
12
|
+
* @type {object}
|
|
13
|
+
*/
|
|
14
|
+
static config = {
|
|
15
|
+
/**
|
|
16
|
+
* 名称
|
|
17
|
+
* @type {string}
|
|
18
|
+
*/
|
|
19
|
+
name: "",
|
|
20
|
+
/**
|
|
21
|
+
* 标题
|
|
22
|
+
* @type {string}
|
|
23
|
+
*/
|
|
24
|
+
title: "template管理",
|
|
25
|
+
/**
|
|
26
|
+
* 描述
|
|
27
|
+
* @type {string}
|
|
28
|
+
*/
|
|
29
|
+
description: "这是template管理器",
|
|
30
|
+
/**
|
|
31
|
+
* 检索文件名
|
|
32
|
+
* @type {string}
|
|
33
|
+
*/
|
|
34
|
+
filename: "template.json",
|
|
35
|
+
/**
|
|
36
|
+
* 模板目录
|
|
37
|
+
* @type {string}
|
|
38
|
+
*/
|
|
39
|
+
tpl_dir: __dirname,
|
|
40
|
+
/**
|
|
41
|
+
* 基础目录
|
|
42
|
+
* @type {string}
|
|
43
|
+
*/
|
|
44
|
+
base_dir: "../common/template".fullname(__dirname),
|
|
45
|
+
/**
|
|
46
|
+
* 自定义目录,加载项目自定义资源
|
|
47
|
+
* @type {string}
|
|
48
|
+
*/
|
|
49
|
+
dir: "./static/template".fullname(),
|
|
50
|
+
/**
|
|
51
|
+
* 搜索模式 dir按目录搜索 | file按文件名搜索
|
|
52
|
+
* @type {string}
|
|
53
|
+
*/
|
|
54
|
+
search_way: "file",
|
|
55
|
+
/**
|
|
56
|
+
* 是否懒加载
|
|
57
|
+
* @type {boolean}
|
|
58
|
+
*/
|
|
59
|
+
lazy_load: true,
|
|
60
|
+
/**
|
|
61
|
+
* 模式
|
|
62
|
+
* 1.生产模式,改变文件不会重新加载
|
|
63
|
+
* 2.热更新模式,改变配置文件会重新加载配置,不重新加载脚本
|
|
64
|
+
* 3.热重载模式,改变配置文件都会加载配置和脚本
|
|
65
|
+
* 4.重载模式,执行完后重新加载脚本,避免变量污染
|
|
66
|
+
* 5.热更新+重载模式,改变配置文件重新加载配置和脚本,执行完后重新加载脚本
|
|
67
|
+
* @type {number}
|
|
68
|
+
*/
|
|
69
|
+
mode: process.env.NODE_ENV === "production" ? 1 : 3,
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* 构造函数
|
|
74
|
+
* @param {object} config 配置参数
|
|
75
|
+
* @param {object} parent 父项
|
|
76
|
+
*/
|
|
77
|
+
constructor(config, parent) {
|
|
78
|
+
super({ ...Template.config, ...config }, parent);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
Template.prototype.Drive = Drive;
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* 解压模板
|
|
86
|
+
* @param {string} file 模板压缩文件
|
|
87
|
+
* @returns {object} 解压后的文件对象
|
|
88
|
+
*/
|
|
89
|
+
Template.prototype.unzip = async function (file) {
|
|
90
|
+
var done = await compressing.zip.uncompress(
|
|
91
|
+
file,
|
|
92
|
+
"/static/template".fullname(),
|
|
93
|
+
);
|
|
94
|
+
return done;
|
|
95
|
+
};
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* 获取模板
|
|
99
|
+
* @param {string} key 模板键名
|
|
100
|
+
* @returns {object} 模板对象
|
|
101
|
+
*/
|
|
102
|
+
Template.prototype.get = function (key) {
|
|
103
|
+
return this.mods[key];
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* 主题模板模板池
|
|
108
|
+
*/
|
|
109
|
+
if (!$.pool.template) {
|
|
110
|
+
$.pool.template = {};
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* 主题模板管理器,用于创建缓存
|
|
115
|
+
* @param {string} scope 作用域
|
|
116
|
+
* @param {string} title 标题
|
|
117
|
+
* @returns {object} 返回一个缓存类
|
|
118
|
+
*/
|
|
119
|
+
function templateAdmin(scope, title) {
|
|
120
|
+
var sc = scope || $.val.scope + "";
|
|
121
|
+
var obj = $.pool.template[sc];
|
|
122
|
+
if (!obj) {
|
|
123
|
+
$.pool.template[sc] = new Template({
|
|
124
|
+
name: sc,
|
|
125
|
+
title: title,
|
|
126
|
+
});
|
|
127
|
+
obj = $.pool.template[sc];
|
|
128
|
+
}
|
|
129
|
+
return obj;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* @module 导出模板管理器
|
|
134
|
+
*/
|
|
135
|
+
if ($.admin) {
|
|
136
|
+
$.admin.template = templateAdmin;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
module.exports = {
|
|
140
|
+
Template,
|
|
141
|
+
};
|