chanjs 1.0.20 → 1.0.22
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/core/chan.js +17 -5
- package/core/lib/controller/controller.js +30 -0
- package/core/lib/extend/bindClass.js +23 -0
- package/core/lib/service/service.js +32 -0
- package/package.json +1 -1
- package/core/lib/controller/Base.js +0 -9
- package/core/lib/extend/controller.js +0 -217
- /package/core/lib/{extend → utils}/fsExtend.js +0 -0
package/core/chan.js
CHANGED
@@ -1,9 +1,13 @@
|
|
1
1
|
const express = require("express");
|
2
2
|
const config = require("./lib/config/config.js");
|
3
|
+
const bindClass = require("./lib/extend/bindClass.js");
|
4
|
+
const Controller = require("./lib/controller/controller.js")
|
5
|
+
const Service = require("./lib/service/service.js")
|
3
6
|
const path = require("path");
|
4
7
|
const fs = require("fs");
|
5
8
|
const core = require("./lib/core.js");
|
6
|
-
const cors = require('cors')
|
9
|
+
const cors = require('cors');
|
10
|
+
|
7
11
|
/**
|
8
12
|
* @description 基于express封装的mvc框架,遵循约定优于配置原则
|
9
13
|
*/
|
@@ -17,6 +21,10 @@ class Chan {
|
|
17
21
|
Chan.plugins ={};
|
18
22
|
//工具
|
19
23
|
Chan.helper ={};
|
24
|
+
|
25
|
+
//控制器基类
|
26
|
+
Chan.Controller = Controller;
|
27
|
+
|
20
28
|
//应用实例
|
21
29
|
this.app = express();
|
22
30
|
this.app.config = Chan.config;
|
@@ -29,6 +37,7 @@ class Chan {
|
|
29
37
|
this.loadCore();
|
30
38
|
//加载实例化数据库
|
31
39
|
this.loadKnex();
|
40
|
+
|
32
41
|
//生命周期钩子:开始启动
|
33
42
|
this.beforeStart();
|
34
43
|
//解决跨域
|
@@ -73,9 +82,9 @@ class Chan {
|
|
73
82
|
//数据库操作
|
74
83
|
loadKnex(){
|
75
84
|
// 连接数据库
|
76
|
-
const {host,port,user,password,database,client,charset} = Chan.config.database;
|
85
|
+
const {host,port,user,password,database,client='mysql2',charset} = Chan.config.database;
|
77
86
|
const knex = require("knex")({
|
78
|
-
client:
|
87
|
+
client: client,
|
79
88
|
connection: {
|
80
89
|
host,
|
81
90
|
port,
|
@@ -99,7 +108,10 @@ class Chan {
|
|
99
108
|
},
|
100
109
|
},
|
101
110
|
});
|
111
|
+
//数据库操作实例
|
102
112
|
Chan.knex = knex;
|
113
|
+
//数据库操作基类
|
114
|
+
Chan.Service = Service(knex);
|
103
115
|
}
|
104
116
|
|
105
117
|
//开始启动
|
@@ -184,7 +196,7 @@ class Chan {
|
|
184
196
|
const serviceName = file.replace(".js", "");
|
185
197
|
//模块文件夹-模块文件名-服务-方法
|
186
198
|
Chan[modules][moduleName].service[serviceName] = {};
|
187
|
-
Chan[modules][moduleName].service[serviceName] = Service;
|
199
|
+
Chan[modules][moduleName].service[serviceName] = bindClass(Service);
|
188
200
|
}
|
189
201
|
}
|
190
202
|
}
|
@@ -206,7 +218,7 @@ class Chan {
|
|
206
218
|
const controller = require(path.join(controllersDir, file));
|
207
219
|
const controllerName = file.replace(".js", "");
|
208
220
|
Chan[modules][moduleName].controller[controllerName] = {};
|
209
|
-
Chan[modules][moduleName].controller[controllerName] = controller;
|
221
|
+
Chan[modules][moduleName].controller[controllerName] = bindClass(controller);
|
210
222
|
}
|
211
223
|
}
|
212
224
|
}
|
@@ -0,0 +1,30 @@
|
|
1
|
+
/**
|
2
|
+
* @description
|
3
|
+
* 控制器基类
|
4
|
+
*/
|
5
|
+
class Controller{
|
6
|
+
|
7
|
+
constructor(){
|
8
|
+
|
9
|
+
}
|
10
|
+
|
11
|
+
download(res,file){
|
12
|
+
res.download(file)
|
13
|
+
}
|
14
|
+
|
15
|
+
success(res,data=null){
|
16
|
+
res.json({code:200,msg:'success',data:data})
|
17
|
+
}
|
18
|
+
|
19
|
+
fail(res,msg='操作失败,请稍后再试'){
|
20
|
+
res.json({code:400,msg:msg})
|
21
|
+
}
|
22
|
+
|
23
|
+
error(res,msg){
|
24
|
+
res.json({code:500,msg:msg})
|
25
|
+
}
|
26
|
+
}
|
27
|
+
|
28
|
+
|
29
|
+
|
30
|
+
module.exports = Controller;
|
@@ -0,0 +1,23 @@
|
|
1
|
+
/**
|
2
|
+
* @description 实例化一个类,并将该类的所有方法绑定到一个新的对象上。
|
3
|
+
* @param {Function} className - 需要实例化的类。
|
4
|
+
*@returns {Object} 包含绑定方法的对象。
|
5
|
+
*/
|
6
|
+
function bindClass(className) {
|
7
|
+
let obj = {};
|
8
|
+
const cls = new className();
|
9
|
+
Object.getOwnPropertyNames(cls.constructor.prototype).forEach(
|
10
|
+
(methodName) => {
|
11
|
+
if (
|
12
|
+
methodName !== "constructor" &&
|
13
|
+
typeof cls[methodName] === "function"
|
14
|
+
) {
|
15
|
+
obj[methodName] = cls[methodName].bind(cls);
|
16
|
+
}
|
17
|
+
}
|
18
|
+
);
|
19
|
+
return obj;
|
20
|
+
}
|
21
|
+
|
22
|
+
|
23
|
+
module.exports = bindClass;
|
@@ -0,0 +1,32 @@
|
|
1
|
+
class BaseService {
|
2
|
+
constructor(knex, model='') {
|
3
|
+
this.knex = knex;
|
4
|
+
this.model = model;
|
5
|
+
}
|
6
|
+
|
7
|
+
all() {
|
8
|
+
return this.knex(this.model).select();
|
9
|
+
}
|
10
|
+
|
11
|
+
detail(id) {
|
12
|
+
return this.knex(this.model).where('id', id).select();
|
13
|
+
}
|
14
|
+
|
15
|
+
insert(params) {
|
16
|
+
return this.knex(this.model).insert(params);
|
17
|
+
}
|
18
|
+
|
19
|
+
update(id, params) {
|
20
|
+
return this.knex(this.model).where('id', id).update(params);
|
21
|
+
}
|
22
|
+
|
23
|
+
delete(id) {
|
24
|
+
return this.knex(this.model).where('id', id).del();
|
25
|
+
}
|
26
|
+
}
|
27
|
+
|
28
|
+
const Service = (knex, model='') => {
|
29
|
+
return new BaseService(knex, model);
|
30
|
+
};
|
31
|
+
|
32
|
+
module.exports = Service;
|
package/package.json
CHANGED
@@ -1,217 +0,0 @@
|
|
1
|
-
|
2
|
-
/**
|
3
|
-
* extend controller
|
4
|
-
*/
|
5
|
-
module.exports = {
|
6
|
-
/**
|
7
|
-
* body getter
|
8
|
-
*/
|
9
|
-
get body() {
|
10
|
-
|
11
|
-
},
|
12
|
-
/**
|
13
|
-
* body setter
|
14
|
-
*/
|
15
|
-
set body(value) {
|
16
|
-
|
17
|
-
},
|
18
|
-
/**
|
19
|
-
* get client ip
|
20
|
-
*/
|
21
|
-
get ip() {
|
22
|
-
|
23
|
-
},
|
24
|
-
/**
|
25
|
-
* get client ips
|
26
|
-
*/
|
27
|
-
get ips() {
|
28
|
-
|
29
|
-
},
|
30
|
-
/**
|
31
|
-
* get status code
|
32
|
-
*/
|
33
|
-
get status() {
|
34
|
-
|
35
|
-
},
|
36
|
-
/**
|
37
|
-
* set status code
|
38
|
-
*/
|
39
|
-
set status(status) {
|
40
|
-
|
41
|
-
},
|
42
|
-
/**
|
43
|
-
* get content type
|
44
|
-
*/
|
45
|
-
get type() {
|
46
|
-
|
47
|
-
},
|
48
|
-
/**
|
49
|
-
* set content type
|
50
|
-
*/
|
51
|
-
set type(contentType) {
|
52
|
-
|
53
|
-
},
|
54
|
-
/**
|
55
|
-
* get userAgent header
|
56
|
-
*/
|
57
|
-
get userAgent() {
|
58
|
-
|
59
|
-
},
|
60
|
-
/**
|
61
|
-
* get request method
|
62
|
-
*/
|
63
|
-
get method() {
|
64
|
-
|
65
|
-
},
|
66
|
-
/**
|
67
|
-
* is get method
|
68
|
-
*/
|
69
|
-
get isGet() {
|
70
|
-
|
71
|
-
},
|
72
|
-
/**
|
73
|
-
* is post method
|
74
|
-
*/
|
75
|
-
get isPost() {
|
76
|
-
|
77
|
-
},
|
78
|
-
/**
|
79
|
-
* is command line invoke
|
80
|
-
*/
|
81
|
-
get isCli() {
|
82
|
-
|
83
|
-
},
|
84
|
-
/**
|
85
|
-
* get or set config
|
86
|
-
* @param {String} name
|
87
|
-
* @param {Mix} value
|
88
|
-
* @param {String} m
|
89
|
-
*/
|
90
|
-
config(name, value, m ) {
|
91
|
-
|
92
|
-
},
|
93
|
-
/**
|
94
|
-
* is method
|
95
|
-
* @param {String} method
|
96
|
-
*/
|
97
|
-
isMethod(method) {
|
98
|
-
|
99
|
-
},
|
100
|
-
/**
|
101
|
-
* check if is ajax request
|
102
|
-
* @param {String} method
|
103
|
-
*/
|
104
|
-
isAjax(method) {
|
105
|
-
|
106
|
-
},
|
107
|
-
/**
|
108
|
-
* is jsonp request
|
109
|
-
* @param {String} callback
|
110
|
-
*/
|
111
|
-
isJsonp(callbackField) {
|
112
|
-
|
113
|
-
},
|
114
|
-
/**
|
115
|
-
* send jsonp data
|
116
|
-
*/
|
117
|
-
jsonp(data, callbackField) {
|
118
|
-
|
119
|
-
},
|
120
|
-
/**
|
121
|
-
* send json data
|
122
|
-
*/
|
123
|
-
json(data) {
|
124
|
-
|
125
|
-
},
|
126
|
-
/**
|
127
|
-
* send success data
|
128
|
-
*/
|
129
|
-
success(data, message) {
|
130
|
-
|
131
|
-
},
|
132
|
-
/**
|
133
|
-
* send fail data
|
134
|
-
*/
|
135
|
-
fail(errno, errmsg, data) {
|
136
|
-
|
137
|
-
},
|
138
|
-
/**
|
139
|
-
* set expires header
|
140
|
-
* @param {Number} time
|
141
|
-
*/
|
142
|
-
expires(time) {
|
143
|
-
|
144
|
-
},
|
145
|
-
/**
|
146
|
-
* get query data
|
147
|
-
* @param {String} name
|
148
|
-
* @param {Mixed} value
|
149
|
-
*/
|
150
|
-
get(name, value) {
|
151
|
-
|
152
|
-
},
|
153
|
-
/**
|
154
|
-
* get query data
|
155
|
-
* @param {String} name
|
156
|
-
* @param {Mixed} value
|
157
|
-
*/
|
158
|
-
query(name, value) {
|
159
|
-
|
160
|
-
},
|
161
|
-
/**
|
162
|
-
* get or set post data
|
163
|
-
* @param {String} name
|
164
|
-
* @param {Mixed} value
|
165
|
-
*/
|
166
|
-
post(name, value) {
|
167
|
-
|
168
|
-
},
|
169
|
-
/**
|
170
|
-
* get or set file data
|
171
|
-
* @param {String} name
|
172
|
-
* @param {Mixed} value
|
173
|
-
*/
|
174
|
-
file(name, value) {
|
175
|
-
|
176
|
-
},
|
177
|
-
/**
|
178
|
-
* get or set cookies
|
179
|
-
* @param {String} name
|
180
|
-
* @param {String} value
|
181
|
-
* @param {Object} options
|
182
|
-
*/
|
183
|
-
cookie(name, value, options) {
|
184
|
-
|
185
|
-
},
|
186
|
-
|
187
|
-
/**
|
188
|
-
* get referer header
|
189
|
-
*/
|
190
|
-
referrer(onlyHost) {
|
191
|
-
|
192
|
-
},
|
193
|
-
/**
|
194
|
-
* get referer header
|
195
|
-
*/
|
196
|
-
referer(onlyHost) {
|
197
|
-
|
198
|
-
},
|
199
|
-
/**
|
200
|
-
* Perform a 302 redirect to `url`.
|
201
|
-
* @param {String} url
|
202
|
-
* @param {String} alt
|
203
|
-
*/
|
204
|
-
redirect(url, alt) {
|
205
|
-
|
206
|
-
},
|
207
|
-
|
208
|
-
|
209
|
-
/**
|
210
|
-
* download
|
211
|
-
* @param {String} filepath
|
212
|
-
* @param {String} filename
|
213
|
-
*/
|
214
|
-
download(filepath, filename) {
|
215
|
-
|
216
|
-
}
|
217
|
-
};
|
File without changes
|