1 | import Router from './Router';
|
2 | import Response from './Response';
|
3 | import Controller from './Controller';
|
4 |
|
5 | import http from 'http';
|
6 | import logger from './logger';
|
7 |
|
8 | export {
|
9 | Router,
|
10 | Response,
|
11 | Controller as BaseController,
|
12 | };
|
13 |
|
14 | class App {
|
15 |
|
16 | port = 6060;
|
17 | prefix = '';
|
18 | base;
|
19 | portMessage = true;
|
20 |
|
21 | run() {
|
22 | let routes, controllers;
|
23 | let base = this.base = `${process.cwd()}/${this.prefix}`;
|
24 |
|
25 | controllers = `${base}/controllers`;
|
26 |
|
27 | try {
|
28 | routes = require(`${base}/routes`).default;
|
29 | } catch(e) {
|
30 | try {
|
31 | routes = require(`${base}/routes`);
|
32 | } catch(e) {
|
33 | throw new Error(`cannot find ${base}/routes, or routes contains error`);
|
34 | }
|
35 | }
|
36 |
|
37 |
|
38 | try {
|
39 | this.port = require(`${base}/config`).port;
|
40 | } catch(e) {}
|
41 |
|
42 | Router.setControllersPath(controllers);
|
43 |
|
44 | if (this.portMessage) {
|
45 | this.portMessage = false;
|
46 |
|
47 | console.info(`=== Server Started ===`);
|
48 | console.info('');
|
49 | console.info(` port: ${this.port}`);
|
50 | console.info('');
|
51 | console.info(`======================`);
|
52 | console.info('');
|
53 | }
|
54 |
|
55 | return http.createServer((req, res) => {
|
56 | logger(req, res);
|
57 |
|
58 | Router.route(req, res);
|
59 | }).listen(this.port);
|
60 | }
|
61 |
|
62 | set(key, val) {
|
63 | this[key] = val;
|
64 | }
|
65 |
|
66 | get(key) {
|
67 | if (this[key]) return this[key];
|
68 | else return undefined;
|
69 | }
|
70 |
|
71 | }
|
72 |
|
73 | export default new App();
|