chanjs 1.0.11 → 1.0.12

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 +45 -42
  3. package/package.json +1 -1
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
  }
@@ -109,16 +115,7 @@ class Chan {
109
115
 
110
116
  // 加载插件
111
117
  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
- }
118
+ this.loadModules('plugins');
122
119
  }
123
120
 
124
121
  /**
@@ -131,30 +128,24 @@ class Chan {
131
128
  /**
132
129
  * @description 模块加载入口(路由&控制器& 服务)
133
130
  */
134
- loadModules() {
135
- const configPath = path.join(config.APP_PATH, "modules");
131
+ loadModules(modules='modules') {
132
+ const configPath = path.join(config.APP_PATH,modules);
136
133
  if (fs.existsSync(configPath)) {
137
134
  const dirs = fs
138
135
  .readdirSync(configPath, { withFileTypes: true })
139
136
  .filter((dirent) => dirent.isDirectory())
140
137
  .map((dirent) => dirent.name);
141
-
142
- this.modulesDir = dirs;
138
+ Chan[modules]={};
143
139
  for(let i=0,item;i<dirs.length;i++){
144
140
  item = dirs[i];
145
- Chan.modules[item] = {
141
+ Chan[modules][item] = {
146
142
  controller: {},
147
143
  service: {},
148
144
  };
149
- this.loadModule(item);
145
+ this.loadModule(modules,item);
150
146
  }
151
147
 
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
- }
148
+
158
149
  //执行路由
159
150
  // this.app.use(this.router);
160
151
  }
@@ -165,11 +156,10 @@ class Chan {
165
156
  * @description 加载模块,包括 controller service router
166
157
  * @param {String} moduleName 模块名称
167
158
  */
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);
159
+ loadModule(modules,moduleName) {
160
+ this.loadServices(modules,moduleName);
161
+ this.loadControllers(modules,moduleName);
162
+ this.loadRoutes(modules,moduleName);
173
163
  }
174
164
 
175
165
 
@@ -178,8 +168,9 @@ class Chan {
178
168
  * @param {*} moduleDir 模块路径
179
169
  * @param {*} moduleName 模块名称
180
170
  */
181
- loadServices(moduleDir,moduleName) {
182
- const servicesDir = path.join(moduleDir, "service");
171
+ loadServices(modules,moduleName) {
172
+ const servicesDir = path.join(config.APP_PATH, modules, moduleName,"service");
173
+
183
174
  if (fs.existsSync(servicesDir)) {
184
175
  let services = fs
185
176
  .readdirSync(servicesDir)
@@ -188,8 +179,9 @@ class Chan {
188
179
  file= services[i]
189
180
  const Service = require(path.join(servicesDir, file));
190
181
  const serviceName = file.replace(".js", "");
191
- Chan.modules[moduleName].service[serviceName] = {};
192
- Chan.modules[moduleName].service[serviceName] = Service;
182
+ //模块文件夹-模块文件名-服务-方法
183
+ Chan[modules][moduleName].service[serviceName] = {};
184
+ Chan[modules][moduleName].service[serviceName] = Service;
193
185
  }
194
186
  }
195
187
  }
@@ -200,8 +192,8 @@ class Chan {
200
192
  * @param {*} moduleDir 模块路径
201
193
  * @param {*} moduleName 模块名称
202
194
  */
203
- loadControllers(moduleDir,moduleName) {
204
- const controllersDir = path.join(moduleDir, "controller");
195
+ loadControllers(modules,moduleName) {
196
+ const controllersDir = path.join(config.APP_PATH, modules, moduleName,"controller");
205
197
  if (fs.existsSync(controllersDir)) {
206
198
  let controllers = fs
207
199
  .readdirSync(controllersDir)
@@ -210,8 +202,8 @@ class Chan {
210
202
  file= controllers[i]
211
203
  const controller = require(path.join(controllersDir, file));
212
204
  const controllerName = file.replace(".js", "");
213
- Chan.modules[moduleName].controller[controllerName] = {};
214
- Chan.modules[moduleName].controller[controllerName] = controller;
205
+ Chan[modules][moduleName].controller[controllerName] = {};
206
+ Chan[modules][moduleName].controller[controllerName] = controller;
215
207
  }
216
208
  }
217
209
  }
@@ -221,19 +213,30 @@ class Chan {
221
213
  * @param {*} moduleDir 模块路径
222
214
  * @param {*} moduleName 模块名称
223
215
  */
224
- loadRoutes(moduleDir,moduleName) {
225
- const routersDir = path.join(moduleDir, "router.js");
216
+ loadRoutes(modules,moduleName) {
217
+ const routersDir = path.join(config.APP_PATH, modules, moduleName,"router.js");
226
218
  if (fs.existsSync(routersDir)) {
227
219
  const routes = require(routersDir);
228
- routes({router:this.router,modules:Chan.modules,app:this.app});
220
+ routes({router:this.router,modules:Chan[modules],app:this.app});
229
221
  }
230
222
  }
231
223
 
232
-
233
-
234
- loadPlusins() {
235
- // 加载插件
224
+ //通用路由,加载错误处理和500路由和爬虫处理
225
+ loadCommonRouter(){
226
+ try {
227
+ const baseRouterPath = path.join(config.APP_PATH, "router.js");
228
+ if (fs.existsSync(baseRouterPath)) {
229
+ const _router = require(baseRouterPath);
230
+ console.log('_router-->',_router);
231
+ _router(this.app, this.router);
232
+ }
233
+ } catch (error) {
234
+ console.log(error);
235
+ }
236
+
236
237
  }
238
+
239
+
237
240
  run() {
238
241
  const port = this.app.config.port || '81';
239
242
  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.12",
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",