jj.js 1.0.0-rc.6 → 1.0.0-rc.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/lib/controller.js +5 -4
- package/lib/middleware.js +14 -10
- package/lib/response.js +20 -16
- package/package.json +1 -1
package/lib/controller.js
CHANGED
|
@@ -3,6 +3,7 @@ const Middleware = require('./middleware');
|
|
|
3
3
|
/**
|
|
4
4
|
* @typedef {import('../types').ControllerMiddleware} ControllerMiddleware - Controller中间件
|
|
5
5
|
* @typedef {import('../types').ViewInstance} ViewInstance - View实例
|
|
6
|
+
* @typedef {'__EXIT__'} EXIT - Controller返回值,表示不继续执行后续方法
|
|
6
7
|
*/
|
|
7
8
|
|
|
8
9
|
/**
|
|
@@ -14,7 +15,7 @@ class Controller extends Middleware
|
|
|
14
15
|
/**
|
|
15
16
|
* 初始化方法,在控制器方法执行前自动执行
|
|
16
17
|
* @protected
|
|
17
|
-
* @returns {
|
|
18
|
+
* @returns {EXIT|any} - 如果返回__EXIT__,则不会执行控制器及后续方法
|
|
18
19
|
*/
|
|
19
20
|
_init() {}
|
|
20
21
|
|
|
@@ -50,7 +51,7 @@ class Controller extends Middleware
|
|
|
50
51
|
* 获取文件内容并输出
|
|
51
52
|
* @public
|
|
52
53
|
* @param {string} [template]
|
|
53
|
-
|
|
54
|
+
* @returns {Promise<EXIT>}
|
|
54
55
|
*/
|
|
55
56
|
async $load(template) {
|
|
56
57
|
const content = await this._$view.load(template);
|
|
@@ -61,7 +62,7 @@ class Controller extends Middleware
|
|
|
61
62
|
* 渲染(解析数据)内容并输出
|
|
62
63
|
* @public
|
|
63
64
|
* @param {string} content
|
|
64
|
-
* @returns {Promise<
|
|
65
|
+
* @returns {Promise<EXIT>}
|
|
65
66
|
*/
|
|
66
67
|
async $render(content) {
|
|
67
68
|
const html = await this._$view.render(content);
|
|
@@ -72,7 +73,7 @@ class Controller extends Middleware
|
|
|
72
73
|
* 渲染(解析数据)文件并输出
|
|
73
74
|
* @public
|
|
74
75
|
* @param {string} [template]
|
|
75
|
-
* @returns {Promise<
|
|
76
|
+
* @returns {Promise<EXIT>}
|
|
76
77
|
*/
|
|
77
78
|
async $fetch(template) {
|
|
78
79
|
const content = await this._$view.fetch(template);
|
package/lib/middleware.js
CHANGED
|
@@ -4,6 +4,7 @@ const Context = require('./context');
|
|
|
4
4
|
* @typedef {import('../types').KoaCtx} KoaCtx
|
|
5
5
|
* @typedef {import('../types').AsyncNext} AsyncNext
|
|
6
6
|
* @typedef {import('../types').ResponseInstance} ResponseInstance
|
|
7
|
+
* @typedef {'__EXIT__'} EXIT
|
|
7
8
|
*/
|
|
8
9
|
|
|
9
10
|
/**
|
|
@@ -11,12 +12,6 @@ const Context = require('./context');
|
|
|
11
12
|
*/
|
|
12
13
|
class Middleware extends Context
|
|
13
14
|
{
|
|
14
|
-
/**
|
|
15
|
-
* 控制器_init方法或action方法返回此值,表示不继续执行后续方法
|
|
16
|
-
* @type {'__EXIT__'}
|
|
17
|
-
*/
|
|
18
|
-
__EXIT__ = '__EXIT__';
|
|
19
|
-
|
|
20
15
|
/**
|
|
21
16
|
* Initialize a new `Middleware`
|
|
22
17
|
* @public
|
|
@@ -32,7 +27,7 @@ class Middleware extends Context
|
|
|
32
27
|
* 直接输出内容
|
|
33
28
|
* @public
|
|
34
29
|
* @param {*} data
|
|
35
|
-
|
|
30
|
+
* @returns {EXIT}
|
|
36
31
|
*/
|
|
37
32
|
$show(data) {
|
|
38
33
|
return this._$response.show(data);
|
|
@@ -43,7 +38,7 @@ class Middleware extends Context
|
|
|
43
38
|
* @public
|
|
44
39
|
* @param {(string|object)} url
|
|
45
40
|
* @param {number} [status]
|
|
46
|
-
|
|
41
|
+
* @returns {EXIT}
|
|
47
42
|
*/
|
|
48
43
|
$redirect(url, status) {
|
|
49
44
|
return this._$response.redirect(url, status);
|
|
@@ -54,7 +49,7 @@ class Middleware extends Context
|
|
|
54
49
|
* @public
|
|
55
50
|
* @param {(string|object)} [msg]
|
|
56
51
|
* @param {(string|object)} [url]
|
|
57
|
-
* @returns {
|
|
52
|
+
* @returns {EXIT}
|
|
58
53
|
*/
|
|
59
54
|
$success(msg, url) {
|
|
60
55
|
return this._$response.success(msg, url);
|
|
@@ -65,12 +60,21 @@ class Middleware extends Context
|
|
|
65
60
|
* @public
|
|
66
61
|
* @param {(string|object)} [msg]
|
|
67
62
|
* @param {(string|object)} [url]
|
|
68
|
-
* @returns {
|
|
63
|
+
* @returns {EXIT}
|
|
69
64
|
*/
|
|
70
65
|
$error(msg, url) {
|
|
71
66
|
return this._$response.error(msg, url);
|
|
72
67
|
}
|
|
73
68
|
|
|
69
|
+
/**
|
|
70
|
+
* 返回'__EXIT__'
|
|
71
|
+
* @public
|
|
72
|
+
* @returns {EXIT}
|
|
73
|
+
*/
|
|
74
|
+
$exit() {
|
|
75
|
+
return '__EXIT__';
|
|
76
|
+
}
|
|
77
|
+
|
|
74
78
|
/**
|
|
75
79
|
* @type {ResponseInstance} Response实例
|
|
76
80
|
* @private
|
package/lib/response.js
CHANGED
|
@@ -6,6 +6,7 @@ const Context = require('./context');
|
|
|
6
6
|
* @typedef {import('../types').KoaCtx} KoaCtx
|
|
7
7
|
* @typedef {import('../types').RequestInstance} RequestInstance
|
|
8
8
|
* @typedef {import('../types').UrlInstance} UrlInstance
|
|
9
|
+
* @typedef {'__EXIT__'} EXIT
|
|
9
10
|
*/
|
|
10
11
|
|
|
11
12
|
/**
|
|
@@ -13,12 +14,6 @@ const Context = require('./context');
|
|
|
13
14
|
*/
|
|
14
15
|
class Response extends Context
|
|
15
16
|
{
|
|
16
|
-
/**
|
|
17
|
-
* 控制器_init方法或action方法返回此值,表示不继续执行后续方法
|
|
18
|
-
* @type {'__EXIT__'}
|
|
19
|
-
*/
|
|
20
|
-
__EXIT__ = '__EXIT__';
|
|
21
|
-
|
|
22
17
|
/**
|
|
23
18
|
* Initialize a new `Response`
|
|
24
19
|
* @public
|
|
@@ -35,11 +30,11 @@ class Response extends Context
|
|
|
35
30
|
* 直接输出内容
|
|
36
31
|
* @public
|
|
37
32
|
* @param {*} data
|
|
38
|
-
* @returns {
|
|
33
|
+
* @returns {EXIT}
|
|
39
34
|
*/
|
|
40
35
|
show(data) {
|
|
41
36
|
this.ctx.body = data;
|
|
42
|
-
return this.
|
|
37
|
+
return this.exit();
|
|
43
38
|
}
|
|
44
39
|
|
|
45
40
|
/**
|
|
@@ -47,12 +42,12 @@ class Response extends Context
|
|
|
47
42
|
* @public
|
|
48
43
|
* @param {*} url
|
|
49
44
|
* @param {number} status
|
|
50
|
-
|
|
45
|
+
* @returns {EXIT}
|
|
51
46
|
*/
|
|
52
47
|
redirect(url, status=302) {
|
|
53
48
|
this.ctx.status = status;
|
|
54
49
|
this.ctx.redirect(this._$url.build(url));
|
|
55
|
-
return this.
|
|
50
|
+
return this.exit();
|
|
56
51
|
}
|
|
57
52
|
|
|
58
53
|
/**
|
|
@@ -60,7 +55,7 @@ class Response extends Context
|
|
|
60
55
|
* @public
|
|
61
56
|
* @param {(string|object)} [msg]
|
|
62
57
|
* @param {(string|object)} [url]
|
|
63
|
-
* @returns {
|
|
58
|
+
* @returns {EXIT}
|
|
64
59
|
*/
|
|
65
60
|
success(msg='操作成功!', url) {
|
|
66
61
|
typeof msg == 'object' && ([msg, url] = ['操作成功!', msg]);
|
|
@@ -73,7 +68,7 @@ class Response extends Context
|
|
|
73
68
|
* @public
|
|
74
69
|
* @param {(string|object)} [msg]
|
|
75
70
|
* @param {(string|object)} [url]
|
|
76
|
-
* @returns {
|
|
71
|
+
* @returns {EXIT}
|
|
77
72
|
*/
|
|
78
73
|
error(msg='操作失败!', url) {
|
|
79
74
|
typeof msg == 'object' && ([msg, url] = ['操作失败!', msg]);
|
|
@@ -87,7 +82,7 @@ class Response extends Context
|
|
|
87
82
|
* @param {(string|object)} msg
|
|
88
83
|
* @param {(string|object)} url
|
|
89
84
|
* @param {number} state
|
|
90
|
-
* @returns {
|
|
85
|
+
* @returns {EXIT}
|
|
91
86
|
*/
|
|
92
87
|
jump(msg, url, state=1) {
|
|
93
88
|
const tplData = {state, msg, url, wait: this._wait};
|
|
@@ -95,7 +90,7 @@ class Response extends Context
|
|
|
95
90
|
// @ts-ignore
|
|
96
91
|
return tplData[args[1]];
|
|
97
92
|
});
|
|
98
|
-
return this.
|
|
93
|
+
return this.exit();
|
|
99
94
|
}
|
|
100
95
|
|
|
101
96
|
/**
|
|
@@ -113,7 +108,7 @@ class Response extends Context
|
|
|
113
108
|
* 输出异常信息(html|json)
|
|
114
109
|
* @public
|
|
115
110
|
* @param {Error} err
|
|
116
|
-
* @returns {
|
|
111
|
+
* @returns {EXIT}
|
|
117
112
|
*/
|
|
118
113
|
exception(err) {
|
|
119
114
|
const escapeHtml = require('./utils/escape-html');
|
|
@@ -127,7 +122,16 @@ class Response extends Context
|
|
|
127
122
|
// @ts-ignore
|
|
128
123
|
return tplData[args[1]];
|
|
129
124
|
});
|
|
130
|
-
return this.
|
|
125
|
+
return this.exit();
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* 返回'__EXIT__'
|
|
130
|
+
* @public
|
|
131
|
+
* @returns {EXIT}
|
|
132
|
+
*/
|
|
133
|
+
exit() {
|
|
134
|
+
return '__EXIT__';
|
|
131
135
|
}
|
|
132
136
|
|
|
133
137
|
/**
|