说明
- 下面文章是对该系列前面2篇及项目中经验的总结,重新开始写的
- 实现了Mar类,贯穿Router层、Controller层、Service层
- 基本骨架的搭建
初始
- 使用Koa创建一个简单的服务器,一般会使用如下
const koa = require('koa');
const app = new koa();
const Router = require('koa-router');
const router =new Router();
const handleIndex = async ctx => {
ctx.body = 'Hello World';
};
const handleListen = async port => {
console.log(`[Mar]Server is running at http://localhost:${
port}`);
}
router.get('/', handleIndex);
app.use(router.routes());
app.listen(3000, handleListen(3000));
原则
借助Egg的Controller,Service的引用,有了以下灵感:
- 自定义一个类(Mar),在创建实例(app)的时候,会将Controller、Service方法挂载到app上
- 即Mar类是,集中管理各层的初始化及存放通用方法
- Controller层,主要用于联系路由层和Service层
- Service层在操作数据之后,给Controller层提供服务.
设计Mar类
根据上述的原则,我们设计Mar类的初始如下:
const koa = require('koa');
class Mar {
constructor(conf) {
const router = new Router();
const controller = new Controller();
const service =