astroboy
Version:
Astroboy(阿童木)is a Nodejs SFB(Separation of Front and Back ends) framework, built on koa2.
72 lines • 2.59 kB
JavaScript
"use strict";
const chalk_1 = require("chalk");
const path = require("path");
const Koa = require("koa");
const events_1 = require("events");
const CoreLoader_1 = require("./CoreLoader");
const BaseClass_1 = require("./base/BaseClass");
/**
* ## Astroboy Framework
*
* @author Big Mogician
* @class Astroboy
* @extends {EventEmitter}
* @template DEFINE Framework Definition, defalut is `IAstroboyFrameworkDefine`.
*/
class Astroboy extends events_1.EventEmitter {
constructor(options = {}) {
super();
options.NODE_ENV =
process.env.APPLICATION_STANDARD_ENV || process.env.NODE_ENV || options.NODE_ENV || 'development';
options.NODE_PORT = process.env.NODE_PORT || options.NODE_PORT || '8201';
options.ROOT_PATH = options.ROOT_PATH || process.cwd();
this.options = options;
this.init();
this.start();
}
get [Symbol.for('BASE_DIR')]() {
return path.join(__dirname, '..');
}
init() {
this.app = new Koa();
this.app.env = this.options.NODE_ENV;
this.app.NODE_ENV = this.options.NODE_ENV;
this.app.ROOT_PATH = this.options.ROOT_PATH;
this.app.ROOT_NAME = path.basename(this.options.ROOT_PATH);
this.loader = new CoreLoader_1.CoreLoader({
astroboy: this,
app: this.app,
});
}
start() {
this.app.listen(this.options.NODE_PORT, () => {
console.log(chalk_1.default.green('应用启动成功'));
console.log(chalk_1.default.green(`访问地址:${chalk_1.default.blue('http://127.0.0.1:' + this.options.NODE_PORT)}`));
this.emit('start', this.app);
});
this.app.on('error', (err, ctx) => {
this.emit('error', err, ctx);
});
// 添加默认的 error 事件监听器
setTimeout(() => {
if (this.listenerCount('error') === 0) {
this.on('error', (err, ctx) => {
console.log('[default error callback]');
console.log(err);
});
}
}, 3000);
}
}
(function (Astroboy) {
/** ### Astroboy Base Class */
Astroboy.BaseClass = BaseClass_1.BaseClass;
/** ### Astroboy Controller Base */
Astroboy.Controller = BaseClass_1.BaseClass;
/** ### Astroboy Service Base */
Astroboy.Service = BaseClass_1.BaseClass;
/** ### Astroboy <Helper&Utils> Base */
Astroboy.Helper = BaseClass_1.BaseClass;
})(Astroboy || (Astroboy = {}));
module.exports = Astroboy;
//# sourceMappingURL=Astroboy.js.map