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.
Files changed (3) hide show
  1. package/README.md +15 -1
  2. package/core/chan.js +40 -44
  3. 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
- const configPath = path.join(config.APP_PATH, "plugin");
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, "modules");
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.modules[item] = {
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
- const moduleDir = path.join(config.APP_PATH, "modules", moduleName);
170
- this.loadServices(moduleDir,moduleName);
171
- this.loadControllers(moduleDir,moduleName);
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(moduleDir,moduleName) {
182
- const servicesDir = path.join(moduleDir, "service");
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
- Chan.modules[moduleName].service[serviceName] = {};
192
- Chan.modules[moduleName].service[serviceName] = Service;
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(moduleDir,moduleName) {
204
- const controllersDir = path.join(moduleDir, "controller");
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.modules[moduleName].controller[controllerName] = {};
214
- Chan.modules[moduleName].controller[controllerName] = controller;
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(moduleDir,moduleName) {
225
- const routersDir = path.join(moduleDir, "router.js");
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.modules,app:this.app});
216
+ routes({router:this.router,modules:Chan[modules],app:this.app});
229
217
  }
230
218
  }
231
219
 
232
-
233
-
234
- loadPlusins() {
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.11",
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.18.2",
19
+ "express": "^4.19.2",
20
20
  "express-art-template": "^1.0.1",
21
- "knex": "^3.0.1",
21
+ "knex": "^3.1.0",
22
22
  "morgan": "^1.10.0",
23
- "mysql2": "^3.6.2"
23
+ "mysql2": "^3.11.0"
24
24
  }
25
25
  }