UNPKG

astroboy

Version:

Astroboy(阿童木)is a Nodejs SFB(Separation of Front and Back ends) framework, built on koa2.

72 lines 2.59 kB
"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