UNPKG

2.35 kBJavaScriptView Raw
1// var AppDefiner = require('./resourcesDefiner/appDefiner') /*放弃定义一个app,define就是一个定义*/
2var ModuleDefiner = require('./resourcesDefiner/moduleDefiner');
3var ControllerDefiner = require('./resourcesDefiner/controllerDefiner');
4var modelDefiner = require('./resourcesDefiner/modelDefiner');
5var Server = require('./server');
6
7
8module.exports = Definer
9
10
11
12function Definer(app){
13 this.app = app
14 this.modules = app.modules
15}
16
17
18/*
19**模块definer 工厂函数
20*/
21Definer.prototype.module =function(options){
22 var module = new ModuleDefiner(options);
23 module.app = this.app; /*把当前app加入模块*/
24 this.modules[module.name] = module;
25 return module;
26// module.loadControllers();
27}
28
29/*
30**控制器difner 工厂函数
31*/
32Definer.prototype.controller = function(options){
33 var controller = new ControllerDefiner(options);
34
35 /*定义一个控制器*/
36 if(!controller.moduleName){ /*如果没有指定模块名称,就加入默认的module*/
37 controller.moduleName = this.app.defaultModule;
38 }
39
40 if(!this.modules[controller.moduleName]){
41 console.error(controller.moduleName + ' module does`t exist');
42 throw new Error();
43 }
44
45 var currentModule = this.modules[controller.moduleName];
46
47 if(currentModule.controllers[controller.name]){
48
49 console.error(controller.moduleName + '模块的 ' + controller.name + '控制器 已经被定义,请检查是否重复');
50 throw new Error();
51 }
52
53 currentModule.controllers[controller.name] = controller;
54 controller.module = currentModule; /*把模块实例加入 控制器中*/
55 controller.app = this.app;/*把当前app信息加入控制器管理器*/
56 controller.init();
57 return controller.actionDefiner;/*返回当前控制器的action 定义器*/
58
59}
60
61/*
62**server definer 工厂函数
63*/
64Definer.prototype.server = function(options){
65 var server = new Server(options,this.app);
66 return server
67}
68
69
70Definer.prototype.model = function(modelName,dbName,modelInfo,modelOther){
71 if(arguments.length == 3){/*如果没有指定数据库名称*/
72 modelOther = modelInfo;
73 modelInfo = dbName
74 dbName = "default"
75 }
76 var db = this.app.dbs[dbName]; /*获取数据库对象*/
77 var model = db.define(modelName,modelInfo,modelOther); /*定义模型*/
78 model.__proto__.__proto__= modelDefiner /*继承公共方法*/
79 // model.sync() /*同步模型到数据库*/
80 return model
81
82}
83
84
85
86
87
88
89
90
91
92
93