chanjs 1.0.11 → 1.0.13
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 +15 -1
- package/core/chan.js +40 -44
- package/package.json +4 -4
package/README.md
CHANGED
@@ -34,6 +34,16 @@ Chan.js 基于express 纯js研发的轻量级mvc框架。基于函数式编程
|
|
34
34
|
|- extend 扩展
|
35
35
|
|- middleware 中间件
|
36
36
|
|- plugin 插件
|
37
|
+
|- plus-module1 插件1
|
38
|
+
|- controller 控制器
|
39
|
+
|- service 服务模型
|
40
|
+
|- view 视图模板
|
41
|
+
|- router.js 路由
|
42
|
+
|- module2 插件2
|
43
|
+
|- controller 控制器
|
44
|
+
|- service 服务模型
|
45
|
+
|- view 视图模板
|
46
|
+
|- router.js路由
|
37
47
|
|- public 静态文件
|
38
48
|
|- index.js
|
39
49
|
```
|
@@ -48,6 +58,9 @@ Chan.js 基于express 纯js研发的轻量级mvc框架。基于函数式编程
|
|
48
58
|
- 加载router
|
49
59
|
- 加载extend
|
50
60
|
- 加载plugin
|
61
|
+
- 加载service
|
62
|
+
- 加载controller
|
63
|
+
- 加载router
|
51
64
|
- beforeStart() 挂在从数据库获取的配置合并到配置文件中
|
52
65
|
- run() 启动服务
|
53
66
|
|
@@ -61,7 +74,8 @@ Chan.js 基于express 纯js研发的轻量级mvc框架。基于函数式编程
|
|
61
74
|
|
62
75
|
* 配置文件
|
63
76
|
* 多模块mvc
|
64
|
-
*
|
77
|
+
* 多插件mvc
|
78
|
+
* mysql数据库支持
|
65
79
|
* 路由控制
|
66
80
|
* art-template模板
|
67
81
|
* 静态资源
|
package/core/chan.js
CHANGED
@@ -13,6 +13,8 @@ class Chan {
|
|
13
13
|
Chan.config = {...config,...options};
|
14
14
|
//模块
|
15
15
|
Chan.modules ={};
|
16
|
+
//插件
|
17
|
+
Chan.plugins ={};
|
16
18
|
//工具
|
17
19
|
Chan.helper ={};
|
18
20
|
//应用实例
|
@@ -31,6 +33,10 @@ class Chan {
|
|
31
33
|
this.beforeStart();
|
32
34
|
//加载模块
|
33
35
|
this.loadModules();
|
36
|
+
//加载插件
|
37
|
+
this.loadPlugins();
|
38
|
+
//加载通用路由
|
39
|
+
this.loadCommonRouter();
|
34
40
|
//生命周期:初始化完成
|
35
41
|
this.start()
|
36
42
|
}
|
@@ -94,7 +100,6 @@ class Chan {
|
|
94
100
|
Chan.knex = knex;
|
95
101
|
}
|
96
102
|
|
97
|
-
|
98
103
|
//开始启动
|
99
104
|
beforeStart(cb) {
|
100
105
|
// 初始化一些配置
|
@@ -109,16 +114,7 @@ class Chan {
|
|
109
114
|
|
110
115
|
// 加载插件
|
111
116
|
loadPlugins() {
|
112
|
-
|
113
|
-
if (fs.existsSync(configPath)) {
|
114
|
-
const dirs = fs
|
115
|
-
.readdirSync(configPath, { withFileTypes: true })
|
116
|
-
.filter((dirent) => dirent.isDirectory())
|
117
|
-
.map((dirent) => dirent.name);
|
118
|
-
this.plugins = dirs;
|
119
|
-
} else {
|
120
|
-
this.plugins = [];
|
121
|
-
}
|
117
|
+
this.loadModules('plugins');
|
122
118
|
}
|
123
119
|
|
124
120
|
/**
|
@@ -131,30 +127,22 @@ class Chan {
|
|
131
127
|
/**
|
132
128
|
* @description 模块加载入口(路由&控制器& 服务)
|
133
129
|
*/
|
134
|
-
loadModules() {
|
135
|
-
const configPath = path.join(config.APP_PATH,
|
130
|
+
loadModules(modules='modules') {
|
131
|
+
const configPath = path.join(config.APP_PATH,modules);
|
136
132
|
if (fs.existsSync(configPath)) {
|
137
133
|
const dirs = fs
|
138
134
|
.readdirSync(configPath, { withFileTypes: true })
|
139
135
|
.filter((dirent) => dirent.isDirectory())
|
140
136
|
.map((dirent) => dirent.name);
|
141
|
-
|
142
|
-
this.modulesDir = dirs;
|
137
|
+
Chan[modules]={};
|
143
138
|
for(let i=0,item;i<dirs.length;i++){
|
144
139
|
item = dirs[i];
|
145
|
-
Chan
|
140
|
+
Chan[modules][item] = {
|
146
141
|
controller: {},
|
147
142
|
service: {},
|
148
143
|
};
|
149
|
-
this.loadModule(item);
|
144
|
+
this.loadModule(modules,item);
|
150
145
|
}
|
151
|
-
|
152
|
-
//通用路由,加载错误处理和500路由和爬虫处理
|
153
|
-
const baseRouterPath = path.join(config.APP_PATH, "router.js");
|
154
|
-
if (fs.existsSync(baseRouterPath)) {
|
155
|
-
const _router = require(baseRouterPath);
|
156
|
-
_router(this.app, this.router);
|
157
|
-
}
|
158
146
|
//执行路由
|
159
147
|
// this.app.use(this.router);
|
160
148
|
}
|
@@ -165,11 +153,10 @@ class Chan {
|
|
165
153
|
* @description 加载模块,包括 controller service router
|
166
154
|
* @param {String} moduleName 模块名称
|
167
155
|
*/
|
168
|
-
loadModule(moduleName) {
|
169
|
-
|
170
|
-
this.
|
171
|
-
this.
|
172
|
-
this.loadRoutes(moduleDir,moduleName);
|
156
|
+
loadModule(modules,moduleName) {
|
157
|
+
this.loadServices(modules,moduleName);
|
158
|
+
this.loadControllers(modules,moduleName);
|
159
|
+
this.loadRoutes(modules,moduleName);
|
173
160
|
}
|
174
161
|
|
175
162
|
|
@@ -178,8 +165,8 @@ class Chan {
|
|
178
165
|
* @param {*} moduleDir 模块路径
|
179
166
|
* @param {*} moduleName 模块名称
|
180
167
|
*/
|
181
|
-
loadServices(
|
182
|
-
const servicesDir = path.join(
|
168
|
+
loadServices(modules,moduleName) {
|
169
|
+
const servicesDir = path.join(config.APP_PATH, modules, moduleName,"service");
|
183
170
|
if (fs.existsSync(servicesDir)) {
|
184
171
|
let services = fs
|
185
172
|
.readdirSync(servicesDir)
|
@@ -188,8 +175,9 @@ class Chan {
|
|
188
175
|
file= services[i]
|
189
176
|
const Service = require(path.join(servicesDir, file));
|
190
177
|
const serviceName = file.replace(".js", "");
|
191
|
-
|
192
|
-
Chan
|
178
|
+
//模块文件夹-模块文件名-服务-方法
|
179
|
+
Chan[modules][moduleName].service[serviceName] = {};
|
180
|
+
Chan[modules][moduleName].service[serviceName] = Service;
|
193
181
|
}
|
194
182
|
}
|
195
183
|
}
|
@@ -200,8 +188,8 @@ class Chan {
|
|
200
188
|
* @param {*} moduleDir 模块路径
|
201
189
|
* @param {*} moduleName 模块名称
|
202
190
|
*/
|
203
|
-
loadControllers(
|
204
|
-
const controllersDir = path.join(
|
191
|
+
loadControllers(modules,moduleName) {
|
192
|
+
const controllersDir = path.join(config.APP_PATH, modules, moduleName,"controller");
|
205
193
|
if (fs.existsSync(controllersDir)) {
|
206
194
|
let controllers = fs
|
207
195
|
.readdirSync(controllersDir)
|
@@ -210,8 +198,8 @@ class Chan {
|
|
210
198
|
file= controllers[i]
|
211
199
|
const controller = require(path.join(controllersDir, file));
|
212
200
|
const controllerName = file.replace(".js", "");
|
213
|
-
Chan
|
214
|
-
Chan
|
201
|
+
Chan[modules][moduleName].controller[controllerName] = {};
|
202
|
+
Chan[modules][moduleName].controller[controllerName] = controller;
|
215
203
|
}
|
216
204
|
}
|
217
205
|
}
|
@@ -221,19 +209,27 @@ class Chan {
|
|
221
209
|
* @param {*} moduleDir 模块路径
|
222
210
|
* @param {*} moduleName 模块名称
|
223
211
|
*/
|
224
|
-
loadRoutes(
|
225
|
-
const routersDir = path.join(
|
212
|
+
loadRoutes(modules,moduleName) {
|
213
|
+
const routersDir = path.join(config.APP_PATH, modules, moduleName,"router.js");
|
226
214
|
if (fs.existsSync(routersDir)) {
|
227
215
|
const routes = require(routersDir);
|
228
|
-
routes({router:this.router,modules:Chan
|
216
|
+
routes({router:this.router,modules:Chan[modules],app:this.app});
|
229
217
|
}
|
230
218
|
}
|
231
219
|
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
220
|
+
//通用路由,加载错误处理和500路由和爬虫处理
|
221
|
+
loadCommonRouter(){
|
222
|
+
try {
|
223
|
+
const baseRouterPath = path.join(config.APP_PATH, "router.js");
|
224
|
+
if (fs.existsSync(baseRouterPath)) {
|
225
|
+
const _router = require(baseRouterPath);
|
226
|
+
_router(this.app, this.router);
|
227
|
+
}
|
228
|
+
} catch (error) {
|
229
|
+
console.log(error);
|
230
|
+
}
|
236
231
|
}
|
232
|
+
|
237
233
|
run() {
|
238
234
|
const port = this.app.config.port || '81';
|
239
235
|
this.app.listen(port, () => {
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "chanjs",
|
3
|
-
"version": "1.0.
|
3
|
+
"version": "1.0.13",
|
4
4
|
"description": "Chanjs develops a lightweight MVC framework based on express pure JavaScript",
|
5
5
|
"main": "core/chan.js",
|
6
6
|
"module":"core/chan.js",
|
@@ -16,10 +16,10 @@
|
|
16
16
|
"art-template": "^4.13.2",
|
17
17
|
"body-parser": "^1.20.2",
|
18
18
|
"cookie-parser": "^1.4.6",
|
19
|
-
"express": "^4.
|
19
|
+
"express": "^4.19.2",
|
20
20
|
"express-art-template": "^1.0.1",
|
21
|
-
"knex": "^3.0
|
21
|
+
"knex": "^3.1.0",
|
22
22
|
"morgan": "^1.10.0",
|
23
|
-
"mysql2": "^3.
|
23
|
+
"mysql2": "^3.11.0"
|
24
24
|
}
|
25
25
|
}
|